メトリックしきい値構成ファイルの編集

  1. 設定するメトリックしきい値を特定します。
  2. 構成ファイルがあるディレクトリに移動し、 metrics_default.mconfファイルをコピーして、任意の名前で保存します。 または、任意の名前と場所を使用してメトリックしきい値構成ファイルを新規作成します。ファイル拡張子は .mconf である必要があります。
    既存の構成ファイルを変更する場合は、事前にバックアップコピーを作成してください。
  3. 新規または変更したデフォルトのメトリックしきい値構成ファイルで、必要に応じて内容を変更します。使用する構文の概要については、次のセクションおよびメトリックしきい値規則のカテゴリの作成に説明してあります。
  4. ファイルを保存します。

メトリックしきい値規則の構文

メトリックしきい値構成ファイルの各行は、Klocwork に違反を検出させるメトリックしきい値 1 件を表します。ファイルの各メトリックしきい値規則には、次のフィールドがあります。

Name;Entity-type;Metric-expression;Error-threshold;Warning-threshold

以降のセクションで、各フィールドについて詳細に説明していきます。

構成ファイル構文で、コメントと空白行を使用することができます。コメント行の先頭にポンド記号 (#) を使用すると、その行は規則と見なされなくなります。

#!alias 構文により、規則内のテキストを置き換えることができます: #!alias MetricCode = <expression>

このコメント以降は、"MetricCode" の出現箇所のテキストはすべて <expression> に代えられます。

名前

[Name] は、検出されたときにレポートに記載される違反に関する簡単な説明です。たとえば、クラス宣言数などです。完全なリストについては、メトリックリファレンスにある一覧表の [名前] 列を参照してください。名前は、すべての .mconf ファイルで使用されているメトリック規則名の間で一意でなければなりません。

Entity-type

Entity-type は、メトリックしきい値が該当するソフトウェアエンティティです。同じしきい値を複数のソフトウェアエンティティに適用する場合、1 つのカンマ区切りリストに複数個指定することができます。例:

Number of paths (NP);FUNCTION,METHOD;NOINDPATHS;10;7

以降の表に、各メトリックカテゴリで使用できるエンティティタイプを示します。

各メトリックカテゴリに該当するエンティティタイプ: C/C++

メトリックカテゴリ 適用可能なエンティティタイプ
ファイルレベルメトリック FILE
クラスレベルメトリック CLASS、TYPE、CLASS-TEMPLATE
関数レベルおよびメソッドレベルメトリック FUNCTION、CLASS-METHOD、FUNCTION-TEMPLATE、TEMPLATE-MEMBER

クラスレベルしきい値規則の TYPE は、構造と和集合を表します。

関数レベルのメトリックしきい値ルールの TEMPLATE-MEMBER は、クラステンプレートメソッドを表します。

各メトリックカテゴリに該当するエンティティタイプ: Java

メトリックカテゴリ 適用可能なエンティティタイプ
ファイルレベルメトリック FILE
クラスレベルメトリック CLASS
関数レベルおよびメソッドレベルメトリック CLASS-METHOD

Metric-expression

Metric-expression は、次のうちのいずれかです。

  • メトリックリファレンスにあるファイルレベルメトリック表の ["メトリックコード"] 列にある LOC_FILE (1 ファイルあたりのコード行数) などの簡単なメトリックコード。
  • 論理演算または算術演算および関数呼び出しを含む複雑な式 (下の '関数呼び出し値' (例: log(LOC/NOROUTINES)) を参照)。

Error-threshold

Error-threshold は、メトリックのしきい値を表す数です。詳細については、(下の) 数値を参照してください。<、<=、または >= などの論理演算を接頭辞として付けることができます。詳細については、下の論理演算を参照してください。このフィールドに数だけを入力した場合、適用されるデフォルト演算は、"大なり" (>) です。このメトリックの違反は、エラーとして報告されます。たとえば、1 ファイルメトリックあたりのコード行数のエラーしきい値を <100 に設定した場合、1 ファイル内のコード行数 (LOC_FILE) が 100 未満だと、エラーが報告されます。

警告だけ報告しエラー報告は不要のメトリックしきい値がある場合もあります。これを行うには、エラーしきい値を決して真にならない条件に設定します。たとえば、コード行数が 100 未満のファイルで警告を報告させるには、エラーしきい値を <0 (決して真にならない条件)、警告しきい値を <100 に設定します。

Warning-threshold

Warning-threshold は、式で定義されたメトリックのしきい値を表す数です。この数には、<、<=、または >= などの論理演算を接頭辞として付けることができます。このフィールドに数だけを入力した場合、適用されるデフォルト演算は、"大なり" (>) です。このメトリックの違反は、警告として報告されます。たとえば、1 ファイルメトリックあたりのコード行数の警告しきい値を <100 に設定した場合、1 ファイル内のコード行数 (LOC_FILE) が 100 未満だと、警告が報告されます。

メトリックが警告とエラーの両方のしきい値を超えた場合は、エラーメッセージのみが報告されます。

フルメトリックしきい値規則の例

Percent of comments;FILE;LINESCOMM/LOC_FILE*100;<5;<10

関数呼び出し値

[FunctionCall] には、次の関数を指定することができます。

説明
abs(X) 引数の絶対値を返します。
atan2(X,Y) 範囲 -pi ~ pi における Y/X の逆正接を返します。
cos(X) X (弧度で表現) の余弦を返します。
exp(X) e (自然対数底) の X 乗を返します。
int(X) X の整数部を返します。
log(X) X の 自然対数 (底 e) を返します。
sin(X) X (弧度で表現) の正弦を返します。
sqrt(X) X の平方根を返します。

数値

[Number] は次のいずれかになります。

  • 整数は、1231000 のように、実数の自然数で定義されます。
  • 小数は、123.45.6 のように、中に小数点を含む数で定義されます。
  • 浮動小数点の指数表記は、2.3E-103E-5 のように、1 ~ 10 の数に 10 の累乗を掛けた数で定義されます。

論理演算

[Logical operations] は、次のうちのいずれかです。

記号 説明
< 小なり
<= 以下
= 等しい
> 大なり ([しきい値] フィールドに数だけ指定された場合のデフォルト)
>= 以上
!= 等しくない