このセクションでは、C++testに付属の RuleWizard ツールを使って独自のユーザー定義ルールを作成する方法について説明します。

このセクションの内容 :

ルールのカスタマイズ

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

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

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

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

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

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

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

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

  1. [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。  
  2. ルール パラメーターを編集するテスト コンフィギュレーションの [静的] > [ルール ツリー] タブをクリックします。  
  3. ルール カテゴリを展開します。  
  4. パラメータライズド ルールを右クリックし、ショートカット メニューの [ルール パラメーターの表示/変更] をクリックします。  
  5. 表示されたダイアログでルールのパラメーターを変更します。  
  6. [OK] をクリックして変更を保存します。  

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

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

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

C++test のパターン ベース ルールは、 RuleWizard というツールを使ってカスタマイズすることができます。C++test のルールは、RuleWizard にロードして必要に応じて変更できる物理的ファイルです。ビルトイン ルールは C++test のインストール先ディレクトリ下にあります。

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

 

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

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

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

上記のすべてのステップは C++test のメニューから実行することができます。実際にファイルを操作する必要はありません。 C++test は上記のステップですべてのルール コンポーネントを完全に管理できます。

ルールの新規作成

RuleWizard は、ルールを作成したりカスタマイズしたりするためのツールです。RuleWizard を使用すると、簡単にビルトイン ルールを変更したりユーザー定義ルールを新規に作成したりできます。

RuleWizard では、フロー チャートのようにルールを表現してルールをグラフィカルに作成することも、ルール違反のサンプル コードを使ってルールを自動的に作成することもできます。

RuleWizard を表示するには、次の操作を行います。

  • [Parasoft] メニューの [RuleWizard の起動] をクリックします。  

RuleWizard GUI が表示されます。ルールの変更と作成およびユーザー定義ルールを有効にする方法については、『RuleWizard ユーザーズ ガイド』を参照してください。『RuleWizard ユーザーズ ガイド』を表示するには、RuleWizard GUI で [Help] メニューの [Documentation] をクリックします。 なお、PDF 版の『RuleWizard ユーザーズ ガイド』 については Parasoft Test インストール ディレクトリの下を参照してください。

ルールのデプロイ

ユーザー定義ルールを静的解析で使用するには、C++test にデプロイする必要があります。推奨する方法は、Team Server を利用したデプロイです。一般に、Parasoft インフラストラクチャのデプロイは、主要コンポーネントとして Team Server を利用します。C++test は指定ポートを介して Team Server に自動的に接続します。Team Server との接続を設定するには、[Parasoft] メニューの [設定] をクリックし、左側のリストから [Team Server] を選択します。詳細については「Connecting to Team Server  」を参照してください。

Team Server を使わずにユーザー定義ルールをデプロイすることは通常可能ですが、Team Server を利用した場合と較べて、デプロイの管理が著しく難しくなります。チームでユーザー定義ルールをデプロイする必要がある場合は Team Server を使用することを強く推奨します。

Team Server を使ってチームにユーザー定義ルールをデプロイする方法については「テストコンフィギュレーションとルールの設定」 を参照してください。

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

C++test にインポートするルールには、それぞれ固有のルール ID が必要です。同じ ID のルールを複数インポートしてはいけません。詳細については 「ルール ID の重複についての注意」を参照してください。

ルール ID を使ってルール カテゴリを指定するには、次のフォーマットを使用します。 <rule_category>-<rule_uid> たとえば、 "myrule-123" は自動的に "myrule" カテゴリに割り当てられます。

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

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

Team Server を利用せずにユーザー定義ルールをデプロイする

RuleWizard で作成したユーザー定義ルールを C++test で使用するには、ユーザー定義ルールをデプロイする必要があります。

注意

ここでは、Team Server を使用していないチームでユーザー定義ルールを使用する方法について説明します。Team Server を使用している場合、「テストコンフィギュレーションとルールの設定 」を参照してください。  

 

Team Server を使用していない場合にユーザー定義ルールをデプロイするには、次の操作を行います。

  1. [Parasoft] メニューの [テスト コンフィギュレーション] をクリックします。  
  2. 任意のテスト コンフィギュレーション カテゴリを選択します。利用できるすべてのテスト コンフィギュレーションで新しいルールを使用できます。  
  3. [静的] タブの [ルール ツリー] タブをクリックします。  
  4. 新しい C++test カテゴリの下に新規ルールを置く場合、新しいカテゴリを作成します。  
    1. [ルールマップ ファイルの編集] ボタンをクリックします。  
    2. [カテゴリ] タブをクリックします。  
    3. [新規] ボタンをクリックします。新しいエントリがカテゴリ テーブルに挿入されます。  
    4. 新しいエントリの [カテゴリ ID] および [カテゴリ詳細] フィールドに値を入力します。たとえば、カテゴリ ID として ACME と入力し、カテゴリ詳細としてACME INTERNAL RULES と入力します。  
    5. [OK] ボタンをクリックして新規カテゴリを保存します。  
  5. [インポート] ボタンをクリックします。ダイアログが表示されます。  
  6. [参照] ボタンをクリックし、ルールを記述したファイルを選択します。インポートするルールのチェックボックスをオンにして [OK] をクリックします。インポートするルールと同じ ID のルールがすでに存在する場合、既存のルールを上書きするかどうかの問い合わせがあります。  
  7. 指定のカテゴリの下にルールが表示されます。ルールはデフォルトで無効に設定されています。  
  8. 静的解析で使用するルールのチェックマークをオンにしてルールを有効にします。  
  9. [適用] または [閉じる] をクリックして変更した設定を適用します。  

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

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

 

  • No labels