Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space ENGINES1031 and version 10.4.3
Scroll Ignore



このリリースでは、新規コンパイラおよび IDE のサポートが重点的に行われたほか、MISRA 2008 などのコーディング スタンダードのサポートが拡張されました。

新規コンパイラのサポート

コンパイラのサポート

  • Microsoft Visual C++ 2017 (バージョン 14.10 および 14.11)1x/ 2017
  • WindRiver GCC 4.8.x (静的解析のみ)
  • IAR Compiler for ARM C/C++ Compiler 8.11.x

IDE サポートの拡張

  • Eclipse 4.7 のサポート7 のサポート 
  • Visual Studio 2017 のサポート

C/C++test DTP Engine および Parasoft DTP Plugin for Visual Studio は Visual Studio 2017 との統合をサポートします。C/C++test Desktop でのVisual での Visual Studio 2017 サポートは次のバージョン 10.3.4 で行われます。

テスト コンフィギュレーション操作ワークフローの拡張

C/C++test をデスクトップで使用する際にテスト コンフィギュレーションを操作するのが容易になりました。既存のテスト コンフィギュレーションを DTP 上で複製およびカスタマイズできるほか、IDE の設定ページからテスト コンフィギュレーションを実行できます。 詳細については「Creating Custom Test Configurations」および「Setting the Active Test Configuration」を参照してください。

Enhancements to Static Analysis

静的解析の拡張

このリリースでは、MISRA In this release, we've added new static analysis rules to cover the MISRA C++ 2008 ; see を対象とする新しい静的解析ルールが追加されました。「New Code Analysis Rules. The severity levels for MISRA 」を参照してください。MISRA C++ 2008 rules have been updated:ルールの重要度が変更されました。

  • Required → Severity 重要度 2
  • Advisory → Severity 重要度 4
  • Document → Severity 重要度 5

Flow Analysis has been extended with support for Cフロー解析が拡張され、C++11 Thread API がサポートされました (for BD-TRS rules) and new configuration options that allow you to:ルール)。また、新規コンフィギュレーション オプションにより、以下が可能になりました

  • noreturn 属性でターミネーター/関数を無効化する
  • [変数の値が使用されていないパスが少なくとも 1 つある場合にレポートする] オプションによる
  • disable terminators / functions with the noreturn attribute
  • parameterize the BD-PB-VOVR rule with the "Report when there is at least one path where the value of the variable is not used" option; see the rule documentation for details.
  • disable reporting violations whose paths pass via inline assembly code
  • enable or disable all tainted data sources in the rule parameters

The RuleWizard Module has been extended with the following nodes and properties:

  • IsFinal - returns true if function or class was declared with 'final' or 'sealed' specifier
  • IsExplicitFinal - returns true if function or class was declared with 'final' specifier
  • IsSealed - returns true if function or class was declared with 'sealed' specifier
  • ルールのパラメータライズ。詳細はルールのドキュメントを参照してください。
  • インライン アセンブリ コードを通るパスに対する違反のレポートを無効化する
  • ルール パラメーターですべての汚染されたデータ ソースを有効化または無効化する

RuleWizard モジュールが拡張され、以下のノードおよびプロパティが追加されました。

  • IsFinal - 関数またはクラスが 'final' または 'sealed' 指定子付きで宣言されている場合、true を返します。
  • IsExplicitFinal - 関数またはクラスが 'final' 指定子付きで宣言されている場合、true を返します。
  • IsSealed - 関数またはクラスが 'sealed' 指定子付きで宣言されている場合、true を返します。

詳細については『RuleWizard 10.3.3 ユーザーズ ガイド』を参照してください。See RuleWizard 10.3.3 User's Guide for more details.

Anchor
New Code Analysis Rules
New Code Analysis Rules
新規コード解析ルール

Rule ルール IDHeaderヘッダー
BD-PB-PTRARRA pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same arrayポインター オペランドと、そのオペランドを使用したポインター算術の結果であるポインターは、同じ配列の要素を指していなければならない
BD-TRS-CMFMake const member functions thread-safeメンバー関数をスレッドセーフにする
CODSTA-CPP-90Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header filesヘッダー ファイルで using ディレクティブおよび using 宣言 (クラス スコープまたは関数スコープの using 宣言を除く) を使用してはならない
CODSTA-CPP-91The overloaded binary operator should be implemented in terms of its corresponding compound assignment operatorオーバーロードされた二項演算子は対応する複合代入演算子を使って実装するべきである
CODSTA-CPP-92All accessible entity names within a multiple inheritance hierarchy should be unique多重継承階層内のすべてのアクセス可能な名前は一意でなければならない
GLOBAL-COMPATDECLSAll declarations of an object or function shall have compatible types1 つのオブジェクトまたは関数のすべての宣言は互換性のある型を持たなければならない
GLOBAL-EXCSPECDECLIf a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids例外指定付きで関数を宣言する場合、同じ関数の (他の翻訳単位にある) すべての宣言に同じ type-id のセットを付けて宣言しなければならない
GLOBAL-ONEDEFRULEThe One Definition Rule shall not be violated1 定義ルールに違反してはならない
GLOBAL-ONEFILEDECLA type, object or function that is used in multiple translation units shall be declared in one and only one file複数の翻訳単位で使用される型、オブジェクト、関数は 1 つのファイルでだけ宣言されなければならない
GLOBAL-ONEUSEVARA project shall not contain non-volatile POD variables having only one useプロジェクトに 1 回しか使用されない非 volatile POD 変数が含まれていてはならない
GLOBAL-TEMPLNOINSTAll class templates, function templates, class template member functions and class template static members shall be instantiated at least oneすべてのクラス テンプレート、関数テンプレート、クラス テンプレートのメンバー関数、クラス テンプレートの静的メンバーは、少なくとも 1 回インスタンス化されなければならない
GLOBAL-UNIQUETYPEDEFA typedef name (including qualification, if any) shall be a unique identifier名 (修飾子があれば修飾子も) は一意の識別子でなければならない
GLOBAL-UNUSEDTYPEA project shall not contain unused type declarationsプロジェクトに未使用の型宣言が含まれていてはならない
GLOBAL-UNUSEDVIRTPARAMThere shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override itvirtual 関数およびそれをオーバーライドするすべての関数には使用されない名前付きまたは無名のパラメーターがあってはならない
GLOBAL-VIRTBASECLASSA base class shall only be declared virtual if it is used in a diamond hierarchy基底クラスがダイアモンド型階層内で使われる場合にだけ、virtual として宣言する
MISRA2008-0_1_12There shall be no unused parameters (named or unnamed) in the set of parameters for a virtual function and all the functions that override itvirtual 関数およびそれをオーバーライドするすべての関数には使用されない名前付きまたは無名のパラメーターがあってはならない
MISRA2008-0_1_4A project shall not contain non-volatile POD variables having only one useプロジェクトに 1 回しか使用されない非 volatile POD 変数が含まれていてはならない
MISRA2008-0_1_5A project shall not contain unused type declarationsプロジェクトに未使用の型宣言が含まれていてはならない
MISRA2008-0_1_6Avoid unused values未使用の値を避ける
MISRA2008-0_1_9:All non-null statements shall either have at least one side-effect however executed or cause control flow to changeすべての空でない文は、どのように実行されても1つ以上の副作用を持つか、制御フローを変えなければならない
MISRA2008-0_3_1_aAvoid accessing arrays out of bounds配列の境界を超えてアクセスしてはならない
MISRA2008-0_3_1_bAvoid null pointer dereferencingポインターの間接参照を避ける
MISRA2008-0_3_1_cAvoid division by zeroゼロによる除算を避ける
MISRA2008-0_3_1_dAvoid buffer overflow due to defining incorrect format limits不正な書式指定子によるバッファー オーバーフローを避ける
MISRA2008-0_3_1_eAvoid overflow due to reading a not zero terminated stringゼロで終わっていない文字列の読み込みによるオーバーフローを避ける
MISRA2008-0_3_1_fDo not check for null after dereferencingnull チェックの前に間接参照しない
MISRA2008-0_3_1_gAvoid overflow when reading from a bufferバッファーからの読み取り時のオーバーフローを避ける
MISRA2008-0_3_1_hAvoid overflow when writing to a bufferバッファー書き込み時のオーバーフローを避ける
MISRA2008-0_3_1_iPointer arithmetic shall only be applied to pointers that address an array or array elementポインタ算術は配列または配列要素を指すポインタにのみ適用する
MISRA2008-0_3_1_j,>、>=,,= shall not be applied to objects of pointer type, except where they point to the same array、<、<= は、同じ配列を扱う場合を除き、ポインタ型に適用してはならない
MISRA2008-2_10_3A typedef name (including qualification, if any) shall be a unique identifier名 (修飾子があれば修飾子も) は一意の識別子でなければならない
MISRA2008-3_2_1All declarations of an object or function shall have compatible types1 つのオブジェクトまたは関数のすべての宣言は互換性のある型を持たなければならない
MISRA2008-3_2_2The One Definition Rule shall not be violated1 定義ルールに違反してはならない
MISRA2008-3_2_3A type, object or function that is used in multiple translation units shall be declared in one and only one file複数の翻訳単位で使用される型、オブジェクト、関数は 1 つのファイルでだけ宣言されなければならない

MISRA2008-3_2_4

An identifier with external linkage shall have exactly one external definition外部リンケージを持つ識別子は、外部定義を 1 つだけ持たなければならない
MISRA2008-5_0_16_aAvoid accessing arrays out of bounds配列の境界を超えてアクセスしてはならない
MISRA2008-5_0_16_bA pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same arrayポインター オペランドと、そのオペランドを使用したポインター算術の結果であるポインターは、同じ配列の要素を指していなければならない
MISRA2008-5_17_1The overloaded binary operator should be implemented in terms of its corresponding compound assignment operatorオーバーロードされた二項演算子は対応する複合代入演算子を使って実装するべきである
MISRA2008-5_19_1_aInteger overflow or underflow in constant expression in '+', '-', '*' operator演算子の定数式における整数オーバーフローまたはアンダーフロー
MISRA2008-5_19_1_bInteger overflow or underflow in constant expression in '' operator'<<' 演算子の定数式における整数オーバーフローまたはアンダーフロー
MISRA2008-7_2_1An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration列挙型を潜在型とする式は、列挙型の列挙子に対応する値だけを持つことができる
MISRA2008-7_3_6Using-directives and using-declarations (excluding class scope or function scope using-declarations) shall not be used in header filesヘッダー ファイルで using ディレクティブおよび using 宣言 (クラス スコープまたは関数スコープの using 宣言を除く) を使用してはならない
MISRA2008-10_1_2A base class shall only be declared virtual if it is used in a diamond hierarchy基底クラスがダイアモンド型階層内で使われる場合にだけ、virtual として宣言する
MISRA2008-10_2_1All accessible entity names within a multiple inheritance hierarchy should be unique多重継承階層内のすべてのアクセス可能な名前は一意でなければならない
MISRA2008-14_5_1Do not declare non-member generic functions in associated namespaces関連する名前空間に非メンバー ジェネリック関数を宣言しない
MISRA2008-14_6_2The function shall resolve to a function declared previously in the translation unit関数は、翻訳単位で事前に宣言されている関数に解決されなければならない
MISRA2008-14_7_1All class templates, function templates, class template member functions and class template static members shall be instantiated at least one.すべてのクラス テンプレート、関数テンプレート、クラス テンプレートのメンバー関数、クラス テンプレートの静的メンバーは、少なくとも 1 回インスタンス化されなければならない
MISRA2008-15_4_1If a function is declared with an exception-specification, then all declarations of the same function (in other translation units) shall be declared with the same set of type-ids例外指定付きで関数を宣言する場合、同じ関数の (他の翻訳単位にある) すべての宣言に同じ type-id のセットを付けて宣言しなければならない

MISRA2012-RULE-18_1_c

A pointer operand and any pointer resulting from pointer arithmetic using that operand shall both address elements of the same arrayポインター オペランドと、そのオペランドを使用したポインター算術の結果であるポインターは、同じ配列の要素を指していなければならない
PB-70An expression with enum underlying type shall only have values corresponding to the enumerators of the enumeration列挙型を潜在型とする式は、列挙型の列挙子に対応する値だけを持つことができる
TEMPL-13Do not declare non-member generic functions in associated namespaces関連する名前空間に非メンバー ジェネリック関数を宣言しない
TEMPL-14The function shall resolve to a function declared previously in the translation unit関数は、翻訳単位で事前に宣言されている関数に解決されなければならない

更新されたコード解析ルール

Scroll Table Layout
widths35%,65%

ルール カテゴリルール ID
フロー解析
Rule CategoryRule IDs
Flow AnalysisBD-PB-OVERFWR, BD-PB-OVERFRD, BD-PB-VOVR, BD-SECURITY-ARRAY, BD-TRS-LOCK, BD-TRS-TSHL
Coding ConventionsCODSTA-103, CODSTA-163_b
CommentsCOMMENT-13
InitializationINIT-06
Joint Strike FighterJSF-071_b, JSF-111, JSF-171, JSF-187, JSF-204_b
MISRA 2004MISRA2004-14_2, MISRA2004-15_1, MISRA2004-17_2, MISRA2004-17_3, MISRA2004-17_6_a
MISRA 2008MISRA2008-0_1_6, MISRA2008-0_1_9, MISRA2008-0_3_1_g, MISRA2008-0_3_1_h, MISRA2008-0_3_1_i, MISRA2008-0_3_1_j, MISRA2008-5_0_17, MISRA2008-5_0_18, MISRA2008-5_19_1_a, MISRA2008-5_19_1_b, MISRA2008-6_4_3_a, MISRA2008-6_4_4, MISRA2008-7_5_1, MISRA2008-7_5_2_a
MISRA 2012MISRA2012-DIR-4_1_g, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_1_i, MISRA2012-DIR-4_1_j, MISRA2012-DIR-4_13_d, MISRA2012-DIR-4_14_a, MISRA2012-RULE-1_3_d, MISRA2012-RULE-1_3_e, MISRA2012-RULE-1_3_m, MISRA2012-RULE-2_2_a, MISRA2012-RULE-3_2, MISRA2012-RULE-10_3_b, MISRA2012-RULE-12_4_a, MISRA2012-RULE-12_4_b, MISRA2012-RULE-16_1_b, MISRA2012-RULE-16_2, MISRA2012-RULE-18_2, MISRA2012-RULE-18_3, MISRA2012-RULE-18_6_a, MISRA2012-RULE-21_17_b
Possible BugsPB-11, PB-66_a, PB-66_b


解決済みのバグおよび FR

Bug
バグ/FR ID
Description
説明
CPP-18579
Rule
MISRA2012-RULE-10_3_b (CODSTA-163_b)
reports false positives
ルールが違反を誤検出する
CPP-36999base_from_member.hpp", line 136: error: expected a ")" ::new ((void*) 0) MemberType( static_cast<T&&>(x)...) 
CPP-38187
The rule
MISRA2004-17_6_a
reports false positive violation
ルールが違反を誤検出する
CPP-38241PB-11
incorrect behaviour
の誤った動作
CPP-38336MISRA2004-17_6_a-3
reporting a false positive
ルールが違反を誤検出する
CPP-38342
Rule
MISRA2004-15_1
throwing a false postive with 'default
ルールが default に違反を誤検出する
CPP-38589CDD
rules regression in
ルールの C++test 10.3.2 でのリグレッション (
Japanese only
日本語のみ)
CPP-38602
Add
RuleWizard ディクショナリに関数の C++11 "final"
specifier for function to RuleWizard dictionary
指定子を追加
CPP-39168
Cannot generate BDF using msbuild on Windows 7 
Windows 7 で msbuild を使用して BDF を生成できない 
CPP-39211
User rule may not be executed if there's a sub-rule (text rule) in the same directory
同じディレクトリにサブルール (テキスト ルール) があると、ユーザー ルールが実行されない場合がある
CPP-39356
Parse errors related to C++11 with
Keil for ARM v5.
x での C++11 に関連するパース エラー 
CPP-39405 INIT-06
false positive for default move constructor 
がデフォルトのムーブ コンストラクターに対して違反を誤検出する 
CPP-39407
double argument to
static_assert へのダブル引数
CPP-39409MISRA2012-RULE-7_1
false positive
の誤検出
CPP-39410MISRA2012-RULE-16_4_b
false positive
の違反誤検出
CPP-39415RVCT
compilers accept the big-letter
コンパイラが大文字の '--C99'
flag
を受け入れる
CPP-39495
Support for
IAR EWARM 8.x のサポート

Scroll Only

このリリースの詳細については このリリースについての情報は、https://docs.parasoft.com/display/CPPTEST1033/Updates+in+10.3.3 を参照してください。