メインコンテンツ

カスタム ルールのチェック (-custom-rules)

識別子の命名規則への準拠

説明

識別子の命名規則を定義し、それに対してコードをチェックします。

オプションの設定

以下のいずれかの方法を使用してオプションを設定します。

このオプションを使用する理由

このオプションを使用して、識別子が命名規則に従うようにします。命名規則を使用すると、名前から識別子の性質を容易に判断できるようになります。たとえば、構造体の命名規則を定義すると、識別子が構造体変数を表すかどうかを容易に示すことができます。

解析後、[解析結果のリスト] ペインに命名規則違反がリストされます。[ソース] ペインでは、Polyspace はすべての違反に対し、 シンボルを関連するキーワードまたは識別子に割り当てます。

命名規則を適用可能なタイプの完全なリストについては、カスタム コーディング ルールを参照してください。

設定

オン

Polyspace はコード内の識別子を、定義したテキスト パターンと照合します。テキスト パターンをカスタム コーディング ルール ファイルで定義します。コーディング ルール ファイルは次の方法で作成します。

  • カスタム ルール ウィザードを使用します。

    1. をクリックします。[チェッカーの選択] ウィンドウが開きます。

    2. 左側のペインで [カスタム] ノードが強調表示されます。右側のペインのノードを展開し、チェックするカスタム ルールを選択します。

    3. チェックするすべてのカスタム ルールに対して以下を実行します。

      1. [オン] を選択します。

      2. [規則] 列にルール違反があった場合に表示するエラー メッセージを入力します。

        たとえば、ルール 4.3 All struct fields must follow the specified pattern に「All struct fields must begin with s_」と入力します。このメッセージは次のような場合に [結果の詳細] ペインに表示されます。

        • [パターン]s_[A-Za-z0-9_]+ と指定する。

        • コードの構造体フィールドが s_ で始まっていない。

      3. [パターン] 列にテキスト パターンを入力します。

        たとえば、ルール 4.3 All struct fields must follow the specified pattern に「s_[A-Za-z0-9_]+」と入力します。struct フィールドが s_ で始まっていない場合、Polyspace によりルール 4.3 の違反が報告されます。

        パターンは Perl regex を使用して定義できます。たとえば、以下の式を使用できます。

        意味
        .改行以外の任意の単一の文字と一致
        [a-z0-9] a-z のセットにある任意の単一の文字か 0-9 のセットにある任意の単一の数字と一致
        [^a-e]a-e のセットにない任意の単一の文字と一致
        \d任意の単一の数字と一致
        \w任意の単一の英数字か _ と一致
        x?x の 0 回または 1 回の出現と一致
        x*x の 0 回以上の出現と一致
        x+x の 1 回以上の出現と一致

        頻度の高いパターンには、以下の regex を使用できます。

        • (?!__)[a-z0-9_]+(?!__) は、2 つのアンダースコアで開始および終了しないテキスト パターンに一致します。

          int __text; //Does not match
          int _text_; //Matches

        • [a-z0-9_]+_(u8|u16|u32|s8|s16|s32) は、特定の接尾辞で終了するテキスト パターンに一致します。

          int _text_; //Does not match
          int _text_s16; //Matches
          int _text_s33; // Does not match

        • [a-z0-9_]+_(u8|u16|u32|s8|s16|s32)(_b3|_b8)? は、特定の接尾辞およびオプションの 2 番目の接尾辞で終了するテキスト パターンに一致します。

          int _text_s16; //Matches
          int _text_s16_b8; //Matches

        Polyspace に対して、特定のパターンをチェックしたときにトリビアルなケースを報告しないように指示する場合は、そのトリビアルなケースのパターンを正規表現に追加します。

        たとえばルール 8.5 の "すべての浮動小数点定数は、指定されたパターンに従わなければなりません" の場合は、すべての浮動小数点定数の末尾に "f" または "F" を付加する必要がある、というパターンを指定することができます。トリビアルなケース 0.0 を無視するには、次のような正規表現を使用します。

        (.*(f|F))|(^0\.0$)
        Polyspace は、0.0 以外の指定されたパターンに対してこのルールの違反を報告します。

        float arr[] = { 0.0, // No violation reported
                        10.05, // Violation reported
                        4.00f }; // No violation reported

        regex の完全なリストは、Perl のドキュメンテーションを参照してください。

既存のコーディング ルール ファイルを使用または更新するには、 をクリックして [チェッカーの選択] ウィンドウを開き、次のいずれかを行います。

  • 所定のフィールドにファイルへの絶対パスを入力

  • [参照] をクリックして、ファイルの場所に移動

オフ (既定の設定)

Polyspace は、カスタムの命名規則に対しコードをチェックしません。

コマンド ライン情報

コマンド ラインでコマンド -custom-rules を使用して、事前に定義された命名規則の違反をチェックします。

パラメーター: -custom-rules
値: from-file ([ファイルごとにチェッカーを設定] (-checkers-selection-file) を使用してファイルを指定)
既定値: オフ
例 (Bug Finder): polyspace-bug-finder -sources file_name -custom-rules from-file -checkers-selection-file "C:\Standards\custom_config.xml"
例 (Bug Finder Server): polyspace-bug-finder-server -sources file_name -custom-rules from-file -checkers-selection-file "C:\Standards\custom_config.xml"

または、アクティベーション XML ファイル内でルールを有効にします。チェッカー アクティベーション ファイル (-checkers-activation-file) を参照してください。

バージョン履歴

すべて展開する