checkers.xml: C/C++ チェッカーの設定Java KAST 構成
kwcreatechecker を実行すると、--code オプションで指定した <CHECKER.CODE> ディレクトリに checkers.xml ファイルが作成されます。
<checkers version> の値 (1.3) を除き、以下にリストしたタグの値はすべて変更できます。
デフォルトでは、checkers.xml ファイルは 1 つのチェッカーの構造を作成します。同じファイル内に複数のチェッカーグループ、チェッカー ID、エラー ID が必要な場合は、適切なタグを手動でコピーして貼り付け、それらの値が一意になるように編集することができます。例: 1 つのファイル内の複数の Java KAST チェッカー。
次のテーブルは、checkers.xml ファイル内の要素に関する詳細を示します。
要素 | デフォルト値 | 説明 |
---|---|---|
<checkers version> | 1.3 | このバージョンは、現在の Klocwork チェッカーバージョンが使用されていることを反映しています。値は 1.3 です。 変更しないでください。 |
<categories> | 指摘の分類方法を示します。最高レベルのカテゴリは言語です。下の <category name> を参照してください。 | |
<category name> | Java | この値は変更することができますが、この要素を削除してカスタムチェッカーを別の方法で分類することもできます。サーバープロジェクトまたはデスクトッププロジェクトの場合、指摘カテゴリは指摘の Configuration Editor に表示されます。Configuration Editor では、指摘の解析をオンまたはオフにします。統合ビルド解析用チェッカーの設定を参照してください。 |
<error id> | <CHECKER.CODE> | kwcreatechecker の --code オプションで指定した指摘コードを反映します。チェッカー ID に複数のエラー ID がある場合は、各エラー ID は、展開時に Configuration Editor で正しく分類されるように、独自の <error id> タグを使用して示す必要があります。カテゴリ名の詳細については、上述の <category name> を参照してください。注意: エラー ID (チェッカー名) では、マルチバイト文字はサポートされていません。また、255 文字までという制限があります。 |
<checkergroup language> | Java | チェッカーは Java プログラム用であることを示します。1 つの checkers.xml に、複数の checkergroup を含めることができます。これは手動のプロセスです。例: 1 つのファイル内の複数の Java KAST チェッカー。 |
<api> | tree_pattern | kwcreatechecker の --type <path or kast> オプションで指定したチェッカータイプを反映します。KAST タイプは tree_pattern として表示されます。 |
<checker id> | <CHECKER.CODE> | この ID は、チェッカーによって指摘が検出された場合に解析結果に表示されます。各チェッカー ID には、それぞれ独自の <error id> セクションで示される複数のエラー ID を含めることができます。これは手動のプロセスです。例: 1 つのファイル内の複数の Java KAST チェッカー。 |
<libraries> | <KAST library name> | KAST チェッカーが依存する動的ライブラリのリストを格納します。--kast-library オプションによって作成されたカスタム関数を使用するチェッカーのみに適用します。 |
<library-path> | Your_library | 動的ライブラリへのパスを指定します。 |
<error id> | <CHECKER.CODE> | この ID は、チェッカーによって指摘が検出された場合に解析結果に表示されます。各チェッカー ID には、それぞれ独自の <error id> セクションで示される複数のエラー ID を含めることができます。これは手動のプロセスです。例: 1 つのファイル内の複数の Java KAST チェッカー。 |
<enabled> | true | 新しいチェッカーはデフォルトで有効になっていますが、値を false に変更することで無効にすることができます。Configuration Editor (Klocwork サーバープロジェクトおよびデスクトッププロジェクト) では、プロジェクトの複数のチェッカーを簡単に有効化または無効化できます。 |
<severity> | 4 | 指摘重要度を参照してください。 |
<title> | "Unexpected semicolon after else" | チェッカータイトルは Configuration Editor に表示されます。サンプルタイトルが表示されるので、カスタムチェッカーを反映するように変更する必要があります。 |
<message> | "Unexpected semicolon after else" | このチェッカーによって指摘が検出された場合に解析結果に表示するメッセージを指定します。サンプルメッセージが表示されるので、カスタムチェッカーを反映するように変更する必要があります。 |
<pattern> | // IfElseStat [ ElseStat::EmptyStat ] | 1 つのチェッカーに複数の KAST 式を含めることができます。各 KAST 式は、<pattern> タグおよび </pattern> タグ内に含める必要があります。KAST 式は、それがテストされ、チェッカーをビルドする準備ができるまでは、checkers.xml ファイルに含めないでください。統合ビルドの詳細については、「KAST 式について」を参照してください。KAST 式にカスタム関数が含まれている場合、KAST 式内のカスタム関数が反映されるように plugin_function.xml ファイルを更新する必要があります。plugin_functions.xml: を参照してください。カスタム関数の使用 plugin_functions.xml: カスタム関数および Java カスタム関数の使用。 |
例: 1 つのファイル内の複数の Java KAST チェッカー
次の例ではカスタム関数を使用しないため、ライブラリは含まれていません。
1 つの checkers.xml ファイルに、複数の checkergroup を含めることができます。各 checkergroup には複数のチェッカー ID を含めることができ、さらにそれぞれのチェッカー ID に複数のエラー ID を含めることもできます。そのためには、該当するセクション (タグ) をコピーして貼り付け、それらの値が一意になるように編集します。
以下の例を参照してください。
<checkers version="1.3"> <checkergroup id="JTreePatternCheckers" language="java" api="tree_pattern"> <checker id="JXPATH.SEMICOL"> <error id="JXPATH.SEMICOL.THEN" message="unexpected semicolon after then" enabled="false" severity="8" title="JXPATH.SEMICOL.THEN"> <pattern> // IfStat [ ThenStat::EmptyStat] </pattern> </error> <error id="JXPATH.SEMICOL.ELSE" message="unexpected semicolon after else" enabled="false" severity="8" title="JXPATH.SEMICOL.ELSE"> <pattern> // IfElseStat [ ElseStat::EmptyStat ] </pattern> </error> </checker> <checker id="JXPATH.MISRA.12.4"> <error id="JXPATH.MISRA.12.4" message="assignment in right operand of boolean operation" enabled="false" severity="8" title="JXPATH.MISRA.12.4"> <pattern> // ExprBinary [ @Op=OP_ASSIGN @Op=OP_STARASSIGN | @Op=OP_DIVASSIGN @Op=OP_MODASSIGN | @Op=OP_PLUSASSIGN @Op=OP_MINUSASSIGN | @Op=OP_SLASSIGN @Op=OP_SRASSIGN | @Op=OP_BANDASSIGN @Op=OP_BXORASSIGN | @Op=OP_BORASSIGN ] / ancestor::ExprBinary [ @Op=OP_LAND | @Op=OP_LOR ] </pattern> <pattern> // ExprPrefix [ @Op=OP_INC | @Op=OP_DEC ] / ancestor::ExprBinary [ @Op=OP_LAND | @Op=OP_LOR ] </pattern> <pattern> // ExprPostfix [ @Op=OP_INC | @Op=OP_DEC ] / ancestor::ExprBinary [ @Op=OP_LAND | @Op=OP_LOR ] </pattern> </error> </checker> </checkergroup> </checkers>
この例から次のことがわかります。
- JTreePatternCheckers という checkergroup が 1 つあります。
- checkergroup にある 2 つのチェッカーは、JXPATH.SEMICOL と JXPATH.MISRA.12.4 です。
- JXPATH.SEMICOL チェッカーには 2 つのエラータイプ JXPATH.SEMICOL.THEN とJXPATH.SEMICOL.ELSE が含まれ、それぞれ <pattern> タグ内に 1 つの KAST 式を持っています。
- JXPATH.MISRA.12.4 チェッカーには、2 つの KAST 式を含む 1 つのエラーが含まれています。
各チェッカーライブラリには複数のチェッカーグループを含めることができ、各チェッカーグループには複数のチェッカーを含めることができます。 また、各チェッカーは複数のサブタイプ (エラー ID) を定義でき、各エラー ID には複数の KAST 式を含めることができます。