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 を設定する |
errno 設定関数以外の関数の呼び出し後に、errno と 0 を比較してチェックしている場合に違反をレポートする | |
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 に重要度が含まれる場合に抑制が無視される |
- Eclipse ベースの IDE で利用可能
- フロー解析ライセンスが必要。営業担当者にお問い合わせください。
- これらのルールをカスタム テスト コンフィギュレーションで使用するには、次のパラメーターを設定する必要がある: 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" ビルトイン テスト コンフィギュレーションではすでに設定済み。