このセクションでは、既存のルールを変更したり、カスタム ルールを作成して、独自の要件をチェックしたり、ニーズに合わせて既存のルールを調整する方法について説明します。
このセクションの内容
はじめに
C/C++test の静的解析で重要なことは、使用する静的解析ルールをテスト コンフィギュレーションで設定できるだけでなく、静的解析ルール自体もカスタマイズしたり新規作成できる点です。
C/C++test には多彩なルールが用意されています。しかし、コーディング スタイルやアプリケーションの性質などによって、ユーザーがニーズに合わせて独自にルールを変更したり新規にルールを作成したい場合もあります。したがって、 ルールのカスタマイズ方法およびチーム メンバーへのデプロイ方法を知っておくことが重要です。
C/C++test には次の 2 種類のルールがあります。
- パターン ベースのルール コードのパターンをチェックし、パターンに一致するコードを発見します。コード パターンによる解析は通常 1 つのコンパイル単位に対して行われます (1 つのコンパイル単位とは、1 個のソース ファイル およびインクルードされるすべてのヘッダーです)。パターン ベースのルールの多くは、RuleWizard を使用してパラメータライズすることができます (「RuleWizard によるルールのカスタマイズ」を参照)。
- フロー ベースのルール (フロー解析ルール) 複数の関数とソース ファイルにわたって、コーディング パターンとデータ フローをチェックします。フロー ベースのルールの多くは、直接 C++test の GUI でパラメーター設定を変更してパラメータライズすることができます (「ルール パラメーターのカスタマイズ」を参照)。フロー ベースのルールの変更や作成に RuleWizard は使用されません。
ルール パラメーターのカスタマイズ
一部の C/C++test ルールでは、ルール パラメーターを指定することで、ルールの動作をカスタマイズできます。パラメーターを指定できるルールは、「ラジオボタン付きの魔法使いの帽子のアイコン」でテスト コンフィギュレーションの [静的] タブの [ルール ツリー] タブに表示されます。
利用できるパラメーターについての詳細は、ルールの説明中に記述されています。ルールの説明を参照するには、ルールのノードを右クリックしてショートカット メニューの [ルール ドキュメントの参照] をクリックします。
ルール パラメーターを編集するには、次の操作を行います。
- [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
- 任意のテスト コンフィギュレーションの [静的] > [ルール ツリー] タブをクリックします。 変更されたルール パラメーターはすべてのテスト コンフィギュレーションに適用されるため、このステップでどのテスト コンフィギュレーションを選択してもかまいません。
- ルール カテゴリを展開します。
- パラメータライズド ルールを右クリックし、ショートカット メニューの [ルール パラメーターの表示/変更] をクリックします。
- 表示されたダイアログでルールのパラメーターを変更します。
- [OK] をクリックして変更を保存します。
RuleWizard によるルールのカスタマイズと作成
RuleWizard によるルールのカスタマイズ
C/C++test のパターン ベース ルールの多くは、 RuleWizard を使って編集できます。C/C++test のルールは、RuleWizard にロードして必要に応じて変更できる物理的ファイルです。ビルトイン ルールは C/C++test のインストール先ディレクトリ下にあります。
カスタマイズ可能なルールは、テスト コンフィギュレーションのルール ツリーで次のアイコンでマークされます。
C/C++test のビルトイン ルールはそのままにすることを強く推奨します。ビルトイン ルール自体を変更するのではなく、ビルトイン ルールを複製し、複製したルールを変更してください。
ルールは GUI からカスタマイズでき、実際のルール ファイルを変更する必要はありません。
RuleWizard を使ってルールをカスタマイズするには、次の操作を行います。
- [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
- 任意のテスト コンフィギュレーションの [静的] > [ルール ツリー] タブをクリックします。
- 変更するルールを右クリックし、ショートカット メニューの [複製] をクリックします。
- 複製されたルールのノードが (ファイル アイコン付きで) 追加されます。
- 複製したルールは、[設定] ウィンドウでユーザーが指定したディレクトリに追加されます。複製したルールがビルトイン ルールを覆い隠すことがないよう、この操作によってルール ID が変更されます ( ルール ID の重複の詳細については、「ルール ID の重複についての注意」 を参照してください)。
- 複製したルールを右クリックし、ショートカット メニューの [RuleWizard でルールを編集] をクリックします。
- RuleWizard でルールを編集し、保存します。ユーザー定義ルールを変更、作成、有効化する方法については 『RuleWizard ユーザーズ ガイド』を参照してください。このマニュアルを表示するには、 RuleWizard GUI で [Help] メニューの [Documentation] をクリックします。
- 他のチーム メンバーがこのルールにアクセスできるよう、ルールを DTP または Team Server にアップロードします。
- DTP にアップロードする場合: 『DTP ユーザー ガイド』の「カスタム ルールの管理」セクションを参照してください。
- Team Server にアップロードする場合: ルールを右クリックし、ショートカット メニューの [Team Server へアップロード] をクリックします。 - 適切なテスト コンフィギュレーションでこのルールを有効にします。
ルールの新規作成
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 ユーザー ガイド』の「カスタム ルールの管理」セクションを参照してください。
手動でのカスタム ルールのインポート
- [Parasoft]メニューの [テスト コンフィギュレーション] をクリックするか、[テストの実行] ツールバー ボタンのドロップダウン メニューで [テスト コンフィギュレーション] をクリックしてテスト コンフィギュレーション ダイアログを開きます。
- 任意のテストコンフィギュレーションカテゴリを選択します。新規ルールはすべてのテスト コンフィギュレーションで利用可能になります。
- [静的] > [Rules Tree] タブをクリックします。
- 新規のルールを新しいカテゴリに入れる場合、次の操作を行って新しいカテゴリを作成します。
- [ルールマップファイルの編集] ボタンをクリックします。
- [カテゴリ] タブをクリックします。
- [新規] ボタンをクリックします。新しいエントリがカテゴリテーブルに挿入されます。
- 新しいエントリの [カテゴリ ID] および [カテゴリ詳細] フィールドに値を入力します。例えば、カテゴリ ID として ACME と入力し、カテゴリ詳細としてACME INTERNAL RULES と入力します。
- [OK] ボタンをクリックしてカテゴリを保存します。
- ルール ツリーの右側の [インポート] ボタンをクリックします。RuleWizard ルールのインポート ダイアログが表示されます。
- RuleWizard ルールのインポート ダイアログでインポートするルールと、既存のルールを上書きするかどうか (インポートするルールファイルが既存のルール ファイルと同じ名前の場合) を指定します。
- [OK] をクリックします。指定のカテゴリの下にルールが表示されます。ルールはデフォルトで無効に設定されています。
- 使用するルールのチェックマークをオンにしてルールを有効にします。
- [適用] または [閉じる] をクリックして変更した設定を適用します。
ルール ID の重複についての注意
C/C++test はルール ID によってルールを認識します。すでにビルトイン、ユーザー、またはチーム カテゴリに存在するルールと同じ ID を持つルールがある場合、ルールはチーム/ユーザー定義/ビルトインの優先順位で使用されます。そのため、ビルトイン ルールと同じ ID を持つルールをインポートした場合、このルールは [設定] ウィンドウで設定されたデフォルト ルール ディレクトリに物理的に置かれ、ルール構成は同じ ID のビルトイン ルールではなく、インポートされたルールを使用します。ルールを Team Server にアップロードした場合、Team Server 上のルールは、同じ ID のビルトイン ルールだけでなく、同じ ID のユーザー定義ルールも覆い隠します。