分類基準の作成
欠陥をインポートする前に、外部欠陥を関連付ける欠陥分類基準、カテゴリ、および欠陥タイプを定義する必要があります。定義は .pconf ファイルを作成することによって行います。 この XML ファイルに欠陥のカテゴリおよび重要度タイプを定義し、ユーザーに表示するエラーメッセージを格納します。
次の例は、.pconf ファイルの抜粋を示しています。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <checkers version="1.4"> <severitytable max="10" warningStart="3" locale="en"> <severity name="Critical" number="1"/> ... </severitytable> <categories name="TN SDL SDT" locale="en"> <category name="Err.Lex.Tn"> <error id="ERR_LEX_COM_IN_COM"/> <error id="ERR_LEX_LONG_ID"/> <error id="ERR_LEX_RESERVED"/> </category> ... </categories> <checkergroup api="none" id="TN.DEFAULT.CHECKERGROUP" language="SDL/SDT"> <checker id="ERR.LEX.TN"> <error autogroupby="0" enabled="true" id="ERR_LEX_LONG_ID" severity="3"> <title locale="en" text="ID longer than 31 characters"/> <title locale="ja" text="ID longer than 31 characters"/> <message locale="en" text="{0}"/> <message locale="ja" text="{0}"/> </error> <error autogroupby="0" enabled="true" id="ERR_LEX_RESERVED" severity="3"> <title locale="en" text="ID is reserved in ANSI C"/> <title locale="ja" text="ID is reserved in ANSI C"/> <message locale="en" text="{0}"/> <message locale="ja" text="{0}"/> </error> <error autogroupby="0" enabled="true" id="ERR_LEX_COM_IN_COM" severity="3"> <title locale="en" text="Missing close comment"/> <title locale="ja" text="Missing close comment"/> <message locale="en" text="{0}"/> <message locale="ja" text="{0}"/> </error> </checker> ... </checkergroup> </checkers>
.pconf ファイルには、3 つの子要素を定義して構成する必要があります。
要素 | 説明 |
---|---|
<severitytable> | 重要度階層を定義します。 |
<categories> | チェッカーカテゴリのセットを定義します。各カテゴリには関連チェッカーのセットが含まれます。通常、カテゴリはチェッカーを機能別にまとめるために使用します。たとえば、"精度の損失" や "危険な型キャスト" などです。これらは通常、ユーザーによって定義されます。 |
<checkergroup> | 関連チェッカーのグループを定義します。たとえば、"組み込み C# Path チェッカー" などです。これらは通常、ユーザーによって定義されます。 |
.pconf ファイルの作成
.pconf ファイルを作成してインポートするには、次のウォークスルーに従います。
- チェッカー設定情報を格納する XML ファイルを作成します。.pconf ファイルを作成するには、既存の構成ファイルとテキストエディターを使用するか、または Klocwork Configuration Editor を使用できます。
分類基準の作成および変更の詳細については、統合ビルド解析用チェッカーの設定 を参照してください。
- .pconf ファイルに
<severitytable>
要素を追加します。これがルート要素の最初の子になります。ワークフローによっては重要度レベルは任意である場合があるため、このセクションはそのままにしておくことができます。<severitytable max="10" warningStart="3" locale="en"> <severity name="Critical" number="1"/> <severity name="Error" number="2"/> <severity name="Warning" number="3"/> <severity name="Review" number="4"/> <severity name="Severity 5" number="5"/> <severity name="Severity 6" number="6"/> <severity name="Severity 7" number="7"/> <severity name="Severity 8" number="8"/> <severity name="Severity 9" number="9"/> <severity name="Severity 10" number="10"/> </severitytable>
- .pconf ファイルに <categories> 要素を追加します。
<categories name="TN SDL SDT" locale="en"> <category name="Err.Sym.Tn"> <error id="ERR_SYM_NO_TERMINATOR"/> <error id="ERR_SYM_EXP_UNCHANGED"/> <error id="ERR_SYM_ENUM_LACK_ANSWER"/> <error id="ERR_SYM_UNREACHABLE_STATEMENT"/> </category> </categories>
- <categories> 要素には、実際のチェッカーカテゴリを定義する <category> 要素が含まれます。<categories> 要素と <category> 要素の name 属性は、ユーザーによって定義されます。カテゴリに含まれる欠陥タイプを表す <category> の名前を指定する必要があります。
- <error> 要素の id 属性は、外部欠陥リストで指定された <ErrorID> への直接マッピングです。
- .pconf ファイルに <checkergroup> 要素を追加します。
<checkergroup api="none" id="TN.DEFAULT.CHECKERGROUP" language="SDL/SDT"> <checker id="ERR.LEX.TN"> <error autogroupby="0" enabled="true" id="ERR_LEX_LONG_ID" severity="3"> <title locale="en" text="ID longer than 31 characters"/> <title locale="ja" text="ID longer than 31 characters"/> <message locale="en" text="{0}"/> <message locale="ja" text="{0}"/> </error> <error autogroupby="0" enabled="true" id="ERR_LEX_RESERVED" severity="3"> <title locale="en" text="ID is reserved in ANSI C"/> <title locale="ja" text="ID is reserved in ANSI C"/> <message locale="en" text="{0}"/> <message locale="ja" text="{0}"/> </error> </checker>
次のテーブルでは、<checkergroup> 内の要素について説明します。
要素 属性 <checkergroup> api
どのチェッカーも実行しないことを示すには、"none" を指定します。
id
ユーザー定義
言語
ユーザー定義。通常は、ソースコードのプログラミング言語を表します。
<checker> id
ユーザー定義。ただし、通常はカプセル化する欠陥タイプのグループ名を表します。
<error> autogroupby
0 に設定されます。
有効
true に設定されます。
id
<error> 要素の id 属性は、外部欠陥リストで指定された <ErrorID> への直接マッピングです。
severity
欠陥リストファイルで定義された重要度レベルの解釈に基づく値。
<title> ロケール
タイトル文字列のロケールコード。たとえば、"en" や "ja" です。
text
欠陥の簡単な概要を説明する文字列。
<message> ロケール
タイトル文字列のロケールコード。たとえば、"en" や "ja" です。
text
欠陥の簡単な概要を説明する文字列、または欠陥リストで指定されたメッセージを渡すための
{0}
。欠陥メッセージは既に生成されており、メッセージのテキストをソースファイル内の行に関連付けることだけが目的であるため、メッセージはそのまま変数として渡されます。 - XML ファイルを保存し、Klocwork インストールパスにある /plugins ディレクトリにコピーします。