メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

C/C++ 変数および関数の命名規則の強制

この例では、C/C++ コードでの関数とオブジェクトの命名規則違反を確認する方法を示します。命名規則ごとに、正規表現の形式でパターンを指定します。ソフトウェアでは、このパターンをソース コードの識別子と比較して、識別子が命名規則に従っているかどうかを確認します。

チュートリアルでは、ファイル printInitialValue.c 内に保存された次のコードを使用します。

#include <stdio.h>

typedef struct {
    int a;
    int b;
} collection;

void main()
{
    collection myCollection= {0,0};
    printf("Initial values in the collection are %d and %d.",myCollection.a,myCollection.b);
}

命名規則の指定

カスタム コーディング ルール チェッカーは、コードの識別子を指定された命名規則と比較します。Polyspace® は、識別子が規則に一致していない場合に違反を報告します。カスタム コーディング ルールを使用して命名規則を適用するには、その前に正規表現を使用して命名規則を指定します。

  1. [チェッカーの選択] ウィンドウを開きます。このウィンドウを開くには、ワークフローに応じて、Polyspace as You Code IDE プラグイン、デスクトップ ユーザー インターフェイス、コマンド polyspace-checkers-selection のいずれかを使用します。

  2. [チェッカーの選択] ウィンドウで、ルール 4.3 を選択します。

  3. [規則] フィールドに、ルール違反があった場合に表示するメッセージを入力します。このメッセージには、指定する命名規則の説明を含めます。たとえば、[規則] フィールドに All struct fields must begin with s_ and have capital letters or digits と入力します。

  4. [パターン] フィールドに、指定する命名規則に対応する正規表現を入力します。たとえば、s_ で始まり、大文字または数字が含まれている struct フィールド名を表すには、s_[A-Z0-9_]+ と指定します。Polyspace では、パターンの定義で Perl 正規表現がサポートされています。カスタム ルールのチェック (-custom-rules) を参照してください。

    Example Checkers selection window showing custom rules selected. The pattern field is not empty.

    [パターン] フィールドが空白の場合、カスタム ルールは有効になりません。

  5. [コメント] フィールドはオプションです。コメントは Polyspace の結果リストには表示されません。[コメント] フィールドを空白のままにします。

  6. XML ファイルに変更を保存してウィンドウを閉じます。この XML ファイルを使用して、指定されるカスタム ルールをチェックできます。

あるいは、既存のチェッカー XML ファイルを編集して命名規則を指定します。Polyspace インストール フォルダーに含まれているテンプレートをコピーして編集できます。

  1. polyspaceroot\polyspace\examples\doc_cxx\coding_standards_XML でテンプレート custom_rules.xml を見つけます。ここで、polyspaceroot は Polyspace 製品のルート インストール フォルダーです。たとえば、C:\Program Files\Polyspace Server\R2025a です。custom_rules.xml ファイルの編集可能なコピーを作成します。

  2. 編集可能な XML ファイルで、ルール 4.3 に対応するノードを見つけます。state 属性を on に設定します。サブノード Convention を追加し、All struct fields must begin with s_ and have capital letters or digits として指定します。次にサブノード Pattern を追加し、s_[A-Z0-9_]+ として指定します。次に例を示します。

          <check id="4.3" state="on">
    	  <convention>All struct fields must begin with s_ and have capital letters or digits</convention>
    	  <pattern>s_[A-Z0-9_]+</pattern>
          </check>

  3. XML ファイルを保存します。この XML ファイルを使用して、指定されるカスタム ルールをチェックできます。

定義されているカスタム コーディング ルールの違反の確認

命名規則を指定したら、Polyspace 解析を実行します。

  • Polyspace デスクトップ UI、または IDE の Polyspace as You Code プラグインの 1 つを使用している場合は、[チェッカーの選択] ウィンドウで変更を保存した後で、Polyspace 解析を実行します。

  • コマンド ライン インターフェイスを使用している場合は、解析時に、オプション [カスタム ルールのチェック] (-custom-rules) と同時に、変更した custom_rules.xml ファイルをオプション [ファイルごとにチェッカーを設定] (-checkers-selection-file) の引数として指定します。たとえば、Polyspace Bug Finder Server を使用してカスタム ルールをチェックするには、次のように入力します。

    polyspace-bug-finder-server -sources printInitialValue.c -custom-rules from-file -checkers-selection-file custom_rules.xml

Polyspace 解析により、2 つのフィールド (collection.acollection.b) でカスタム ルール 4.3 の 2 つの違反が報告されます。

この欠陥を解決するには、命名規則に準拠するようにフィールド名を変更します。たとえば、フィールドの名前をそれぞれ s_As_B に変更します。フィールドの名前を変更したら、Polyspace 解析をもう一度実行して、命名規則に違反していないことを確認します。

参考

|

トピック