このセクションでは、既存のルールを変更したり、カスタム ルールを作成して、独自の要件をチェックしたり、ニーズに合わせて既存のルールを調整する方法について説明します。
このセクションの内容

はじめに

C/C++test の静的解析で重要なことは、使用する静的解析ルールをテスト コンフィギュレーションで設定できるだけでなく、静的解析ルール自体もカスタマイズしたり新規作成できる点です。

C/C++test には多彩なルールが用意されています。しかし、コーディング スタイルやアプリケーションの性質などによって、ユーザーがニーズに合わせて独自にルールを変更したり新規にルールを作成したい場合もあります。したがって、 ルールのカスタマイズ方法およびチーム メンバーへのデプロイ方法を知っておくことが重要です。

C/C++test には次の 2 種類のルールがあります。

  • パターン ベースのルール コードのパターンをチェックし、パターンに一致するコードを発見します。コード パターンによる解析は通常 1 つのコンパイル単位に対して行われます (1 つのコンパイル単位とは、1 個のソース ファイル およびインクルードされるすべてのヘッダーです)。パターン ベースのルールの多くは、RuleWizard を使用してパラメータライズすることができます (「RuleWizard によるルールのカスタマイズ」を参照)。
  • フロー ベースのルール (フロー解析ルール) 複数の関数とソース ファイルにわたって、コーディング パターンとデータ フローをチェックします。フロー ベースのルールの多くは、直接 C++test の GUI でパラメーター設定を変更してパラメータライズすることができます (「ルール パラメーターのカスタマイズ」を参照)。フロー ベースのルールの変更や作成に RuleWizard は使用されません。

ルール パラメーターのカスタマイズ

一部の C/C++test ルールでは、ルール パラメーターを指定することで、ルールの動作をカスタマイズできます。パラメーターを指定できるルールは、「ラジオボタン付きの魔法使いの帽子のアイコン」でテスト コンフィギュレーションの [静的] タブの [ルール ツリー] タブに表示されます。

利用できるパラメーターについての詳細は、ルールの説明中に記述されています。ルールの説明を参照するには、ルールのノードを右クリックしてショートカット メニューの [ルール ドキュメントの参照] をクリックします。

ルール パラメーターを編集するには、次の操作を行います。

  1. [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
  2. 任意のテスト コンフィギュレーションの [静的] > [ルール ツリー] タブをクリックします。 変更されたルール パラメーターはすべてのテスト コンフィギュレーションに適用されるため、このステップでどのテスト コンフィギュレーションを選択してもかまいません。
  3. ルール カテゴリを展開します。
  4. パラメータライズド ルールを右クリックし、ショートカット メニューの [ルール パラメーターの表示/変更] をクリックします。
  5. 表示されたダイアログでルールのパラメーターを変更します。
  6. [OK] をクリックして変更を保存します。

複数のバージョンのパラメータライズド ルールを作成するには

たとえばユーザー指定のリーク定義を探す「フロー解析」ルールなど、複数のバージョンのパラメータライズド ルールを作成するには、ルールのクローンを作成して各ルール インスタンスをパラメータライズします。詳細については 「ルール マッピングの指定」を参照してください。

RuleWizard によるルールのカスタマイズと作成

このセクションでは、RuleWizard を使用して既存のルールをカスタマイズしたり、新規ルールを作成する際の一般的なワークフローを説明します。RuleWizard の機能と使用方法については「RuleWizard User Guide」を参照してください。

RuleWizard によるルールのカスタマイズ

C/C++test のパターン ベース ルールの多くは、 RuleWizard を使って編集できます。C/C++test のルールは、RuleWizard にロードして必要に応じて変更できる物理的ファイルです。ビルトイン ルールは C/C++test のインストール先ディレクトリ下にあります。

カスタマイズ可能なルールは、テスト コンフィギュレーションのルール ツリーで次のアイコンでマークされます。

(info) C/C++test のビルトイン ルールはそのままにすることを強く推奨します。ビルトイン ルール自体を変更するのではなく、ビルトイン ルールを複製し、複製したルールを変更してください。

(info) ルールは GUI からカスタマイズでき、実際のルール ファイルを変更する必要はありません。

RuleWizard を使ってルールをカスタマイズするには、次の操作を行います。

  1. [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
  2. 任意のテスト コンフィギュレーションの [静的] > [ルール ツリー] タブをクリックします。
  3. 変更するルールを右クリックし、ショートカット メニューの [複製] をクリックします。
  4. 複製されたルールのノードが (ファイル アイコン付きで) 追加されます。
    • 複製したルールは、[設定] ウィンドウでユーザーが指定したディレクトリに追加されます。複製したルールがビルトイン ルールを覆い隠すことがないよう、この操作によってルール ID が変更されます ( ルール ID の重複の詳細については、「ルール ID の重複についての注意」 を参照してください)。
  5. 複製したルールを右クリックし、ショートカット メニューの [RuleWizard でルールを編集] をクリックします。
  6. RuleWizard でルールを編集し、保存します。ユーザー定義ルールを変更、作成、有効化する方法については 『RuleWizard ユーザーズ ガイド』を参照してください。このマニュアルを表示するには、 RuleWizard GUI で [Help] メニューの [Documentation] をクリックします。
  7. 他のチーム メンバーがこのルールにアクセスできるよう、ルールを DTP または非推奨の Team Server にアップロードします。
    - DTP にアップロードする場合: 『DTP ユーザー ガイド』の「カスタム ルールの管理」セクションを参照してください。
    - Team Server にアップロードする場合: ルールを右クリックし、ショートカット メニューの [Team Server へアップロード] をクリックします。
  8. 適切なテスト コンフィギュレーションでこのルールを有効にします。

ルールの新規作成

RuleWizard は、ルールを作成したりカスタマイズしたりするためのツールです。RuleWizard を使用すると、簡単にビルトイン ルールを変更したりユーザー定義ルールを新規に作成したりできます。ルールは、フローチャートに似たルール表現を作成してグラフィカルに作成することも、サンプルのルール違反から自動的に生成することもできます。

RuleWizard を表示するには、[Parasoft] メニューの [RuleWizard の起動] をクリックします。

カスタム ルールの編集および保存方法については、『RuleWizard ユーザーズ ガイド』を参照してください。『RuleWizard ユーザーズ ガイド』を表示するには、RuleWizard GUI で [Help] メニューの [Documentation] をクリックします。

カスタマイズされたルールまたはカスタム作成されたルールのデプロイ

カスタム ルールを DTP、非推奨の Team Server にデプロイしたり、ルール ファイルを手動でインポートできます。

ルール ID についての注意事項

C/C++test にインポートするルールには、それぞれ固有のルール ID が必要です。詳細については 「ルール ID の重複についての注意」を参照してください。ルール ID を使ってルール カテゴリを指定するには、次のフォーマットを使用します。 <rule_category>-<rule_uid>たとえば、 "myrule-123" は自動的に "myrule" カテゴリに割り当てられます。

Team Server を使ってユーザー定義ルールをデプロイする (非推奨)

テストコンフィギュレーションとルールの設定」を参照してください。

DTP を使ってユーザー定義ルールをデプロイする

カスタム ルールを DTP にデプロイする方法については、『DTP ユーザー ガイド』の「カスタム ルールの管理」セクションを参照してください。

手動でのカスタム ルールのインポート

  1. [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
  2. 任意のテストコンフィギュレーションカテゴリを選択します。新規ルールはすべてのテスト コンフィギュレーションで利用可能になります。
  3. [静的] > [Rules Tree] タブをクリックします。
  4. 新規のルールを新しいカテゴリに入れる場合、次の操作を行って新しいカテゴリを作成します。
    1. [ルールマップファイルの編集] ボタンをクリックします。
    2. [カテゴリ] タブをクリックします。
    3. [新規] ボタンをクリックします。新しいエントリがカテゴリテーブルに挿入されます。
    4. 新しいエントリの [カテゴリ ID] および [カテゴリ詳細] フィールドに値を入力します。例えば、カテゴリ ID として ACME と入力し、カテゴリ詳細としてACME INTERNAL RULES と入力します。
    5. [OK] ボタンをクリックしてカテゴリを保存します。
  5. ルール ツリーの右側の [インポート] ボタンをクリックします。RuleWizard ルールのインポート ダイアログが表示されます。
  6. RuleWizard ルールのインポート ダイアログでインポートするルールと、既存のルールを上書きするかどうか (インポートするルールファイルが既存のルール ファイルと同じ名前の場合) を指定します。
  7. [OK] をクリックします。指定のカテゴリの下にルールが表示されます。ルールはデフォルトで無効に設定されています。
  8. 使用するルールのチェックマークをオンにしてルールを有効にします。
  9. [適用] または [閉じる] をクリックして変更した設定を適用します。

ルール ID の重複についての注意

C/C++test はルール ID によってルールを認識します。すでにビルトイン、ユーザー、またはチーム カテゴリに存在するルールと同じ ID を持つルールがある場合、ルールはチーム/ユーザー定義/ビルトインの優先順位で使用されます。そのため、ビルトイン ルールと同じ ID を持つルールをインポートした場合、このルールは [設定] ウィンドウで設定されたデフォルト ルール ディレクトリに物理的に置かれ、ルール構成は同じ ID のビルトイン ルールではなく、インポートされたルールを使用します。ルールを Team Server にアップロードした場合、Team Server 上のルールは、同じ ID のビルトイン ルールだけでなく、同じ ID のユーザー定義ルールも覆い隠します。

  • No labels