EN JP CN

kwcheck for C/C++ をお使いになる前に

kwcheck for C/C++ をお使いになる前に

kwcheck for C/C++ をお使いになる前に

kwcheck for C/C++ をお使いになる前に

kwcheck は、IDE プラグイン形式では Klocwork によってサポートされていない IDE およびテキストエディターを使用する、C/C++ および Java デベロッパー向けのデスクトップ解析ツールです。GUI ツールの Klocwork Desktop も使用できます。

kwcheck for Java への切り替え

ローカルプロジェクトの設定

ローカルプロジェクトを設定し、kwcheck createを使用してサーバープロジェクトに接続します。

kwcheck create --url http://server2:8080/my_project

この手順は、初回にのみ実行します。ここからの手順は、初回の解析実行でも 2 回目以降の解析実行でも同じです。

ビルド設定のキャプチャ

ビルド設定をキャプチャするには、ローカルプロジェクトディレクトリを含むディレクトリ (デフォルトでは .kwlp) から kwshell を実行します。

kwshell

kwshell は起動時に、使用している Klocwork ローカルプロジェクトディレクトリ (.kwlp) を示します。たとえば、次のようになります。

Using Klocwork project directory '/space/testing/jlee/my_project/.kwlp'
Running Klocwork Shell ... 

コマンドラインプロンプトに [kw] 接頭辞も追加され、kwshell の実行が示されます。

次に、コンポーネントをビルドします。Klocwork で "検出" できるように、ファイルを kwshell の下で 1 回以上コンパイルする必要があります。 kwshell はコンパイルとリンクコマンドを監視して build specification (ビルドスペック) を作成します。

make
注: サーバープロジェクトの設定を build specification template (ビルドスペックテンプレート) の形式で使用する必要がある場合 (推奨されません)、kwshell を実行しないでください。この場合は、1 つ以上の変数を定義する必要があることを示すメッセージが表示される場合があります。build specification (ビルドスペック) の変数を設定するには、kwcheck set-var を使用します。

解析を実行する

  1. kwcheck runでコードを解析します。
    kwcheck run
    
  2. kwcheck listを使用して検出された指摘を表示します。
    kwcheck list -F detailed
    
    注: 解析を実行したときに新しく検出された指摘はローカルな指摘です。システム指摘を表示するには、--system オプションを指定します。
    トレースバックは、検出された指摘に寄与するソースコードのステートメントを識別します。
5 (System: 22) /testing/myproj/trees.c:777 ABR 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 'Analyze'

検出された指摘の詳細については、C および C++ チェッカーリファレンスを参照してください。

欠陥を修正し、残りは無視します。

  1. 本物の欠陥を修正します。
  2. 解析を再実行します。
    kwcheck run
    
  3. 検出された指摘が表示されます。
    kwcheck list -F detailed
    
    指摘がリストに表示されなくなれば、その指摘は修正済みです。
  4. 気にならない指摘は、kwcheck set-status で無視します。
    kwcheck set-status 23-25,30,32 --status Ignore -c "this is 3rd party software"
    
    これで変更内容がその他のデベロッパーや Klocwork Static Code Analysis にも表示されます。その他のデベロッパーによる変更でもデスクトッププロジェクトが更新されるようになりました。この状況は、別の統合ビルド解析の前でも発生します。