このリリースでは、新規コンパイラのサポートに重点が置かれたほか、テスト コンフィギュレーションの追加および拡張を含むコンプライアンス パックが導入されました。 サポート環境新しいコンパイラのサポート新たに以下のコンパイラがサポートされました。
コンパイラは以下のサポート レベルに分類されます。
現在サポートされているコンパイラについては「コンパイラ」を参照してください。
新規 IDE以下の IDE のサポートが追加されました。
サポート対象から削除された環境サポートされなくなった環境については、「サポート対象から削除された環境」を参照してください。
|
コンプライアンス パック | テスト コンフィギュレーション |
---|---|
Automotive & Security Pack |
|
Security Pack |
|
Functional Safety Pack |
|
コンプライアンス パックを利用するには、専用のライセンス機能がアクティブ化されている必要があります。コンプライアンス パックのライセンスの詳細については、Parasoft サポートにお問い合わせください。
以下のビルトイン テスト コンフィギュレーションが追加されました。
AUTOSAR C++14 Coding Guidelines
High Integrity C++
以下のテスト コンフィギュレーションは、静的解析カテゴリからコンプライアンス パックに移動されました (「コンプライアンス パック」を参照)。
MISRA C 2012 ビルトイン コンフィギュレーションで有効だったルールは、別のカテゴリにグループ化され、新しい ID が付与されています。これにより、以前に行われた抑制に影響が出る可能性があります。詳細については「MISRA C 2012 ルール」を参照してください。
Parasoft's Recommended FDA C++ Phase 1、2、3 は以下のテスト コンフィギュレーションに置き換えられました。
MISRA C テスト コンフィギュレーションは、MISRA C 1998 という名前に変更されました。
以下のテスト コンフィギュレーションは削除されました。
C/C++test に付属しているテスト コンフィギュレーションの一覧は「ビルトイン テスト コンフィギュレーション」を参照してください。
このリリースでは、さらに多くのコンプライアンス標準をカバーする静的解析ルールが追加されました。追加または更新されたルールの一覧は「新規ルール」および「更新されたルール」を参照してください。
MISRA C 2012 ルール
結果の確認を容易にし、Parasoft MISRA C 2012 コンプライアンス パックとの互換性を確保するため、MISRA C 2012 標準を推進するルールには新しいルール ID が付与され、MISRA C 2012 というカテゴリでグループ化されました。
上記の変更は、ルールの実装には影響を与えません。MISRA C 2012 ルール カテゴリと MISRA C 2012 (Legacy) ルール カテゴリの実装は同一です。
スタブ コールバック フレームワークを使用すると、テスト ケース エディターの UI から、またはテスト ケースのソース コードを手動で変更することによって、テスト ケース固有のスタブの動作を指定できます。テスト ケース実行時にスタブが呼び出されるたびに実行される固有のスタブ ロジックを定義できます。
動的スタブ設定のスタブ API は非推奨になり、デフォルトでは無効化されています。
詳細については、「動的スタブの設定」を参照してください。
テスト ケース エディターでのテスト スイートおよびテスト ケースの変更が容易になりました。
詳細については「テスト ケース エディターによるテスト スイートとテスト ケースの追加」を参照してください。
通常のレポートにリンクされた Test Execution Details レポートを生成できます。Test Execution Details レポートには、テスト実行に関する追加情報が表示されます。特にセーフティ クリティカルなアプリケーションを開発するチームにとって便利なレポートです。「レポートの種類」を参照してください。
カバレッジの詳細レポートを生成するオプションは、[レポート] 設定ページから [テスト コンフィギュレーション] ページに移動されました。[実行] > [実行時] > [次の詳細カバレッジ レポートが生成されました: [カバレッジ メトリクス]] を参照してください。
Explicit Template Instance
ノードおよびそのプロパティ - InitializerInClass
プロパティ - ReferenceQualifier
プロパティ解決されたバグ/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 はサポートされなくなりました。
以下のコンパイラはサポートされなくなりました (現在サポートされているコンパイラの詳細は「コンパイラ」を参照してください)。
コンパイラ名 | コンパイラ略称 |
---|---|
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 |
このリリースに関する情報は、https://docs.parasoft.com/display/CPPDESKE1040/Updates+in+10.4.0 を参照してください。 |