DTP Engine の最新リリースは、Parasoft の革新的アプローチを基礎として、ソフトウェア品質プロセスを継続的に改善します。

このリリースの内容:

継続的デリバリー環境での変化を捉える

継続的デリバリー プラットフォームを導入する企業が増えるにつれて、一定の期間に集積されたデータに基づく従来のレポートの仕組みは、もはや妥当ではなくなりました。リリース期間が短くなったことにより、インクリメンタルな変更が都度ビルドに持ち込むリスクを把握することが重要になっています。カバレッジやテストのレグレッションの変化をただちに可視化し、再実行する必要があるテストをすばやく特定できなければなりません。ここリリースでのアップデートは、このような変化を把握し、リスクを軽減してデリバリーを加速するために解決する必要がある問題を識別するのに役立ちます。

ビルドごとの静的解析違反のレポート

このリリースでは、ビルドベースのデータのレポートという概念が拡張されました。DTP Engine は、ビルドごとに静的解析の新規違反、修正済み違反、既存の違反をレポートできるようになり、企業がSDLCのより早い段階でより効率的に潜在的な問題に対処できるほか、違反と変更を関連付け、欠陥が入り込んだ可能性がある特定のコード領域をピンポイントに指摘できるようになりました。

 

自動車ソフトウェア品質サポートの拡張

自動車ソフトウェアの品質とセーフティクリティカルな側面を重視する姿勢が業界の最先端となっているのにしたがって、Parasoft はC および C++ アプリケーション向け機能の拡張を続けています。

静的解析の MISRA C:2012 完全対応

DTP Engine for C/C++ に付属する静的解析ルールがアップデートされ、2016 年 5 月に発行された改正 1 も含めた MISRA C:2012 既約を完全にカバーするようになりました。詳細については[link to coverage doc] を参照してください。

マーケットプレースでも、新しい MISRA 認証キットが公開されました。これには、集中管理されたレポート用の DTP Engine および DTP サーバーのコンフィギュレーションが含まれます。このキットは、レグレッション テストとサポート ドキュメントを含み、ISO 26262 への準拠のために静的解析を適用する場合など、MISRA C:2012 の使用を検証するのに役立ちます。

 

その他のアップデートおよび拡張

  • C/C++test: MISRA C:2012 用新規ルール (「追加または更新されたコード解析ルール」を参照)
  • C/C++test: Modern C++ 規格サポートの拡張 (C++11, C++14, C++17)。専用の静的解析ルールおよびテスト コンフィギュレーションを含む。
  • C/C++test: CppUTest 単体テスト フレームワークの実行およびカバレッジ解析のサポート
 

  • DTP テスト コンフィギュレーション UI でのルールのパラメーター設定方法の改善
  • HTML レポートおよび DTP でのエラーおよびセットアップの問題の表示方法の改善

追加または更新されたコード解析ルール 

ルール ID

説明

CODSTA-MCPP-01

ユーザー定義の変換を行うキャスト演算子は explicit にするべきである

CODSTA-MCPP-02

typedef ではなくエイリアス宣言を使用する

CODSTA-MCPP-03

スコープなしの列挙型ではなく、スコープ付きの列挙型を使用する

CODSTA-MCPP-04

NULL または 0 (ゼロ) ではなく nullptr を使用する

CODSTA-MCPP-05

オーバーライド関数に override を指定して宣言する

CODSTA-MCPP-06_a

クラスのコピーを防ぐため、コピー コンストラクターおよびコピー代入演算子に delete を指定して宣言する

CODSTA-MCPP-06_b

クラスのコピーを防ぐため、private メソッドを持つ基底クラスを使用するのではなく、コピー コンストラクターおよびコピー代入演算子に delete を指定して宣言する

CODSTA-174_a_c90

プログラムは規格によって定められた翻訳限界を超えてはならない (c90)

CODSTA-174_a_c99

プログラムは規格によって定められた翻訳限界を超えてはならない (c99)

CODSTA-174_b_c90

プログラムは規格によって定められた翻訳限界を超えてはならない (c90)

CODSTA-174_b_c99

プログラムは規格によって定められた翻訳限界を超えてはならない (c99)

CODSTA-175_a

関数は未使用の型宣言を持つべきではない

CODSTA-175_b

ソース ファイルは未使用の型宣言を持つべきではない

CODSTA-176_a

関数は未使用のローカル タグ宣言を持つべきではない

CODSTA-176_b

ソース ファイルは未使用のタグ宣言を持つべきではない

CODSTA-177

ソース ファイルは未使用のマクロ宣言を持つべきではない

CODSTA-178

外部識別子は区別できなければならない

CODSTA-179_a_c90

ファイル スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c90)

CODSTA-179_a_c99

ファイル スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c99)

CODSTA-179_b_c90

同じブロック スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c90)

CODSTA-179_b_c99

同じブロック スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c99)

CODSTA-180

外部リンケージを持つオブジェクトや関数はユニークでなければならない

CODSTA-181

+、-、+= および -= 演算子をポインター型の式に適用するべきではない

CODSTA-182

sizeof 演算子のオペランドは「配列型」として宣言された関数のパラメーターであってはならない

CODSTA-183

標準ライブラリ関数 memcmp、memmove および memcmp へのポインター引数は、互換性のある型の修飾付きおよび修飾なし版へのポインターでなければならない

CODSTA-184

標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、実質的な signed 型、実質的な unsigned 型、実質的なブール型、または実質的な列挙型を指していなければならない

CODSTA-185_a

標準ライブラリ関数 localeconv、getenv、setlocale または strerror から返されたポインターは、const 修飾された型へのポインターとしてだけ使用する

CODSTA-185_b

lconv 構造体のメンバーによって指し示される文字列を変更してはならない

CODSTA-186

指定された初期化子が配列オブジェクトの初期化に使用されている場合、配列のサイズを明示的に指定する必要がある

BD-API-BADPARAM

ライブラリ関数に誤った値を渡してはならない

BD-API-CTYPE

ctype.h ライブラリ関数に誤った値を渡してはならない

BD-API-STRSIZE

string.h の関数に渡される size_t 引数には適切な値がなければならない

BD-API-VALPARAM

ライブラリ関数に渡される値を検証する

BD-PB-EOFCOMP

マクロの EOF と標準ライブラリ関数から返された未変更の戻り値を比較するべきである

BD-PB-ERRNO

errno 値を適切に使用する

BD-PB-INVRET

特定の標準ライブライ関数から返されたポインターは、そのあとの同じ関数または関連する関数の呼び出しで使用してはならない

BD-PB-MCCSTR

標準ライブラリ関数 memcmp を null 終端文字の比較に使用してはならない

BD-PB-NORETURN

noreturn 属性を持つ関数からは値を返さない

BD-PB-WRRDSTR

1 つのファイルを別のストリームで同時に読み取りアクセス用と書き込みアクセス用に開いてはならない

BD-SECURITY-TDCONSOLE

汚染されたデータを出力コンソールに出力してはならない

FORMAT-25_b

return 文では、() を使わなければならない

MISRA2004-9_2_b

配列を部分的に初期化してはならない

MISRA2004-9_2_c

ゼロ以外で構造体を初期化する場合、各要素に対して明示的な初期化子が必要である

MISRA2012-DIR-4_5

同じ名前空間にあり可視性が重なる識別子は見た目で明確に区別できなければならない

MISRA2012-DIR-4_7_ab

非 void 関数の戻り値を必ずチェックする

MISRA2012-DIR-4_7_bb

常に非 void 関数の戻り値をチェックする

MISRA2012-DIR-4_11b 

ライブラリ関数に渡される値を検証する

MISRA2012-DIR-4_13_ab 

標準ライブラリ関数を使用して動的に取得したすべてのリソースは明示的に解放する必要がある

MISRA2012-DIR-4_13_bb 

解放されたリソースを使用してはならない

MISRA2012-DIR-4_13_cb 

無効なポインタを使用してリソースを解放してはならない

MISRA2012-DIR-4_13_db 

解放されていないロックを放棄してはならない

MISRA2012-DIR-4_13_eb 

ダブル ロックを避ける

MISRA2012-DIR-4_14_ab 

汚染されたデータを配列添え字として使用しない

MISRA2012-DIR-4_14_bb 

汚染されたデータによる整数オーバーフロー/アンダーフローを防ぐ

MISRA2012-DIR-4_14_cb 

汚染されたデータによるバッファー読み込み時のオーバーフローを避ける

MISRA2012-DIR-4_14_db 

汚染されたデータによるバッファー書き込み時のオーバーフローを避ける

MISRA2012-DIR-4_14_eb 

コマンド インジェクションから防御する

MISRA2012-DIR-4_14_fb 

ファイル名インジェクションから防御する

MISRA2012-DIR-4_14_gb 

SQL インジェクションから防御する

MISRA2012-DIR-4_14_hb 

汚染されたデータによるバッファー読み込み時のオーバーフローを避ける

MISRA2012-DIR-4_14_ib 

不正な書式制限の定義によるバッファー オーバーフローを避ける

MISRA2012-DIR-4_14_jb 

環境に対するインジェクションから防御する

MISRA2012-DIR-4_14_kb 

汚染されたデータを出力コンソールに出力してはならない

MISRA2012-RULE-1_1_a_c90

プログラムは規格によって定められた翻訳限界を超えてはならない (c90)

MISRA2012-RULE-1_1_a_c99

プログラムは規格によって定められた翻訳限界を超えてはならない (c99)

MISRA2012-RULE-1_1_b_c90

プログラムは規格によって定められた翻訳限界を超えてはならない (c90)

MISRA2012-RULE-1_1_b_c99

プログラムは規格によって定められた翻訳限界を超えてはならない (c99)

MISRA2012-RULE-1_3_ab 

ゼロによる除算を避ける

MISRA2012-RULE-1_3_bb 

初期化の前に使用しない

MISRA2012-RULE-1_3_cb 

解放されたリソースを使用してはならない

MISRA2012-RULE-1_3_d

バッファー読み込み時のオーバーフローを避ける

MISRA2012-RULE-1_3_eb 

バッファー書き込み時のオーバーフローを避ける

MISRA2012-RULE-1_3_f

式の値は、規格が認めるどのような順序で評価されようとも、同じでなければならない

MISRA2012-RULE-1_3_g

関数の引数の評価順序に依存するコードを書いてはならない

MISRA2012-RULE-1_3_h

関数呼び出しおよび関数引数の評価順序に依存するコードを記述してはならない

MISRA2012-RULE-1_3_i

関数呼び出しを含む式の評価順序に依存するコードを書いてはならない

MISRA2012-RULE-1_3_j

オブジェクトは、シーケンス ポイントの間で、格納された値が式の評価によって 2 回以上変更されてはならない

MISRA2012-RULE-1_3_k

1 つの式で複数の volatile を使用してはならない

MISRA2012-RULE-1_3_l

関数呼び出しの評価順序に依存するコードを書いてはならない

MISRA2012-RULE-1_3_m

ローカル オブジェクトへの参照は、絶対に返してはいけない

MISRA2012-RULE-1_3_n

自動記憶域にあるオブジェクトのアドレスを、そのオブジェクトの存在が終了した後にまで持続期間を持つオブジェクトに代入してはならない

MISRA2012-RULE-1_3_o

右シフト演算の左辺のオペランドは負数であってはならない

MISRA2012-RULE-2_3_a

関数は未使用の型宣言を持つべきではない

MISRA2012-RULE-2_3_b

ソース ファイルは未使用の型宣言を持つべきではない

MISRA2012-RULE-2_4_a

関数は未使用のローカル タグ宣言を持つべきではない

MISRA2012-RULE-2_4_b

ソース ファイルは未使用のタグ宣言を持つべきではない

MISRA2012-RULE-2_5

ソース ファイルは未使用のマクロ宣言を持つべきではない

MISRA2012-RULE-5_1

外部識別子は区別できなければならない

MISRA2012-RULE-5_2_a_c90

ファイル スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c90)

MISRA2012-RULE-5_2_a_c99

ファイル スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c99)

MISRA2012-RULE-5_2_b_c90

同じブロック スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c90)

MISRA2012-RULE-5_2_b_c99

同じブロック スコープおよび同じ名前空間で宣言された識別子は区別できなければならない (c99)

MISRA2012-RULE-5_8

外部リンケージを持つオブジェクトや関数はユニークでなければならない

MISRA2012-RULE-8_6

外部リンケージを持つ識別子は、外部定義を 1 つだけ持たなければならない

MISRA2012-RULE-8_7

関数およびオブジェクトが 1 つの翻訳単位でだけ参照される場合、外部リンケージが定義されてはならない

MISRA2012-RULE-9_4

オブジェクトの要素を複数回初期化してはならない

MISRA2012-RULE-9_5

指定された初期化子が配列オブジェクトの初期化に使用されている場合、配列のサイズを明示的に指定する必要がある

MISRA2012-RULE-12_5

sizeof 演算子のオペランドは「配列型」として宣言された関数のパラメーターであってはならない

MISRA2012-RULE-18_1_ab 

配列の境界を超えてアクセスしてはならない

MISRA2012-RULE-18_1_bb 

範囲外の配列およびポインターへのアクセスを避ける

MISRA2012-RULE-18_4

+、-、+= および -= 演算子をポインター型の式に適用するべきではない

MISRA2012-RULE-20_8

#if または #elif プリプロセッサ ディレクティブの制御式は 0 または 1 に評価されなければならない

MISRA2012-RULE-21_13b

<ctype.h> ライブラリの関数に渡される値は 'unsigned char' として表現できる値または 'EOF' でなければならない

MISRA2012-RULE-21_14b

標準ライブラリ関数 memcmp を null 終端文字の比較に使用してはならない

MISRA2012-RULE-21_15

標準ライブラリ関数 memcmp、memmove および memcmp へのポインター引数は、互換性のある型の修飾付きおよび修飾なし版へのポインターでなければならない

MISRA2012-RULE-21_16

標準ライブラリ関数 memcmp へのポインター引数は、ポインター型、実質的な signed 型、実質的な unsigned 型、実質的なブール型、または実質的な列挙型を指していなければならない

MISRA2012-RULE-21_17_ab 

ゼロで終わっていない文字列の読み込みによるオーバーフローを避ける

MISRA2012-RULE-21_17_bb 

バッファー書き込み時のオーバーフローを避ける

MISRA2012-RULE-21_18b 

string.h の関数に渡される size_t 引数には適切な値がなければならない

MISRA2012-RULE-21_19_a

標準ライブラリ関数 localeconv、getenv、setlocale または strerror から返されたポインターは、const 修飾された型へのポインターとしてだけ使用する

MISRA2012-RULE-21_19_b

lconv 構造体のメンバーによって指し示される文字列を変更してはならない

MISRA2012-RULE-21_20b 

特定の標準ライブライ関数から返されたポインターは、そのあとの同じ関数または関連する関数の呼び出しで使用してはならない

MISRA2012-RULE-22_3b 

1 つのファイルを別のストリームで同時に読み取りアクセス用と書き込みアクセス用に開いてはならない

MISRA2012-RULE-22_4b 

読み取り専用として開かれたストリームへの書き込みを避ける

MISRA2012-RULE-22_7b 

マクロの EOF と標準ライブラリ関数から返された未変更の戻り値を比較するべきである

MISRA2012-RULE-22_8b 

errno 設定関数の呼び出し前に、errno に 0 を設定する

MISRA2012-RULE-22_9bc 

errno 設定関数以外の関数の呼び出し後に、errno と 0 を比較してチェックしている場合に違反をレポートする

MISRA2012-RULE-22_10bc 

errno 設定関数の呼び出し後にだけ、errno と 0 を比較してチェックする

MISRA2008-8_5_2_b

配列を部分的に初期化してはならない

MISRA2008-8_5_2_c

配列を部分的に初期化してはならない

NAMING-50

同じ名前空間にあり可視性が重なる識別子は見た目で明確に区別できなければならない

PB-69

オブジェクトの要素を複数回初期化してはならない

PREPROC-19

#if または #elif プリプロセッサ ディレクティブの制御式は 0 または 1 に評価されなければならない

 

解決済みの PR/FR

 

PR/FR ID

説明

117075

"Compliance by Category" ウィジェットの使用するカテゴリがターゲットのテスト コンフィギュレーションと一致しない

119444

テスト コンフィギュレーション作成後、DTP Server にコンフィギュレーションが表示されない

119478

Server Edition ライセンスに必要な機能が ENT ライセンスで利用できない

120275

Jenkins Cobertura Coverage ウィジェットが日本語ロケールで動作しない

118760

Jtest10.x に UC.UP ルールがない

118762

Jtest10.x に METRIC.DIF ルールがない

118761

Jtest10.x に GLOBAL.ACD ルールがない

120444

Gradle 3.0 がサポートされていない

118860

IntelliJ:sourcelevelinjsonfile が空

119814

IBM RAD GUI でビルトイン テスト コンフィギュレーションが利用できない

120140

andjtestcli.jvm regarding -Xmx 値のドキュメントの矛盾

120595

インナー クラスでは NAMING.NE が正しく動作しない

121001

HIBERNATE.SLM のルール ドキュメント修正例が間違っている

116773

無関係なコードが追加されたとき BD-PB_NOTINIT が違反をレポートしなくなる

116892

RuleWizard にnullptr サポートを追加

118116

Error: このコンテキストでは __if_exists の使用がサポートされていない

119825

式の初期化子に対して MISRA2008-5.0.6 が違反を検出しない

120019

インクリメンタル モードがオンのときとオフのときで解析結果が異なる

120121

パース エラー: ここでは派生クラスは許可されない

120126

-include/-exclude ファイルが見つからない場合の問題

120353

BD.PB.VOVR パラメーター名が誤っているため更新が必要

120455

#define シンボルを使用して配列を初期化している場合に MISRA2004-9_2  ルールが違反を誤検出する

120123

website オプションの誤った使用

120203

名前に特殊文字を含む WebSite またはソリューションのサブフォルダーにある WebSite  をビルドする際の無効な MSBuild ターゲット

120296

日本語の文字を含むパスにあるプロジェクトに結果をインポートするとカバレッジ マーカーが表示されない

117336

Engine の解析がランダムに失敗する

120151

TFS での diff 操作中にセットアップの問題がレポートされる

120315

ルール ID に重要度が含まれる場合に抑制が無視される

    1.  Eclipse ベースの IDE で利用可能
    2.  フロー解析ライセンスが必要。営業担当者にお問い合わせください。
    3. これらのルールをカスタム テスト コンフィギュレーションで使用するには、次のパラメーターを設定する必要がある: For MISRA2012-RULE-22_8: MISRA2012-RULE-22_8-reportOnMissingErrnoCheck=false MISRA2012-RULE-22_8-reportOnUnnecessaryErrnoCheck=false
      MISRA2012-RULE-22_9: MISRA2012-RULE-22_9-reportWhenErrnoIsNotZero=false MISRA2012-RULE-22_9-reportOnUnnecessaryErrnoCheck=false
      MISRA2012-RULE-22_10: MISRA2012-RULE-22_10-reportWhenErrnoIsNotZero=false MISRA2012-RULE-22_10-reportOnMissingErrnoCheck=false
      これらのパラメーターは、"MISRA C 2012" ビルトイン テスト コンフィギュレーションではすでに設定済み。

  • No labels