このリリースでは、新規コンパイラのサポートに重点が置かれたほか、テスト コンフィギュレーションの追加および拡張を含むコンプライアンス パックが導入されました。

サポート環境

新しいコンパイラのサポート

新たに以下のコンパイラがサポートされました。


コンパイラ名

コンパイラ略称

Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.0vxtc_6_0
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 6.2vxtc_6_2
ARM Compiler 6.6armclang_6_6
ARM Compiler 6.9armclang_6_9
Clang C/C++ Compiler v 3.9clang_3_9
Clang C/C++ Compiler v 4.0clang_4_0
Clang C/C++ Compiler v 5.0clang_5_0
Clang C/C++ Compiler v 6.0clang_6_0
Freescale CodeWarrior C/C++ Compiler v. 6.0 for ColdFirecwcf_6_0
GCC for Tricore 4.9.xtricoregcc_4_9
GNU GCC 7.x1gcc_7
GNU GCC 7.x (x86_64)1gcc_7-64
Green Hills Software Compiler for ARM v. 2014.1.xghsarm_2014_1
Green Hills Software Compiler for ARM v. 2017.5.xghsarm_2017_5
Green Hills Software Compiler for ARM64 v. 2014.1.xghsarm64_2014_1
Green Hills Software Compiler for ARM64 v. 2017.5.xghsarm64_2017_5
Green Hills Software Compiler for V850 v. 2013.5.xghsv850_2013_5
Green Hills Software Compiler for V850 v. 2014.1.xghsv850_2014_1
Green Hills Software Compiler for V850 v. 2017.5.xghsv850_2017_5
IAR Compiler for ARM v. 8.20.xiccarm_8_20
IAR Compiler for RX v. 3.10.xiccrx_3_10
Intel(R) C++ Compiler v 18.0intelicc_18_0
QNX GCC 5.xqcc_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.xtiarmgcc_7
TI ARM C/C++ Compiler v18.1tiarm_18_1
TI MSP430 C/C++ Compiler GNU GCC 6.xtimsp430gcc_6
TI MSP430 C/C++ Compiler v18.1timsp430_18_1
TI TMS320C2000 C/C++ Compiler v16.9tic2000_16_9
TI TMS320C2000 C/C++ Compiler v18.1tic2000_18_1
TI TMS320C6x C/C++ Compiler v8.2tic6000_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
  • Joint Strike Fighter
Automotive Pack
  • AUTOSAR C++14 Coding Guidelines
  • HIS Source Code Metrics
  • High Integrity C++
  • MISRA C 1998
  • MISRA C 2004
  • MISRA C 2012
  • MISRA C++ 2008
Medical Devices Pack
  • Recommended Rules for FDA (C)
  • Recommended Rules for FDA (C++)
Security Pack
  • CWE SANS Top 25
  • OWASP Top 10 2017
  • Payment Card Industry Data Security Standard
  • SEI CERT C Guidelines
  • Security Rules
  • UL 2900

(info) コンプライアンス パックを利用するには、専用のライセンス機能がアクティブ化されている必要があります。コンプライアンス パックのライセンスの詳細については、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 を推進するために作成されたカスタム テスト コンフィギュレーションは、自動的にこのカテゴリを参照するため、更新の必要はありません。

(warning) 上記の変更は、ルールの実装には影響を与えません。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-40384CODSTA-37 ルールの見直し: 浮動小数点型定数が検出されない
CPP-40388

テスト ケース エディター管理のテスト ケースで、最初の #if 0 の前に #endif があると、StringIndexOutOfBounds 例外がスローされる

CPP-40402RS232 共通トランスポートの実装でメモリ リーク
CPP-40405

ルール MISRA-028 (JSF-140) が、パラメーターの宣言で使用されている register キーワードに対して違反をレポートしない

CPP-40566

RuleWizard で、'__m128i' ビルトイン型のパラメーターを 2 個以上持つ関数の 'fullname' プロパティが空の文字列を返す

CPP-40573

ルール INIT-15 が集約初期化されたメンバーを持つ構造体に対して違反を誤検出する

CPP-40574LD_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-40719C++14 モードで constexpr テンプレート特殊化が正しく再構成されない
CPP-40760CODE ステップ内のブロック コメントがコンパイル エラーの原因になる場合がある
CPP-40761

テスト スイートの説明で波括弧 '{' が使用されていると、テスト スイート データが壊れる

CPP-40765

niclang_3_3 でのパース エラー - error: expected a ";"

CPP-40780

error: "operator=" has already been declared in the current scope

CPP-40796OPT-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-41045MISRA2004-14_2 (MISRA2012-RULE-2_2_a) が void 型へのキャストに対して違反を誤検出する

CPP-41047

静的解析では multiThread オプションが有効にならない
CPP-41048

Tasking コードのインストゥルメント時に、C++test が多数の誤った警告をレポートする

CPP-41178

cpptestDebug 設定プロパティに誤った値を指定すると、テスト ケースのデバッグ時にリンカー エラーが発生する場合がある

CPP-41239JSF-138_b ルールは const オブジェクトの定義に対して違反をレポートするべきではない
CPP-41246MISRA2012-RULE-21_6 (CODSTA-110) が stdio.h API の多くに対してエラーを誤検出する
CPP-41332

C++test Engines の -fail コマンド

FA-5903

BD-SECURITY-INTOVERF ルールのメッセージが正確ではない (誤った式がオーバーフローの可能性としてレポートされる)

FA-5906BD-SECURITY-INTOVERF オーバーフローの可能性がある値を使用したポインター算術によって得られた ptr の使用をレポートする際、表現/メッセージが不正確
FA-5994BD.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.2ads_1_2
Borland C++ Compiler 5.6.x for Win32bcc32_5_6
CodeGear C++ Compiler 5.9.x for Win32bcc32_5_9
Wind River Diab 5.0diab_5_0
Wind River Diab 5.5.xdiab_5_5
Wind River Diab 5.6.xdiab_5_6
eCosCentric GCC 3.4.xecosgcc_3_4
Microsoft Embedded Visual C++ 4.0evc_4_0
Microsoft Visual C++ 8.0 for Windows Mobileevc_8_0
Microsoft Visual C++ 9.0 for Windows Mobileevc_9_0
GNU GCC 2.9.xgcc_2_9
GNU GCC 3.2.xgcc_3_2
GNU GCC 3.3.xgcc_3_3
GNU GCC 3.3.x (x86_64)gcc_3_3-64
GNU GCC 3.4.xgcc_3_4
GNU GCC 3.4.x (x86_64)gcc_3_4-64
Green Hills Software Compiler for V850 v. 3.4ghs_3_4
Green Hills Software Compiler Native v. 4.0.xghs_4_0
IAR Compiler for MSP430 v. 4.2xicc430_4_2
IAR Compiler for MSP430 v. 5.3xicc430_5_3
IAR Compiler for ARM v. 5.3xiccarm_5_3
IAR Compiler for ARM v. 5.4xiccarm_5_4
IAR Compiler for ARM v. 5.5xiccarm_5_5
Altera Nios II 5.1 b73 GCC 3.4.xnios2gcc_3_4
Altera Nios GCC 2.9niosgcc_2_9
QNX GCC 2.9.xqcc_2_9
QNX GCC 3.3.xqcc_3_3
ARM RealView 2.2rvct_2_2
ARM RealView 3.0rvct_3_0
ARM RealView 3.1rvct_3_1
ARM RealView 3.1 for uVisionrvct_3_1_uV
ARM RealView 4.0rvct_4_0
ARM RealView 4.0 for uVisionrvct_4_0_uV
STMicroelectronics ST20st20_2_2
STMicroelectronics ST40st40_3_1
TI TMS470 C/C++ Compiler v4.9.xtiarm_4_9
TI ARM C/C++ Compiler v5.0.xtiarm_5_0
TI TMS320C2000 C/C++ Compiler v4.1tic2000_4_1
TI TMS320C2000 C/C++ Compiler v5.2tic2000_5_2
TI TMS320C2000 C/C++ Compiler v6.0tic2000_6_0
TI TMS320C54x C/C++ Compiler v4.2tic54x_4_2
TI TMS320C55x C/C++ Compiler v4.3tic55x_4_3
TI TMS320C6x C/C++ Compiler v5.1tic6000_5_1
TI TMS320C6x C/C++ Compiler v6.0tic6000_6_0
TI TMS320C6x C/C++ Compiler v6.1tic6000_6_1
TI TMS320C6x C/C++ Compiler v7.0tic6000_7_0
TI TMS320C6x C/C++ Compiler v7.2tic6000_7_2
TI MSP430 C/C++ Compiler v3.2timsp430_3_2
Microsoft Visual C++ 6.0vc_6_0
Microsoft Visual C++ 7.0vc_7_0
Microsoft Visual C++ 7.1vc_7_1
Microsoft Visual C++ 8.0vc_8_0
Microsoft Visual C++ 8.0 (x64)vc_8_0-64
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 2.5vxtc_2_5
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.3vxtc_3_3
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.4vxtc_3_4
Altium TASKING Vx-toolset for TriCore C/C++ Compiler 3.5vxtc_3_5
Wind River EGCS 2.9wregcs_2_9
Wind River GCC 2.9wrgcc_2_9

新規ルール

以下のルールが追加されました。

ルール ID

ヘッダー

BD-PB-DNMPTRrealloc() を呼び出してオブジェクトのアラインメントを変更してはならない
BD-PB-EXITHAN終了ハンドラーを適切に定義する
BD-PB-FGETSfgets() または fgetws() が失敗した場合、文字列をリセットする
BD-PB-FSETPOSfgetpos() から返された値だけを fsetpos() に使用する
BD-PB-SIGHANシグナル ハンドラーを適切に定義する
BD-PB-SIGRETURN計算例外シグナル ハンドラーから return しない
BD-PB-STDEXC作成された std::exception オブジェクトを必ずスローする
BD-PB-STREAMINOUT間にフラッシュまたは位置付けの処理を呼び出さずに交互にストリームの入力と出力を行ってはならない
BD-PB-SUBSEQFRWDstd::forward に渡した引数を後で使用してはならない
BD-PB-VLASIZE可変長配列のサイズが有効範囲内であることを確認する
BD-SECURITY-LOG未検証のバイナリ データをログ記録メソッドに渡さない
BD-TRS-FRCファイル アクセス時の競合状態を避ける
BD-TRS-JOINDETACHすでに結合または切り離しされたスレッドを結合または切り離ししない
CODSTA-191不正に再開される可能性がある関数をループに入れる
CODSTA-192サイズ 0 または 1 の配列を構造体の最後のメンバーにするべきではない
CODSTA-193可変長配列メンバーを含む構造体は動的に割り当てる
CODSTA-194不正に失敗する可能性がある関数をループに入れる
CODSTA-1951 つの式の中で 2 回アトミックな変数を参照しない
CODSTA-196関数呼び出しの結果内の配列にアクセスしない
CODSTA-198浮動小数点型の複合式の値は、より小さな型へのキャストだけが許される
CODSTA-MCPP-19参照修飾子 & を付けて代入演算子を宣言する
CODSTA-MCPP-20できるだけ raw ローカル ポインターではなくスマート ポインターを使用する
CODSTA-MCPP-21mutex に対して直接 lock() を呼び出さない
GLOBAL-ONEDEFINLINE複数の翻訳単位で使用されるインライン関数は 1 つのファイルでだけ宣言されなければならない
GLOBAL-ONEDEFTEMPL複数の翻訳単位で使用される関数テンプレートは 1 つのファイルでだけ宣言されなければならない
GLOBAL-ONEDEFTYPE複数の翻訳単位で使用される型は 1 つのファイルでだけ宣言されなければならない
INIT-16集成体または共用体の初期化は括弧に囲まれていなければならない
MRM-52RAII を使用してリソース リークを防止する
PB-71フレキシブルな配列メンバーを含む構造体のインスタンスをコピーしない
PB-72誤った型の引数を指定して va_arg を呼び出さない
PB-73符号なし整数定数式の評価は結果の型にはまるべきである
PREPROC-20#include ディレクティブのファイル名をファイルシステムのファイルに合わせる
PREPROC-21結果がユニバーサル文字名になる可能性があるトークンの連結を行わない
SECURITY-49固有の条件変数とともに 'cnd_signal()' 関数を使用する
TEMPL-15明示的にインスタンス化されるテンプレートを extern 宣言する

新規ルールは下記のコンプライアンス カテゴリにも追加されました。

ルール ID 接頭辞

カテゴリ

AUTOSARAUTOSAR C++14 Coding Guidelines
CERT_CSEI CERT C
HICPPHigh Integrity C++
MISRAC2012MISRA C 2012

更新されたルール

ルール カテゴリ

ルール ID

Flow AnalysisBD-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 ConventionsCODSTA-110, CODSTA-166_a, CODSTA-37, CODSTA-47, CODSTA-63, CODSTA-CPP-78
InitializationINIT-15
Joint Strike FighterJSF-138_a, JSF-138_b, JSF-140, JSF-187
MISRA C 1998MISRA-024, MISRA-028
MISRA C 2004MISRA2004-14_2, MISRA2004-8_11
MISRA C++ 2008MISRA2008-0_1_3_b, MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-5_0_21, MISRA2008-9_3_3
MISRA C 2012MISRA2012-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 ManagementMRM-09, MRM-20
Object OrientedOOP-07
OptimizationOPT-06



  • No labels