kwcheck 出力リファレンス

デフォルト出力

kwcheck プレーンテキスト出力の各行には、最低でも以下のフィールドがあります。

<issue_ID> (System:<system_ID>) <origin> <file>:<line_number> <issue_code> (<severity_number>:<severity_label>) <status> <message>

フィールド

  • <issue_ID>は検出された指摘に割り当てられる番号です。
  • <origin> は指摘の原点です。システム指摘の場合、ローカル ID の後の括弧内にシステム ID が表示されます。

    システム指摘を表示するには、kwcheck list --system オプションを使用します。

  • <issue_code> は指摘タイプの短い名前です。指摘の種類についての説明は、C および C++ チェッカーリファレンスまたは Java チェッカーリファレンスを参照してください。
  • <severity_number> と<severity_label> は重要度を示します。
  • <status> は現在の指摘ステータスです。
  • <message> は、検出された指摘に寄与するコード内キーステートメントを行番号で識別します。

例:

5 (Local) C:\zlib\trees.c:777 ABR (1:Critical) Analyze Buffer overflow, array index of 'bl_tree' may be out of bounds.Array 'bl_tree' of size 39 may use index value(s) 39..65535.Also there are 2 similar errors on line(s) 777.

詳細出力

kwcheck list または kwcheck run-F detailed を使用し、トレースバックか検出された指摘についてのコメントの詳細を取得します。

<local_ID> (System:<system_ID>) <origin> <file>:<line_number> <issue_code> (<severity_number>:<severity label>) <status>
<message>
<traceback_lines>
<issue_status>
<comment>

例:

5 (System: 22) /testing/myproj/trees.c:777 ABR (1:Critical) Fix
Buffer overflow, array index of 'bl_tree' may be out of bounds.Array 'bl_tree'
of size 39 may use index value(s) 39..65535.Also there are 2 similar errors on
line(s) 777.
* foo.c:760: ...:=tree[0] .dl.len
* foo.c:768: n<=max_code is true
* foo.c:769: ...:=tree[n+1] .dl.len
* foo.c:769: curlen:=nextlen
* foo.c:789: nextlen==0 is false
* foo.c:776: curlen!=prevlen is true
* foo.c:777: The array 'bl_tree' size is 39.
* deflate.h:194: The array 'bl_foo' size is 39.
* foo.c:777: Array 'bl_foo' may use the 39..65535 index.
Current status 'Fix'
Comment:Needs to be fixed immediately

JSON 出力

kwcheck list または kwcheck run-F json を使用して JSON 出力を生成します。

JSON 出力例

コピー
  {
    "severity": "Critical",
    "severityCode": 1,
    "supportLevel": "Klocwork Certified",
    "supportLevelCode": 1,
    "taxonomies": [
      {
        "name": "C and C++",
        "metaInfo": ""
      }
    ],
    "id": 5,
    "isSystem": false,
    "isCiDefect": false,
    "fileId": 2,
    "file": "C:\\space\\Projects\\smallC\\0-3.cpp",
    "line": 7,
    "column": 4,
    "code": "ABV.GENERAL",
    "parent": "main",
    "message": "Array 'arr' of size 1 may use index value(s) 1",
    "anchor": 96865,
    "trace": {
      "traceBlocks": [
        {
          "id": 0,
          "method": "main",
          "fileId": 2,
          "file": "C:\\space\\Projects\\smallC\\0-3.cpp",
          "lines": [
            {
              "line": 2,
              "column": 0,
              "text": "Array 'arr' size is 1.",
              "type": "EVENT"
            },
            {
              "line": 7,
              "column": 0,
              "text": "Possible attempt to access element 1 of array 'arr'.",
              "type": "EVENT"
            }
          ]
        }
      ]
    },
    "prefix": "efect-ABV1arr[1]=1;//Defect-ABV2",
    "postfix": "return0;}",
    "alive": true,
    "state": "NEW",
    "citingStatus": "ANALYZE",
    "statusChanged": false,
    "creationTime": 0,
    "groupingCode": 0,
    "starScore": 0
  }
]

XML 出力

kwcheck list または kwcheck run -F xml を使用して XML 出力を生成します。

XML 出力例

<?xml version="1.0" encoding="UTF-8" ?> 
- <errorList xmlns="http://www.klocwork.com/inForce/report/1.0">
 - <problem>
    <problemID>3</problemID> 
    <isSystem>true</isSystem>
    <file>/space/temp/b1.cc</file> 
    <method>bar</method>
    <code>LV_UNUSED.GEN</code> 
   <message>Local variable 'm' is never used</message> 
    <citingStatus>Analyze</citingStatus> 
    <owner>unowned</owner>
    <severity>Review</severity> 
    <severitylevel>4</severitylevel> 
    <displayAs>Warning</displayAs> 
 - <taxonomies>
    <taxonomy name="C and C++" metaInf="" /> 
    <taxonomy name="alpha" metaInf="" /> 
    <taxonomy name="tax1" metaInf="" /> 
    </taxonomies>
   </problem>
 - <problem>
    <problemID>4</problemID> 
    <file>/space/temp/b1.cc</file> 
    <method>main</method>
    <code>UNREACH.GEN</code> 
    <message>Code is unreachable</message> 
    <citingStatus>Analyze</citingStatus> 
    <owner>unowned</owner>
    <severity>Review</severity> 
    <severitylevel>4</severitylevel> 
    <displayAs>Error</displayAs> 
 - <taxonomies>
    <taxonomy name="C and C++" metaInf="" /> 
    <taxonomy name="alpha" metaInf="" /> 
    </taxonomies>
    </problem>
    </errorList>

XML 出力ファイル形式

XML Klocwork の出力は、内部に複数の<errorList> <problem> 要素がある (またはこの要素がない)要素を 1 つ含みます。各問題説明は、次のタグを含みます。

  • <problemID> は、指摘に割り当てられる番号です。
  • <isSystem> は、システム指摘かどうかを特定します。
  • <file> はファイル名です
  • <method> は、ファイル内でステートメントが出現する位置です。
  • <code> は指摘コードです。C および C++ チェッカーリファレンスまたはJava チェッカーリファレンスを参照してください。
  • <message> は、指摘に寄与するコード内のキーステートメントを識別します。
  • <citingStatus> は指摘ステータスです。
  • <owner> はファイルのオーナーです。
  • <state> は指摘ステートです。
  • <history> はステータスの更新履歴です:内容は、ステータスを変更したユーザー、変更後の指摘ステータス、タイムスタンプ (ミリ秒単位)、およびコメントです。指摘のステータスが 2 回変更された指摘のみが表示されます。
  • <severity> と<severitylevel> は指摘重要度を表します。
  • <displayAs> はエラーまたは警告です。オプションは、警告を出力に示すかどうかを決定します。
  • <taxonomies> は、指摘のタイプが属する分類基準です。

メトリックしきい値違反のエラーメッセージフィールド

メトリックしきい値違反のエラーメッセージフィールドには、次の追加フィールドがあります。

<issue_ID> <file>: <line> <metric> <status> Violated metric "<description>": <entity> <real_value> <operation> <threshold>

フィールド

  • <metric> はメトリック名です。
  • <description> は違反のあったメトリックの簡単な説明です。
  • <software_entity> はメトリック違反がある特定のソフトウェアエンティティの名前です。
  • <real_value> はコードオブジェクトで検出されたメトリックの値です。
  • <operation> は真の値としきい値の論理比較で、小なり (<)、等号 (=)、大なり (>) などの式です。
  • <threshold_value> はメトリックしきい値構成ファイルのしきい値セットです。

例:

6 (Local) /test_files/TC00000192.c:3 METRICS.E.cyclomatic_complexity Analyze
Violated metric "cyclomaticcomplexity": foo1 21>20

この出力はファイル TC00000192.c の行 3 が循環的複雑度のメトリックに違反することを示します。foo1 は複雑度が 21 で、しきい値の 20 より高いため、違反になります。