このリリースでは、サポート対象環境の拡充と C/C++test のセキュリティテスト機能の強化に重点が置かれました。
環境のサポート
新しいコンパイラのサポート
新たに以下のコンパイラがサポートされました。
コンパイラ名 | コンパイラ略称 |
---|---|
GNU GCC 8.x | gcc_8 |
GNU GCC 8.x (x86_64) | gcc_8-64 |
IAR Compiler for RL78 v. 3.10.x | iccrl78_3_10 |
非推奨のコンパイラ
以下のコンパイラはサポートされなくなりました。
コンパイラ名 | コンパイラ略称 |
---|---|
Analog Devices C/C++ Compiler 7.0 for ADSP SHARC | ad21k_7_0 |
Analog Devices C/C++ Compiler 7.0 for ADSP TigerSHARC | adts_7_0 |
CodeSourcery Sourcery G++ Lite 2007q3-51 | csgccarm_4_2 |
現在サポートされているコンパイラについては「サポート対象コンパイラ」を参照してください。
新規 IDE
次の IDE のサポートが追加されました。
- Eclipse 4.8
コンプライアンス パックの拡張
セキュリティ コンプライアンス パックが拡張され、CERT C および CERT C++ セキュリティ標準のコンプライアンス推進に役立つようになりました。
CERT C
- SEI CERT C コーディング標準ルールの推進に役立つ SEI CERT C Rules テスト コンフィギュレーションが追加されました。
- SEI CERT C コーディング標準ルールおよびガイドラインの推進に役立つ SEI CERT C Coding Guidelines テスト コンフィギュレーションが追加されました。
CERT C++
- SEI CERT C++ コーディング標準ルールの推進に役立つ SEI CERT C++ Rules テスト コンフィギュレーションが追加されました。
コンプライアンス パックを使用するには、専用のライセンス機能を有効化する必要があります。コンプライアンス パック ライセンスの詳細については、Parasoft 製品サポートにご連絡ください。
フロー解析の改善
- IDE でのフロー解析結果の表示が改善されました。
- フロー解析にリソースが開かれているかどうかをチェックする関数のほか、閉じられたリソースに対して呼び出しても安全な関数を指定できるオプションが追加されました (「フロー解析の設定 - リソースの指定」を参照)。
- フロー解析での std::nullptr_t 型のサポートが改善されました。
追加または更新されたテスト コンフィギュレーション
以下のビルトイン テスト コンフィギュレーションが追加されました。
- SEI CERT C++ Rules
- SEI CERT C Rules
- Run VxWorks DKM Application with Full Monitoring (File System, WRWB 4.x)
- Run VxWorks DKM Unit Tests (File System, WRWB 4.x)
- Run VxWorks RTP Application with Full Monitoring (File System, WRWB 4.x)
- Run VxWorks RTP Unit Tests (File System, WRWB 4.x)
C/C++test に付属するテスト コンフィギュレーションの一覧は「ビルトイン テスト コンフィギュレーション」を参照してください。
非推奨のテスト コンフィギュレーション
以下のテスト コンフィギュレーションは非推奨になりました。
- CERT C Coding Standard
- CRules
- DISA-STIG Coding Standard
- Ellemtel
- ISO 26262 Recommended Rules
- MISRA C 2012 Legacy
- OWASP Top 10 Security Vulnerabilities
- Parasoft's Recommended FDA C++ Phase 1
- Parasoft's Recommended FDA C++ Phase 2
- Parasoft's Recommended FDA C++ Phase 3
- Parasoft's Recommended Rules
- SAMATE Annex A Source Code Weaknesses
非推奨のテスト コンフィギュレーションは、デフォルトでは利用できません。チーム共有またはユーザー定義コンフィギュレーションとして適用することはできます。これらのテスト コンフィギュレーションは、次の場所にあります: [INSTALL_DIR]/configs/deprecated
フロー解析の改善
- フロー解析での std::nullptr_t 型のサポートが改善されました。
- IDE でのフロー解析結果の表示が改善されました。
- フロー解析にリソースが開かれているかどうかをチェックする関数のほか、閉じられたリソースに対して呼び出しても安全な関数を指定できるオプションが追加されました (「フロー解析の設定 - リソースの指定」を参照)。
スタンドアロンの License Server
別の DTP インスタンスまたはスタンド アロンの License Server から Parasoft ライセンスを取得できます。「Parasoft ライセンスの設定」(デスクトップの場合) または「ライセンスの設定」 (オートメーションの場合) を参照してください。
追加または更新された解析ルール
このリリースでは、新規静的解析ルールの追加により、コンプライアンス標準のカバー範囲が広がりました。追加または更新されたルールの一覧は「新規ルール 」および「更新されたルール」を参照してください。
その他の変更
- Microsoft Team Foundation Server 2008 はサポートされなくなりました。
解決済みのバグおよび FR
バグ/FR ID | 説明 |
---|---|
CPP-18534 | WindRiver Workbench 4.0 IDE のサポート |
CPP-33421 | "asm goto" gcc 拡張のサポートを追加 (Linux Kernel Module) |
CPP-39308 | MDK-ARM ARM 6 コンパイラのサポート |
CPP-40407 | マクロのコードに対して SA ルールの違反が検出された場合、誤った行に違反が表示される |
CPP-40551 | const/volatile オブジェクトから参照型へのキャストをレポートするよう MISRA2004-11_5 ルールを拡張 |
CPP-40553 | 新規ルール: CODSTA-MCPP-22 範囲ベースの for ループでは auto 宣言に対して明示的な参照修飾子を使用する |
CPP-40623 | Clang: 未定義および矛盾するビルトインの修正 |
CPP-40695 | VS2017 プラグインの登録をユーザー固有にしない |
CPP-40771 | 新規ルール CODSTA-201: 構造化テキストデータをネイティブに処理しない |
CPP-40772 | 新規ルール CODSTA-199: 運用コード内でアサーションを使用しない |
CPP-40773 | 新規ルール OOP-54: オーバーライドされたメソッドまたは隠されたメソッドのアクセシビリティを引き上げてはならない |
CPP-40774 | 新規ルール: PORT-29 データをファイルに書き込む関数に構造体へのポインターを渡すべきではない |
CPP-40775 | 新規ルール CODSTA-82_b: 空の無限ループを使用しない |
CPP-41516 | CODSTA-16 ルールが enum または const 型のサイズに対して違反をレポートしない |
CPP-41517 | RW: Missing information about va_list being builtin/predeclared type. |
CPP-41520 | 自動されたテスト ケースの Enum 型への参照がコンパイルの問題を引き起こす |
CPP-41525 | MISRA2004-10_4 (CODSTA-198) ルールは非複合型式のキャストに対して違反をレポートする必要がある |
CPP-41530 | CODSTA-30 参照として渡されたパラメーターに対して違反が誤検出される |
CPP-41541 | asm 文が使用されている場合、ファスト カバレッジ インストゥルメンテーションでコンパイル エラーが発生する |
CPP-41553 | Eclipse 4.8 IDE のサポート |
CPP-41586 | ワイド文字列が wchar_type へのポインターに代入されている場合に PB-27 ルールが違反をレポートしない (linux 上の gcc) |
CPP-41605 | error: this statement is not allowed inside of a statement expression |
CPP-41611 | 新規ルール: JSF-37 |
CPP-41614 | arasoft's Recommended Rules テスト コンフィギュレーションを非推奨にする |
CPP-41646 | GNU GCC 8.x コンパイラのサポート |
CPP-41671 | IAR RL78 v3.10 コンパイラのサポート |
CPP-41709 | MISRA2012-RULE.21_2_b および MISRA2012-RULE.21_2_c va_list の問題 |
CPP-41741 | 'Variables' ノードのプロパティ 'Entity' は初期化子で使用されている変数を返す |
CPP-41744 | MISRA2012-RULE-20_12 の誤検出 |
CPP-41748 | テスト ケース エディター: テスト ケースの自動パラメータライズ |
CPP-41750 | MDK ARM/uVision 5 IDE のサポート |
CPP-41831 | RULE_OUTPUT_CHANGE NAMING-HN ルールの出力メッセージの誤り |
CPP-41840 | C/C++test レポートの抑制レコードでルール ID が壊れている |
CPP-41842 | RULE_OUTPUT_CHANGE PB-44 ルールの出力メッセージを改善する必要がある |
CPP-41866 | テスト ケースエディターでのパラメータライズ テスト ケースの作成 |
CPP-41868 | cpptestcc でインストゥルメントする際の警告 |
CPP-41871 | 論理行がない場合、CLLOCRIF, CLLOCRIT, CLLOCRIM の値をレポートしない |
CPP-41944 | HICPP-16_1_5-a ルールが DTP サーバーの統合パッケージに含まれていない (DTP サーバーで利用できない) |
CPP-41977 | DTP からインポートした後に違反が重複する |
CPP-42042 | internal error: assertion failed at: "lookup.c", line 2738 |
CPP-42070 | VS2017 プラグインを複数ユーザーにインストールする機能をサポート |
CPP-42075 | MRM-40 ルールは、コピーが無効化されている場合に違反をレポートするべきではない |
FA-6689 | dynamic_cast が使用されているとき、BD-PB-NP ルールが違反をレポートしない |
FA-6649 | BD-PB-CC の bit-AND に対する違反誤検出 |
FA-6611 | リソースがキャストされている場合に BD-RES-LEAKS ルールが違反を誤検出する |
FA-6453 | "&(ptr->field)" 演算に対し、シミュレーションが誤ってポインター間接参照を仮定する |
FA-5769 | BD-PB-CHECKRET ルールの違反メッセージに行番号が含まれている |
新規ルール
以下のルールが追加されました。
ルール ID | ヘッダー |
---|---|
AUTOSAR-A15_5_2-b | cstdlib ライブラリの関数 abort()、quick_exit()、_Exit() は使用してはならない |
AUTOSAR-A15_5_3-b | デストラクタ、割り当て解除、スワップから例外をスローしてはならない |
AUTOSAR-A15_5_3-c | デストラクタの中から throw を行ってはいけない |
AUTOSAR-A15_5_3-d | 他では処理されていないすべての例外をキャッチする例外ハンドラを少なくとも 1 つ用意するべきである |
AUTOSAR-A15_5_3-e | 空のスロー (throw;) は catch ハンドラの複合文でだけ使用する |
AUTOSAR-A15_5_3-f | プログラムの起動フェーズの後、終了フェーズの前にだけ例外をスローする |
AUTOSAR-A15_5_3-g | 明示的にスローされる例外はその場所に至るすべての呼び出しパスに互換性のある型のハンドラがなければならない |
AUTOSAR-A15_5_3-h | 関数の宣言に例外指定がある場合、関数は指定された型の例外だけをスローできる |
AUTOSAR-A15_5_3-i | グローバルまたは名前空間のスコープで呼び出される関数は、処理されない例外をスローしてはならない |
AUTOSAR-A15_5_3-j | 例外を常にキャッチする |
AUTOSAR-A15_5_3-k | 終了ハンドラーを適切に定義する |
AUTOSAR-A5_1_4-b | 外側のラムダから参照によってローカル オブジェクトをキャプチャしてはならない |
AUTOSAR-A5_1_4-c | ローカル オブジェクトを参照によってキャプチャするラムダは、より長い存続期間を持つ変数に代入するべきではない |
BD-CO-EMPCON | std アルゴリズムに空のコンテナー イテレーターを宛先として渡さない |
BD-CO-STRMOD | 有効な参照、ポインター、イテレーターを使用して basic_string の要素を参照する |
BD-PB-NEWHAN | new ハンドラーを適切に定義する |
BD-PB-POLARR | 配列をポリモーフィックに処理しない |
BD-PB-PTRCMP | 関連のない 2 つのポインターを比較してはならない |
BD-PB-PTRVALUE | すでに所有されているポインター値を関連がないスマート ポインターに格納しない |
BD-PB-SUBSEQMOVE | 移動元オブジェクトの値に依存しない |
BD-PB-TERMHAN | 終了ハンドラーを適切に定義する |
BD-PB-UNEXPHAN | unexpected ハンドラーを適切に定義する |
BD-PB-VALRANGE | コンテナーのインデックスが有効範囲内であることを保証する |
CERT_C-ARR02-a | 初期化子内の配列宣言に明示的に配列の上限を指定する |
CERT_C-DCL10-a | printf 関数の呼び出しで、書式文字列のタグの数と対応する引数の数は同じでなければならない |
CERT_C-DCL11-a | printf 関数の呼び出しで、書式文字列の '%s' または '%c' タグと対応する引数の間に不整合があってはならない |
CERT_C-DCL11-b | printf 関数の呼び出しで、書式文字列の '%f' タグと対応する引数の間に不整合があってはならない |
CERT_C-DCL11-c | printf 関数の呼び出しで、書式文字列の '%i' または '%d' タグと対応する引数の間に不整合があってはならない |
CERT_C-DCL11-d | printf 関数の呼び出しで、書式文字列の '%u' タグと対応する引数の間に不整合があってはならない |
CERT_C-DCL11-e | printf 関数の呼び出しで、書式文字列の '%p' タグと対応する引数の間に不整合があってはならない |
CERT_C-DCL11-f | printf 関数の呼び出しで、書式文字列のタグの数と対応する引数の数は同じでなければならない |
CERT_C-ERR01-a | エラー指示子 errno は、用いてはならない |
CERT_C-ERR02-a | 標準ライブラリの入出力関数を使用してはいけない |
CERT_C-ERR06-a | アサーションを使用しない |
CERT_C-ERR07-b | 標準ライブラリの入出力関数を使用してはいけない |
CERT_C-EXP15-a | 疑わしいセミコロンの使用 |
CERT_C-FIO22-a | リソースが解放されていることを確認する |
CERT_C-FIO24-a | ファイル アクセス時の競合状態を避ける |
CERT_C-FIO32-a | ファイル名インジェクションから防御する |
CERT_C-INT08-a | 整数のオーバーフローを避ける |
CERT_C-INT15-a | 基本型の char、int、short、long、float および double を使用しない。代わりに特定の長さの typedef を使用する |
CERT_C-MEM00-d | 解放されたリソースを使用してはならない |
CERT_C-MEM00-e | リソースが解放されていることを確認する |
CERT_C-MEM02-a | 代入演算子のオペランドの型には互換性がなければならない |
CERT_C-MEM02-b | 関数の戻り値を互換性のない型の変数に代入してはならない |
CERT_C-MEM04-a | ライブラリ関数に渡される値については、その妥当性をチェックしなければならない |
CERT_C-MEM05-a | 再帰を使用しない |
CERT_C-MEM05-b | 可変長配列のサイズが有効範囲内であることを確認する |
CERT_C-MEM07-a | ライブラリ関数に渡される値については、その妥当性をチェックしなければならない |
CERT_C-MSC40-a | 外部リンケージを持つ関数のインライン定義には、静的オブジェクトの定義や使用が含まれていてはならない |
CERT_C-MSC41-a | 文字列リテラルをハード コードしない |
CERT_C-STR05-a | 文字列リテラルを変更してはならない |
CERT_CPP-CON50-a | 他のスレッドの mutex を破壊しない |
CERT_CPP-CON51-a | mutex に対して直接 lock() を呼び出さない |
CERT_CPP-CON52-a | ビット フィールドを変更する場合は、ロックを使用して競合状態を防ぐ |
CERT_CPP-CON53-a | 異なる順序でロックを獲得しない |
CERT_CPP-CON54-a | 不正に再開される可能性がある関数をループに入れる |
CERT_CPP-CON55-a | 複数のスレッドが同じ条件変数を待機している場合、'notify_one()' 関数を使用しない |
CERT_CPP-CON56-a | 二重ロックを避ける |
CERT_CPP-CTR50-a | コンテナーのインデックスが有効範囲内であることを保証する |
CERT_CPP-CTR51-a | コンテナーを反復処理中に変更しない |
CERT_CPP-CTR52-a | std アルゴリズムに空のコンテナー イテレーターを宛先として渡さない |
CERT_CPP-CTR53-a | 実際には範囲ではないイテレータ範囲を使用してはならない |
CERT_CPP-CTR53-b | コンテナーが異なるイテレーターを比較しない |
CERT_CPP-CTR54-a | コンテナーが異なるイテレーターを比較しない |
CERT_CPP-CTR54-b | 関連のない 2 つのポインターを比較してはならない |
CERT_CPP-CTR55-a | 1 より大きい値の定数をイテレーターに加算またはイテレーターから減算してはならない |
CERT_CPP-CTR56-a | 配列をポリモーフィックに処理しない |
CERT_CPP-CTR56-b | 派生クラス オブジェクトの配列を指すポインターを、基底クラスのポインターに変換してはいけない |
CERT_CPP-CTR56-c | 配列をポリモーフィックに処理しない |
CERT_CPP-CTR57-a | 等しい値に対して true を返す比較関数を連想コンテナに使用しない |
CERT_CPP-CTR58-a | 述語を純粋関数にする |
CERT_CPP-DCL50-a | 可変個引数を持つ関数を定義してはならない |
CERT_CPP-DCL51-a | 名前がアンダースコアで始まる識別子を #define または #undef してはならない |
CERT_CPP-DCL51-b | 予約済み識別子を再定義してはならない |
CERT_CPP-DCL51-c | defined 識別子を #define または #undef してはならない |
CERT_CPP-DCL51-d | 標準ライブラリのマクロ、オブジェクト、関数の名前を再利用してはならない |
CERT_CPP-DCL51-e | 標準ライブラリのマクロ、オブジェクト、関数の名前を再利用してはならない (C90) |
CERT_CPP-DCL51-f | 標準ライブラリのマクロ、オブジェクト、関数の名前を再利用してはならない (C99) |
CERT_CPP-DCL52-a | 参照型を const または volatile で修飾してはならない |
CERT_CPP-DCL53-a | 常にファイル スコープで関数を宣言する |
CERT_CPP-DCL53-b | ローカルまたは関数プロトタイプ スコープで宣言された識別子は、グローバルまたは名前空間のスコープで宣言された識別子を隠蔽してはならない |
CERT_CPP-DCL54-a | new と delete はいつも一緒に提供する |
CERT_CPP-DCL55-a | データをユーザー領域にコピーできる関数に構造体へのポインターを渡すべきではない |
CERT_CPP-DCL56-a | ローカルでない静的オブジェクトをローカルな static オブジェクトに置き換えることで、異なる翻訳単位にあるオブジェクトの初期化の順序に関する問題を避ける |
CERT_CPP-DCL57-a | デストラクタ、割り当て解除、スワップから例外をスローしてはならない |
CERT_CPP-DCL57-b | 例外を常にキャッチする |
CERT_CPP-DCL58-a | 標準の名前空間 std および posix を変更してはならない |
CERT_CPP-DCL59-a | ヘッダー ファイルに無名の名前空間があってはならない |
CERT_CPP-DCL60-a | クラス、共用体、列挙型の名前 (修飾子があれば修飾子も) は一意の識別子でなければならない |
CERT_CPP-ERR50-a | 'std::atexit()' または 'std::at_quick_exit()' で登録された関数の実行は、例外によって終了すべきではない |
CERT_CPP-ERR50-b | デストラクタ、割り当て解除、スワップから例外をスローしてはならない |
CERT_CPP-ERR50-c | デストラクタの中から throw を行ってはいけない |
CERT_CPP-ERR50-d | 他では処理されていないすべての例外をキャッチする例外ハンドラを少なくとも 1 つ用意するべきである |
CERT_CPP-ERR50-e | 空のスロー (throw;) は catch ハンドラの複合文でだけ使用する |
CERT_CPP-ERR50-f | プログラムの起動フェーズの後、終了フェーズの前にだけ例外をスローする |
CERT_CPP-ERR50-g | 明示的にスローされる例外はその場所に至るすべての呼び出しパスに互換性のある型のハンドラがなければならない |
CERT_CPP-ERR50-h | 関数の宣言に例外指定がある場合、関数は指定された型の例外だけをスローできる |
CERT_CPP-ERR50-i | グローバルまたは名前空間のスコープで呼び出される関数は、処理されない例外をスローしてはならない |
CERT_CPP-ERR50-j | 例外を常にキャッチする |
CERT_CPP-ERR50-k | 終了ハンドラーを適切に定義する |
CERT_CPP-ERR50-l | cstdlib ライブラリの関数 abort()、quick_exit()、_Exit() は使用してはならない |
CERT_CPP-ERR51-a | 例外を常にキャッチする |
CERT_CPP-ERR51-b | 明示的にスローされる例外はその場所に至るすべての呼び出しパスに互換性のある型のハンドラがなければならない |
CERT_CPP-ERR52-a | setjmp マクロと longjmp 関数は、用いてはならない |
CERT_CPP-ERR52-b | <setjmp.h> ヘッダーをインクルードしてはいけない |
CERT_CPP-ERR53-a | コンストラクタまたはデストラクタの関数監視ブロックのハンドラは、そのクラスまたは基底クラスの静的でないメンバを参照してはならない |
CERT_CPP-ERR54-a | 1 つの try-catch 文または関数監視ブロックに派生クラスおよびそのすべてまたは一部の基底クラスのハンドラがある場合、最後に派生されたクラスから基底クラスへの順でハンドラを記述する |
CERT_CPP-ERR55-a | 関数の宣言に例外指定がある場合、関数は指定された型の例外だけをスローできる |
CERT_CPP-ERR56-a | リソースが解放されていることを確認する |
CERT_CPP-ERR57-a | リソースが解放されていることを確認する |
CERT_CPP-ERR58-a | プログラムの起動フェーズの後、終了フェーズの前にだけ例外をスローする |
CERT_CPP-ERR59-a | 実行境界を越えて例外をスローしてはならない |
CERT_CPP-ERR60-a | 例外オブジェクトは例外をスローせずにコピー作成可能でなければならない |
CERT_CPP-ERR60-b | 'std::exception' を継承するクラスに明示的に宣言されたコピー コンストラクターは、例外をスローしない仕様を持たなければならない |
CERT_CPP-ERR61-a | クラス型の例外は常に参照でキャッチする |
CERT_CPP-ERR61-b | 値でスローし、参照でキャッチする |
CERT_CPP-ERR62-a | <stdlib.h>ライブラリのライブラリ関数 atof、atoi、atol は、用いてはならない |
CERT_CPP-EXP50-a | 式の値は、規格が認めるどのような順序で評価されようとも、同じでなければならない |
CERT_CPP-EXP50-b | 関数の引数の評価順序に依存するコードを書いてはならない |
CERT_CPP-EXP50-c | 関数呼び出しおよび関数引数の評価順序に依存するコードを記述してはならない |
CERT_CPP-EXP50-d | 関数呼び出しを含む式の評価順序に依存するコードを書いてはならない |
CERT_CPP-EXP50-e | オブジェクトは、シーケンス ポイントの間で、格納された値が式の評価によって 2 回以上変更されてはならない |
CERT_CPP-EXP50-f | 関数呼び出しの評価順序に依存するコードを書いてはならない |
CERT_CPP-EXP51-a | 配列をポリモーフィックに処理しない |
CERT_CPP-EXP52-a | sizeof 演算子のオペランドに副作用を持つ式が含まれていてはならない |
CERT_CPP-EXP52-b | sizeof 演算子のオペランドで volatile 左辺値として指定されたオブジェクトにアクセスするべきではない |
CERT_CPP-EXP52-c | 副作用を持つ関数の呼び出しを sizeof 演算子のオペランドとして使用してはならない |
CERT_CPP-EXP53-a | 初期化の前に使用しない |
CERT_CPP-EXP54-a | 解放されたリソースを使用してはならない |
CERT_CPP-EXP54-b | 自動記憶域のオブジェクトのアドレスを関数から返してはいけない |
CERT_CPP-EXP54-c | 自動記憶域のオブジェクトのアドレスを、オブジェクトが存在しなくなった後にも存在し続ける可能性がある別のオブジェクトに代入してはならない |
CERT_CPP-EXP55-a | キャストによってポインターまたは参照型から const または volatile 修飾子を取り除いてはならない |
CERT_CPP-EXP56-a | 別の言語リンケージで関数を呼び出さない |
CERT_CPP-EXP57-a | 削除の時点で不完全なオブジェクトを削除してはならない |
CERT_CPP-EXP57-b | 不完全型へのポインターと他の型との間で変換を行ってはならない |
CERT_CPP-EXP58-a | 可変引数のマクロを正しく使用する |
CERT_CPP-EXP60-a | 実行境界を越えて非標準レイアウト型のオブジェクトを渡してはならない |
CERT_CPP-EXP61-a | ローカル オブジェクトを参照でキャプチャするラムダを返してはならない |
CERT_CPP-EXP61-b | 外側のラムダから参照によってローカル オブジェクトをキャプチャしてはならない |
CERT_CPP-EXP61-c | ローカル オブジェクトを参照によってキャプチャするラムダは、より長い存続期間を持つ変数に代入するべきではない |
CERT_CPP-EXP63-a | 移動元オブジェクトの値に依存しない |
CERT_CPP-FIO50-a | 間にフラッシュまたは位置付けの処理を呼び出さずに交互にストリームの入力と出力を行ってはならない |
CERT_CPP-FIO51-a | リソースが解放されていることを確認する |
CERT_CPP-INT50-a | 列挙型を潜在型とする式は、列挙型の列挙子に対応する値だけを持つことができる |
CERT_CPP-MEM50-a | 解放されたリソースを使用してはならない |
CERT_CPP-MEM51-a | 解放されたリソースを使用してはならない |
CERT_CPP-MEM51-b | 対応する new/malloc および delete/free の呼び出しでは、同じ形式を使用する |
CERT_CPP-MEM51-c | 非自明なデストラクターがあるクラスには、コピー コンストラクターおよびコピー代入演算子も宣言するべきである |
CERT_CPP-MEM52-a | new の戻り値をチェックする |
CERT_CPP-MEM52-b | 関数のパラメータの評価順は未定義であるため、関数の引数リストでリソースを割り当てない |
CERT_CPP-MEM53-a | コンストラクタのあるオブジェクトに対し malloc/realloc を呼び出さない |
CERT_CPP-MEM55-a | ユーザー定義の new 演算子は、割り当てが失敗した場合、std::bad_alloc 例外をスローするべきである |
CERT_CPP-MEM56-a | すでに所有されているポインター値を関連がないスマート ポインターに格納しない |
CERT_CPP-MSC50-a | 疑似乱数の生成に rand() 関数を使用しない |
CERT_CPP-MSC51-a | 疑似乱数生成器に適切なシードを指定する |
CERT_CPP-MSC52-a | 戻り値の型が非 void の関数の場合、すべての出口で、式を持つ明示的な return 文を記述しなければならない |
CERT_CPP-MSC53-a | return するべきでない関数から return してはならない |
CERT_CPP-MSC54-a | シグナル ハンドラーを適切に定義する |
CERT_CPP-OOP50-a | コンストラクターから仮想関数を呼び出してはいけない |
CERT_CPP-OOP50-b | デストラクターから仮想関数を呼び出してはいけない |
CERT_CPP-OOP50-c | コンストラクターからクラスの仮想関数を呼び出さない |
CERT_CPP-OOP50-d | デストラクターからクラスの仮想関数を呼び出さない |
CERT_CPP-OOP51-a | 関数引数および戻り値のスライシングを避ける |
CERT_CPP-OOP52-a | 基底クラスとして使用される仮想関数を持つクラスに仮想デストラクタを定義する |
CERT_CPP-OOP53-a | 宣言された順にメンバを初期化リストに記述する |
CERT_CPP-OOP54-a | operator= での自分自身への代入をチェックする |
CERT_CPP-OOP55-a | 関数へのポインタを他のポインタ型にキャストで変換してはならない |
CERT_CPP-OOP56-a | 終了ハンドラーを適切に定義する |
CERT_CPP-OOP56-b | unexpected ハンドラーを適切に定義する |
CERT_CPP-OOP56-c | new ハンドラーを適切に定義する |
CERT_CPP-OOP57-a | C の標準ライブラリ関数を使用してノントリビアル クラス型のオブジェクトを初期化してはならない |
CERT_CPP-OOP57-b | C の標準ライブラリ関数を使用して非標準レイアウト クラス型のオブジェクトを比較してはならない |
CERT_CPP-OOP58-a | コピー演算はソース オブジェクトを変更してはならない |
CERT_CPP-STR50-a | 配列ではなく vector や string を使用する |
CERT_CPP-STR51-a | null ポインターの間接参照を避ける |
CERT_CPP-STR52-a | 有効な参照、ポインター、イテレーターを使用して basic_string の要素を参照する |
CERT_CPP-STR53-a | コンテナーのインデックスが有効範囲内であることを保証する |
CODSTA-197 | 文字列リテラルで初期化される文字配列の上限を指定しない |
CODSTA-199 | アサーションを使用しない |
CODSTA-200 | 初期化子内の配列宣言に明示的に配列の上限を指定する |
CODSTA-201 | 構造化テキストデータをネイティブに処理しない |
CODSTA-202 | 外部リンケージを持つ関数のインライン定義には、静的オブジェクトの定義や使用が含まれていてはならない |
CODSTA-203 | 文字列リテラルをハード コードしない |
CODSTA-82_b | 空の無限ループを使用しない |
CODSTA-CPP-93 | C の標準ライブラリ関数を使用してノントリビアル クラス型のオブジェクトを初期化してはならない |
CODSTA-CPP-94 | C の標準ライブラリ関数を使用して非標準レイアウト クラス型のオブジェクトを比較してはならない |
CODSTA-CPP-95 | 標準の名前空間 std および posix を変更してはならない |
CODSTA-CPP-96 | 別の言語リンケージで関数を呼び出さない |
CODSTA-CPP-97 | 参照型を const または volatile で修飾してはならない |
CODSTA-CPP-98 | コピー演算はソース オブジェクトを変更してはならない |
CODSTA-MCPP-17_b | 外側のラムダから参照によってローカル オブジェクトをキャプチャしてはならない |
CODSTA-MCPP-17_c | ローカル オブジェクトを参照によってキャプチャするラムダは、より長い存続期間を持つ変数に代入するべきではない |
CODSTA-MCPP-22 | 範囲ベースの for ループでは auto 宣言に対して明示的な参照修飾子を使用する |
EXCEPT-19 | 例外オブジェクトは例外をスローせずにコピー作成可能でなければならない |
EXCEPT-20 | 'std::exception' を継承するクラスに明示的に宣言されたコピー コンストラクターは、例外をスローしない仕様を持たなければならない |
JSF-037 | ファイルは、コンパイルに必要な宣言および定義を含むヘッダーだけを直接的にインクルードするべきである |
MISRA2008-15_5_3_b | デストラクタ、割り当て解除、スワップから例外をスローしてはならない |
MISRA2008-15_5_3_c | デストラクタの中から throw を行ってはいけない |
MISRA2008-15_5_3_d | 他では処理されていないすべての例外をキャッチする例外ハンドラを少なくとも 1 つ用意するべきである |
MISRA2008-15_5_3_e | 空のスロー (throw;) は catch ハンドラの複合文でだけ使用する |
MISRA2008-15_5_3_f | プログラムの起動フェーズの後、終了フェーズの前にだけ例外をスローする |
MISRA2008-15_5_3_g | 明示的にスローされる例外はその場所に至るすべての呼び出しパスに互換性のある型のハンドラがなければならない |
MISRA2008-15_5_3_h | 関数の宣言に例外指定がある場合、関数は指定された型の例外だけをスローできる |
MISRA2008-15_5_3_i | グローバルまたは名前空間のスコープで呼び出される関数は、処理されない例外をスローしてはならない |
MISRA2008-15_5_3_j | 例外を常にキャッチする |
MISRA2008-15_5_3_k | 終了ハンドラーを適切に定義する |
MRM-53 | ユーザー定義の new 演算子は、割り当てが失敗した場合、std::bad_alloc 例外をスローするべきである |
OOP-54 | オーバーライドされたメソッドまたは隠されたメソッドのアクセシビリティを引き上げてはならない |
OPT-41 | ファイルは、コンパイルに必要な宣言および定義を含むヘッダーだけを直接的にインクルードするべきである |
PB-74 | 1 より大きい値の定数をイテレーターに加算またはイテレーターから減算してはならない |
PB-75 | cstdlib ライブラリの関数 abort()、quick_exit()、_Exit() は使用してはならない |
PORT-29 | データをファイルに書き込む関数に構造体へのポインターを渡すべきではない |
PORT-30 | 実行境界を越えて例外をスローしてはならない |
PORT-31 | 実行境界を越えて非標準レイアウト型のオブジェクトを渡してはならない |
SECURITY-50 | 複数のスレッドが同じ条件変数を待機している場合、'notify_one()' 関数を使用しない |
更新されたルール
解析結果の向上のため、以下の静的解析ルールが更新されました。
ルール カテゴリ | ルール ID |
---|---|
AUTOSAR C++14 Coding Guidelines | AUTOSAR-A12_0_1-a, AUTOSAR-A15_1_4-a, AUTOSAR-A15_5_2-a, AUTOSAR-A15_5_3-a, AUTOSAR-A15_5_3-b, AUTOSAR-A2_14_2-a, AUTOSAR-A5_2_2-a, AUTOSAR-A5_2_3-a, AUTOSAR-A7_1_1-a, AUTOSAR-M0_3_1-f, AUTOSAR-M4_5_3-a, AUTOSAR-M5_0_21-a, AUTOSAR-M5_2_8-a |
Flow Analysis | BD-CO-ITINVCOMP, BD-CO-ITMOD, BD-PB-NP, BD-PB-STREAMINOUT, BD-PB-VARARGS, BD-PB-VCTOR, BD-PB-VDTOR, BD-RES-FREE, BD-RES-LEAKS, BD-TRS-DLOCK, BD-TRS-DSTRLOCK |
SEI CERT C | CERT_C-CON30-a, CERT_C-CON31-a, CERT_C-CON31-b, CERT_C-CON35-a, CERT_C-DCL00-a, CERT_C-ERR33-c, CERT_C-EXP05-a, CERT_C-EXP32-a, CERT_C-EXP34-a, CERT_C-EXP40-a, CERT_C-FIO22-a, CERT_C-FIO39-a, CERT_C-FIO42-a, CERT_C-FIO46-a, CERT_C-INT13-a, CERT_C-INT16-a, CERT_C-INT36-a, CERT_C-MEM00-d, CERT_C-MEM00-e, CERT_C-MEM01-a, CERT_C-MEM12-a, CERT_C-MEM30-a, CERT_C-MEM31-a, CERT_C-MSC19-b, CERT_C-MSC39-a, CERT_C-POS48-a, CERT_C-POS54-c, CERT_C-STR05-a, CERT_C-STR09-a, CERT_C-STR10-a, CERT_C-STR30-a, CERT_C-WIN30-a |
SEI CERT C++ | CERT_CPP-CON50-a, CERT_CPP-CON56-a, CERT_CPP-CTR51-a, CERT_CPP-CTR53-b, CERT_CPP-CTR54-a, CERT_CPP-DCL51-e, CERT_CPP-DCL51-f, CERT_CPP-DCL57-a, CERT_CPP-ERR50-a, CERT_CPP-ERR50-b, CERT_CPP-ERR56-a, CERT_CPP-ERR57-a, CERT_CPP-EXP54-a, CERT_CPP-EXP55-a, CERT_CPP-EXP58-a, CERT_CPP-FIO50-a, CERT_CPP-FIO51-a, CERT_CPP-MEM50-a, CERT_CPP-OOP50-c, CERT_CPP-OOP50-d, CERT_CPP-STR51-a |
Coding Conventions | CODSTA-16, CODSTA-30, CODSTA-63, CODSTA-65, CODSTA-69 |
Coding Conventions for C++ | CODSTA-CPP-11, CODSTA-CPP-53, CODSTA-CPP-66 |
Exceptions | EXCEPT-01 |
High Integrity C++ | HICPP-12_4_1-b, HICPP-12_4_1-c, HICPP-18_3_1-a, HICPP-5_2_1-c, HICPP-5_4_1-a, HICPP-5_4_1-c, HICPP-5_6_1-a, HICPP-7_1_2-a, HICPP-8_4_1-b |
Joint Strike Fighter | JSF-151.1, JSF-185 |
MISRA C 2004 | MISRA2004-11_5, MISRA2004-20_2_a, MISRA2004-20_2_b |
MISRA C++ 2008 | MISRA2008-0_3_1_b, MISRA2008-15_5_3, MISRA2008-15_5_3_b, MISRA2008-2_13_5, MISRA2008-4_5_3, MISRA2008-5_0_21, MISRA2008-5_2_4, MISRA2008-5_2_5, MISRA2008-5_2_8, MISRA2008-7_1_1 |
MISRA C 2012 (Legacy) | MISRA2012-DIR-4_13_a, MISRA2012-DIR-4_13_b, MISRA2012-DIR-4_13_e, MISRA2012-DIR-4_1_b, MISRA2012-RULE-11_8, MISRA2012-RULE-1_3_c, MISRA2012-RULE-21_2_b, MISRA2012-RULE-21_2_c, MISRA2012-RULE-22_1, MISRA2012-RULE-22_2_a, MISRA2012-RULE-22_6, MISRA2012-RULE-7_4 |
MISRA C 2012 | MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_13-a, MISRAC2012-DIR_4_13-b, MISRAC2012-DIR_4_13-e, MISRAC2012-RULE_11_8-a, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_21_2-b, MISRAC2012-RULE_21_2-c, MISRAC2012-RULE_22_1-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_7_4-a |
Memory and Resource Management | MRM-40 |
Possible Bugs | PB-27, PB-38, PB-44 |
以下のルールの出力メッセージが更新されました。そのため、以前に DTP で関連付けられたこれらのルールの抑制はもう利用できない場合があります。
- BD-PB-ARRAY
- BD-PB-CHECKRET
- BD-PB-OVERFARRAY
- BD-PB-PTRARR
- BD-PB-ZERO
- BD-TRS-MLOCK
- NAMING-HN-*
BD カテゴリ ルールの以前のメッセージおよび抑制を復元できます。「C/C++test を新しいバージョンにアップグレードした後、一部のルールの抑制が DTP で使用できない場合」を参照してください。