このリリースでは、新規コンパイラのサポートに重点が置かれたほか、テスト コンフィギュレーションの追加および拡張を含むコンプライアンス パックが導入されました。
サポート環境
新しいコンパイラのサポート
新たに以下のコンパイラがサポートされました。
コンパイラ名 | コンパイラ略称 |
---|---|
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.0 | vxtc_6_0 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.2 | vxtc_6_2 |
ARM Compiler 6.6 | armclang_6_6 |
ARM Compiler 6.9 | armclang_6_9 |
Clang C/C++ Compiler v 3.9 | clang_3_9 |
Clang C/C++ Compiler v 4.0 | clang_4_0 |
Clang C/C++ Compiler v 5.0 | clang_5_0 |
Clang C/C++ Compiler v 6.0 | clang_6_0 |
Freescale CodeWarrior C/C++ Compiler v. 6.0 for ColdFire | cwcf_6_0 |
GCC for Tricore 4.9.x | tricoregcc_4_9 |
GNU GCC 7.x1 | gcc_7 |
GNU GCC 7.x (x86_64)1 | gcc_7-64 |
Green Hills Software Compiler for ARM v. 2014.1.x | ghsarm_2014_1 |
Green Hills Software Compiler for ARM v. 2017.5.x | ghsarm_2017_5 |
Green Hills Software Compiler for ARM64 v. 2014.1.x | ghsarm64_2014_1 |
Green Hills Software Compiler for ARM64 v. 2017.5.x | ghsarm64_2017_5 |
Green Hills Software Compiler for V850 v. 2013.5.x | ghsv850_2013_5 |
Green Hills Software Compiler for V850 v. 2014.1.x | ghsv850_2014_1 |
Green Hills Software Compiler for V850 v. 2017.5.x | ghsv850_2017_5 |
IAR Compiler for ARM v. 8.20.x | iccarm_8_20 |
IAR Compiler for RX v. 3.10.x | iccrx_3_10 |
Intel(R) C++ Compiler v 18.0 | intelicc_18_0 |
QNX GCC 5.x | qcc_5 |
QNX GCC 5.x (ARM) | qccarm_5 |
QNX GCC 5.x (ARM64) | qccarm_5-64 |
QNX GCC 5.x (x86-64) | qcc_5-64 |
TI ARM C/C++ Compiler GNU GCC 7.x | tiarmgcc_7 |
TI ARM C/C++ Compiler v18.1 | tiarm_18_1 |
TI MSP430 C/C++ Compiler GNU GCC 6.x | timsp430gcc_6 |
TI MSP430 C/C++ Compiler v18.1 | timsp430_18_1 |
TI TMS320C2000 C/C++ Compiler v16.9 | tic2000_16_9 |
TI TMS320C2000 C/C++ Compiler v18.1 | tic2000_18_1 |
TI TMS320C6x C/C++ Compiler v8.2 | tic6000_8_2 |
コンパイラは以下のサポート レベルに分類されます。
- Extended: サポートは拡張テストによって検証されており、セーフティ クリティカルなソフトウェア開発で使用できます。
- Standard: サポートは標準テストによって検証されており、セーフティ クリティカルではないソフトウェア開発で使用できます。
現在サポートされているコンパイラについては「コンパイラ」を参照してください。
1 GNU GCC または Microsoft Visual C++ コンパイラでの C++17 規格のサポートは限定的。 C/C++test は、C++17 拡張を有効にした最新バージョンの GNU GCC または Microsoft Visual C++ コンパイラを使用するコードを解析できない場合があります。また、解析結果が正確ではない可能性があります。C/C++test は以下の C++17 拡張をサポートしていません。
- P0017R1 Extension to aggregate initialization
- P0091R4 Template argument deduction for class templates
- P0127R2 Declaring non-type template parameters with auto
- P0195R2 Pack expansions in using-declarations
- P0522R0 Matching of template template-arguments excludes compatible templates
新規 IDE
以下の IDE のサポートが追加されました。
- Texas Instruments Code Composer Studio 7.4
- Texas Instruments Code Composer Studio 8.0
サポート対象から削除された環境
サポートされなくなった環境については、「サポート対象から削除された環境」を参照してください。
コンプライアンス パック
このリリースでは、業界固有のコンプライアンス標準およびプラクティスを推進するのに役立つテスト コンフィギュレーションをただちに利用可能なコンプライアンス パックが導入されました。コンプライアンス パックは、特定のコンプライアンス分野に合わせて調整されたC/C++test の幅広いテスト機能を利用します。
以下のコンプライアンス パックがあります。
コンプライアンス パック | テスト コンフィギュレーション |
---|---|
Aerospace Pack |
|
Automotive Pack |
|
Medical Devices Pack |
|
Security Pack |
|
コンプライアンス パックを利用するには、専用のライセンス機能がアクティブ化されている必要があります。コンプライアンス パックのライセンスの詳細については、Parasoft サポートにお問い合わせください。
追加または更新されたテスト コンフィギュレーション
以下のビルトイン テスト コンフィギュレーションが追加されました。
AUTOSAR C++14 Coding Guidelines
High Integrity C++
- SEI CERT C Guidelines
- UL 2900
- OWASP Top 10 2017
以下のテスト コンフィギュレーションは、静的解析カテゴリからコンプライアンス パックに移動されました (「コンプライアンス パック」を参照)。
- Joint Strike Fighter → Aerospace Pack
- HIS Source Code Metrics → Automotive Pack
- MISRA C 1998 → Automotive Pack
- MISRA C 2004 → Automotive Pack
- MISRA C 2012 → Automotive Pack
- MISRA C++ 2008 → Automotive Pack
- CWE SANS Top 25 → Security Pack
- PCI Data Security Standard → Security Pack
- Security Rules → Security Pack
MISRA C 2012 ビルトイン コンフィギュレーションで有効だったルールは、別のカテゴリにグループ化され、新しい ID が付与されています。これにより、以前に行われた抑制に影響が出る可能性があります。詳細については「MISRA C 2012 Rules」を参照してください。
Parasoft's Recommended FDA C++ Phase 1、2、3 は以下のテスト コンフィギュレーションに置き換えられました。
- Recommended Rules for FDA (C)
- Recommended Rules for FDA (C++)
MISRA C テスト コンフィギュレーションは、MISRA C 1998 という名前に変更されました。
以下のテスト コンフィギュレーションは削除されました。
- OWASP Top 10 Security Vulnerabilities (replaced with OWASP Top 10 2017)
- CERT C Coding Standard (replaced with SEI CERT C Guidelines)
- ISO 26262 Recommended Rules
- DISA-STIG Coding Standard
- SAMATE Annex A Source Code Weaknesses
- CRules
C/C++test に付属しているテスト コンフィギュレーションの一覧は「Built-in Test Configurations」を参照してください。
追加または更新された解析ルール
このリリースでは、さらに多くのコンプライアンス標準をカバーする静的解析ルールが追加されました。追加または更新されたルールの一覧は「新規ルール」および「更新されたルール」を参照してください。
MISRA C 2012 ルール
結果の確認を容易にし、Parasoft MISRA C 2012 コンプライアンス パックとの互換性を確保するため、MISRA C 2012 標準を推進するルールには新しいルール ID が付与され、MISRA C 2012 というカテゴリでグループ化されました。
- MISRA C 2012 ビルトイン テスト コンフィギュレーションで有効だったルールの配置と ID が更新されました。これにより、DTP での抑制の方法および以前の抑制に影響が出る可能性があります。
- 後方互換性のため、以前の MISRA C 2012 ルールの配置および ID は、MISRA C 2012 (Legacy) カテゴリとして保存されています - 以前のバージョンの C/C++test で MISRA C 2012 Standard を推進するために作成されたカスタム テスト コンフィギュレーションは、自動的にこのカテゴリを参照するため、更新の必要はありません。
上記の変更は、ルールの実装には影響を与えません。MISRA C 2012 ルール カテゴリと MISRA C 2012 (Legacy) ルール カテゴリの実装は同一です。
その他の変更点
- DTP の機能とワークフローを利用するには、DTP 5.4.0 が必要です。
- DTP で「表示しない」とマークされた指摘事項は、抑制をシミュレートしなくなったため、実際の抑制に変換する必要があります。詳細については「DTP 5.4.0 Release Notes.」を参照してください。
- カバレッジ情報のマージ パラダイムが改善されたため、カバレッジ結果の値が増加する可能性があります。
解決済みのバグおよび FR
解決されたバグ/FR ID | 説明 |
---|---|
CPP-40357 | ルール MRM-20 は、ローカル ポインターの割り当てに対して違反をレポートするべきではない |
CPP-40380 | CppUnit との統合のドキュメント修正: CppTest_CppUnitResultsOutputter ではなく CppTest_CppUnitResultsListener を使用する |
CPP-40384 | CODSTA-37 ルールの見直し: 浮動小数点型定数が検出されない |
CPP-40388 | テスト ケース エディター管理のテスト ケースで、最初の #if 0 の前に #endif があると、StringIndexOutOfBounds 例外がスローされる |
CPP-40402 | RS232 共通トランスポートの実装でメモリ リーク |
CPP-40405 | ルール MISRA-028 (JSF-140) が、パラメーターの宣言で使用されている register キーワードに対して違反をレポートしない |
CPP-40566 | RuleWizard で、'__m128i' ビルトイン型のパラメーターを 2 個以上持つ関数の 'fullname' プロパティが空の文字列を返す |
CPP-40573 | ルール INIT-15 が集約初期化されたメンバーを持つ構造体に対して違反を誤検出する |
CPP-40574 | LD_LIBRARY_PATH が設定されていない場合に cpptest GUI がクラッシュする |
CPP-40578 | 冗長性に Normal または Low が設定されている場合、意図しない EDG 診断メッセージがコンソールに出力される |
CPP-40579 | 列挙型定数に対して CODSA-63 ルールがレポートされない |
CPP-40594 | 符号なしの定数式の場合、MisraCpp2008UnderlyingType プロパティが誤った型を返す |
CPP-40702 | ルール CODSTA-CPP-78 (MISRA2008-9_3_3) が const ではない関数を検出する |
CPP-40719 | C++14 モードで constexpr テンプレート特殊化が正しく再構成されない |
CPP-40760 | CODE ステップ内のブロック コメントがコンパイル エラーの原因になる場合がある |
CPP-40761 | テスト スイートの説明で波括弧 '{' が使用されていると、テスト スイート データが壊れる |
CPP-40765 | niclang_3_3 でのパース エラー - error: expected a ";" |
CPP-40780 | error: "operator=" has already been declared in the current scope |
CPP-40796 | OPT-06 の誤検出 |
CPP-40819 | proj_igo9_all.cpp のコード解析がコード 4 で終了する (cwc) |
CPP-40907 | internal error: assertion failed: gen_declaration: bad entity kind on source seq list (cp_gen_be.c, line 21265) |
CPP-40913 | Excel データ ソースに " が含まれているとテスト実行モジュールをコンパイルできない |
CPP-41045 | MISRA2004-14_2 (MISRA2012-RULE-2_2_a) が void 型へのキャストに対して違反を誤検出する |
CPP-41047 | 静的解析では multiThread オプションが有効にならない |
CPP-41048 | Tasking コードのインストゥルメント時に、C++test が多数の誤った警告をレポートする |
CPP-41178 | cpptestDebug 設定プロパティに誤った値を指定すると、テスト ケースのデバッグ時にリンカー エラーが発生する場合がある |
CPP-41239 | JSF-138_b ルールは const オブジェクトの定義に対して違反をレポートするべきではない |
CPP-41246 | MISRA2012-RULE-21_6 (CODSTA-110) が stdio.h API の多くに対してエラーを誤検出する |
CPP-41332 | C++test Engines の -fail コマンド |
FA-5903 | BD-SECURITY-INTOVERF ルールのメッセージが正確ではない (誤った式がオーバーフローの可能性としてレポートされる) |
FA-5906 | BD-SECURITY-INTOVERF オーバーフローの可能性がある値を使用したポインター算術によって得られた ptr の使用をレポートする際、表現/メッセージが不正確 |
FA-5994 | BD.EXCEPT.NP でコンストラクターを「null を受け取らないメソッド」として定義できない |
FA-6279 | BD-PB-CC の誤検出 |
FA-6280 | BD-RES-FREE ルールの違反検出漏れ |
FA-6402 | FA が iccarm の errno パターンを認識しない |
FA-6140 | 一部のルールで、flowanalysis.output.performance.info のレポートがパスをカウントしない場合がある |
サポート対象から削除された環境
IDE
以下の IDE はサポートされなくなりました。
- Eclipse 3.5-3.7
コンパイラ
以下のコンパイラはサポートされなくなりました (現在サポートされているコンパイラの詳細は「コンパイラ」を参照してください)。
コンパイラ名 | コンパイラ略称 |
---|---|
ARM Developer Suite 1.2 | ads_1_2 |
Borland C++ Compiler 5.6.x for Win32 | bcc32_5_6 |
CodeGear C++ Compiler 5.9.x for Win32 | bcc32_5_9 |
Wind River Diab 5.0 | diab_5_0 |
Wind River Diab 5.5.x | diab_5_5 |
Wind River Diab 5.6.x | diab_5_6 |
eCosCentric GCC 3.4.x | ecosgcc_3_4 |
Microsoft Embedded Visual C++ 4.0 | evc_4_0 |
Microsoft Visual C++ 8.0 for Windows Mobile | evc_8_0 |
Microsoft Visual C++ 9.0 for Windows Mobile | evc_9_0 |
GNU GCC 2.9.x | gcc_2_9 |
GNU GCC 3.2.x | gcc_3_2 |
GNU GCC 3.3.x | gcc_3_3 |
GNU GCC 3.3.x (x86_64) | gcc_3_3-64 |
GNU GCC 3.4.x | gcc_3_4 |
GNU GCC 3.4.x (x86_64) | gcc_3_4-64 |
Green Hills Software Compiler for V850 v. 3.4 | ghs_3_4 |
Green Hills Software Compiler Native v. 4.0.x | ghs_4_0 |
IAR Compiler for MSP430 v. 4.2x | icc430_4_2 |
IAR Compiler for MSP430 v. 5.3x | icc430_5_3 |
IAR Compiler for ARM v. 5.3x | iccarm_5_3 |
IAR Compiler for ARM v. 5.4x | iccarm_5_4 |
IAR Compiler for ARM v. 5.5x | iccarm_5_5 |
Altera Nios II 5.1 b73 GCC 3.4.x | nios2gcc_3_4 |
Altera Nios GCC 2.9 | niosgcc_2_9 |
QNX GCC 2.9.x | qcc_2_9 |
QNX GCC 3.3.x | qcc_3_3 |
ARM RealView 2.2 | rvct_2_2 |
ARM RealView 3.0 | rvct_3_0 |
ARM RealView 3.1 | rvct_3_1 |
ARM RealView 3.1 for uVision | rvct_3_1_uV |
ARM RealView 4.0 | rvct_4_0 |
ARM RealView 4.0 for uVision | rvct_4_0_uV |
STMicroelectronics ST20 | st20_2_2 |
STMicroelectronics ST40 | st40_3_1 |
TI TMS470 C/C++ Compiler v4.9.x | tiarm_4_9 |
TI ARM C/C++ Compiler v5.0.x | tiarm_5_0 |
TI TMS320C2000 C/C++ Compiler v4.1 | tic2000_4_1 |
TI TMS320C2000 C/C++ Compiler v5.2 | tic2000_5_2 |
TI TMS320C2000 C/C++ Compiler v6.0 | tic2000_6_0 |
TI TMS320C54x C/C++ Compiler v4.2 | tic54x_4_2 |
TI TMS320C55x C/C++ Compiler v4.3 | tic55x_4_3 |
TI TMS320C6x C/C++ Compiler v5.1 | tic6000_5_1 |
TI TMS320C6x C/C++ Compiler v6.0 | tic6000_6_0 |
TI TMS320C6x C/C++ Compiler v6.1 | tic6000_6_1 |
TI TMS320C6x C/C++ Compiler v7.0 | tic6000_7_0 |
TI TMS320C6x C/C++ Compiler v7.2 | tic6000_7_2 |
TI MSP430 C/C++ Compiler v3.2 | timsp430_3_2 |
Microsoft Visual C++ 6.0 | vc_6_0 |
Microsoft Visual C++ 7.0 | vc_7_0 |
Microsoft Visual C++ 7.1 | vc_7_1 |
Microsoft Visual C++ 8.0 | vc_8_0 |
Microsoft Visual C++ 8.0 (x64) | vc_8_0-64 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 2.5 | vxtc_2_5 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.3 | vxtc_3_3 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.4 | vxtc_3_4 |
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.5 | vxtc_3_5 |
Wind River EGCS 2.9 | wregcs_2_9 |
Wind River GCC 2.9 | wrgcc_2_9 |
新規ルール
以下のルールが追加されました。
ルール ID | ヘッダー |
---|---|
BD-PB-DNMPTR | realloc() を呼び出してオブジェクトのアラインメントを変更してはならない |
BD-PB-EXITHAN | 終了ハンドラーを適切に定義する |
BD-PB-FGETS | fgets() または fgetws() が失敗した場合、文字列をリセットする |
BD-PB-FSETPOS | fgetpos() から返された値だけを fsetpos() に使用する |
BD-PB-SIGHAN | シグナル ハンドラーを適切に定義する |
BD-PB-SIGRETURN | 計算例外シグナル ハンドラーから return しない |
BD-PB-STDEXC | 作成された std::exception オブジェクトを必ずスローする |
BD-PB-STREAMINOUT | 間にフラッシュまたは位置付けの処理を呼び出さずに交互にストリームの入力と出力を行ってはならない |
BD-PB-SUBSEQFRWD | std::forward に渡した引数を後で使用してはならない |
BD-PB-VLASIZE | 可変長配列のサイズが有効範囲内であることを確認する |
BD-SECURITY-LOG | 未検証のバイナリ データをログ記録メソッドに渡さない |
BD-TRS-FRC | ファイル アクセス時の競合状態を避ける |
BD-TRS-JOINDETACH | すでに結合または切り離しされたスレッドを結合または切り離ししない |
CODSTA-191 | 不正に再開される可能性がある関数をループに入れる |
CODSTA-192 | サイズ 0 または 1 の配列を構造体の最後のメンバーにするべきではない |
CODSTA-193 | 可変長配列メンバーを含む構造体は動的に割り当てる |
CODSTA-194 | 不正に失敗する可能性がある関数をループに入れる |
CODSTA-195 | 1 つの式の中で 2 回アトミックな変数を参照しない |
CODSTA-196 | 関数呼び出しの結果内の配列にアクセスしない |
CODSTA-198 | 浮動小数点型の複合式の値は、より小さな型へのキャストだけが許される |
CODSTA-MCPP-19 | 参照修飾子 & を付けて代入演算子を宣言する |
CODSTA-MCPP-20 | できるだけ raw ローカル ポインターではなくスマート ポインターを使用する |
CODSTA-MCPP-21 | mutex に対して直接 lock() を呼び出さない |
GLOBAL-ONEDEFINLINE | 複数の翻訳単位で使用されるインライン関数は 1 つのファイルでだけ宣言されなければならない |
GLOBAL-ONEDEFTEMPL | 複数の翻訳単位で使用される関数テンプレートは 1 つのファイルでだけ宣言されなければならない |
GLOBAL-ONEDEFTYPE | 複数の翻訳単位で使用される型は 1 つのファイルでだけ宣言されなければならない |
INIT-16 | 集成体または共用体の初期化は括弧に囲まれていなければならない |
MRM-52 | RAII を使用してリソース リークを防止する |
PB-71 | フレキシブルな配列メンバーを含む構造体のインスタンスをコピーしない |
PB-72 | 誤った型の引数を指定して va_arg を呼び出さない |
PB-73 | 符号なし整数定数式の評価は結果の型にはまるべきである |
PREPROC-20 | #include ディレクティブのファイル名をファイルシステムのファイルに合わせる |
PREPROC-21 | 結果がユニバーサル文字名になる可能性があるトークンの連結を行わない |
SECURITY-49 | 固有の条件変数とともに 'cnd_signal()' 関数を使用する |
TEMPL-15 | 明示的にインスタンス化されるテンプレートを extern 宣言する |
新規ルールは下記のコンプライアンス カテゴリにも追加されました。
ルール ID 接頭辞 | カテゴリ |
---|---|
AUTOSAR | AUTOSAR C++14 Coding Guidelines |
CERT_C | SEI CERT C |
HICPP | High Integrity C++ |
MISRAC2012 | MISRA C 2012 |
更新されたルール
ルール カテゴリ | ルール ID |
---|---|
Flow Analysis | BD-API-CTYPE, BD-EXCEPT-NP, BD-PB-CC, BD-PB-EXCEPT, BD-PB-INTOVERF, BD-PB-SWITCH, BD-PB-VOVR, BD-RES-FREE, BD-RES-LEAKS, BD-SECURITY-INTOVERF, BD-TRS-ARG, BD-TRS-LOCK, BD-TRS-MLOCK, BD-TRS-ORDER |
Coding Conventions | CODSTA-110, CODSTA-166_a, CODSTA-37, CODSTA-47, CODSTA-63, CODSTA-CPP-78 |
Initialization | INIT-15 |
Joint Strike Fighter | JSF-138_a, JSF-138_b, JSF-140, JSF-187 |
MISRA C 1998 | MISRA-024, MISRA-028 |
MISRA C 2004 | MISRA2004-14_2, MISRA2004-8_11 |
MISRA C++ 2008 | MISRA2008-0_1_3_b, MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-5_0_21, MISRA2008-9_3_3 |
MISRA C 2012 | MISRA2012-DIR-4_13_a, MISRA2012-DIR-4_13_b, MISRA2012-DIR-4_13_d, MISRA2012-DIR-4_14_b, MISRA2012-RULE-14_3_zc, MISRA2012-RULE-14_3_zd, MISRA2012-RULE-1_3_c, MISRA2012-RULE-21_13, MISRA2012-RULE-21_6, MISRA2012-RULE-22_1, MISRA2012-RULE-22_2_a, MISRA2012-RULE-22_5_a, MISRA2012-RULE-22_6, MISRA2012-RULE-2_2_a, MISRA2012-RULE-8_8 |
Memory and Resource Management | MRM-09, MRM-20 |
Object Oriented | OOP-07 |
Optimization | OPT-06 |