解析

Klocwork 2023.3 の時点で、Visual Studio で行われる解析は、デフォルトで kwcheck 外部解析エンジンになります。kwcheck がインストールされていない場合、解析は組み込みの内部エンジンにフォールバックしません。外部エンジンを使用するには、kwcheck がインストールされていることを確認してください。kwcheck を構成するには、[拡張機能] > [Klocwork] > [オプション] に移動します。

C/C++ コード: デフォルトでは、ファイルを保存するときに、Klocwork Visual Studio 拡張機能が必ず実行されます。別の方法として、オンザフライ解析を使用して、ファイルを開くときと入力するときに Klocwork に指摘を検出させることができます。

C# コード: ピュア C#、または C/C++ と C# の混合ソリューションの場合、ソリューションを右クリックし、[ソリューションの解析] を選択します。あるいは、プロジェクトを右クリックして [解析選択] を選択します。ソリューションまたはプロジェクトのフル解析により、C/C++ とC# の指摘がすべて検出されます。

Klocwork がファイルで指摘を検出すると、エディターの左右の余白に指摘マーカーが表示されます。左のマーカー (chevrons) は、テキストでスクロールされます。Klocwork が同じ行で複数の指摘を検出すると、左のガターマーカーには重要度が最高の指摘だけが表示されます。

マーカーは重要度別に色分けされます。

[左余白] アイコン[右余白] アイコン重大度
[重大]、[エラー]
[警告]、[レビュー]
 [無視]
 [重大]、[エラー] (サーバーの指摘)
 [警告]、[レビュー] (サーバーの指摘)
 [無視] (サーバーの指摘)

Visual Studio Extension が表示する指摘のタイプに関するいくつかの注記

デフォルトで Visual Studio Extension はデスクトップ、システム、およびサーバーの指摘を識別し、表示します。どの指摘を表示させるか、構成の設定を変更することができます。

デスクトップの指摘

デスクトップの指摘とは、Visual Studio Extension で検出される指摘です。コネクテッドデスクトッププロジェクトでは、Visual Studio Extension はシステム指摘およびローカルのみの指摘という 2 つのタイプのデスクトップの指摘を識別します。たとえば、上記の画像では、

  • 緑で強調表示されるNPD.FUNC.MUST指摘はシステム指摘です。このことは、括弧内の行番号後にある [System] の語で示されます(Line 130, System)。システム指摘とは、Klocwork が次の 2 つの方法で識別する指摘です。Klocwork はデスクトップ解析を使用してローカルで指摘を検出します。また、Klocwork は Validate サーバー上の統合ビルドで指摘を検出します。
  • 青で強調表示される HA.OPTIMIZE 指摘も、デスクトップ解析で検出される指摘です。これらの 2 つの指摘では、括弧内の行番号後に [System] の語がありません。すなわち、単にローカルで検出された指摘であり、Validate サーバー上の統合ビルドでは検出されていません。

ローカルな指摘のみを表示

[Klocwork 指摘] ウィンドウで [ローカルな指摘のみを表示] アイコン をクリックして指摘リストをフィルター処理します。これにより、デスクトップ上でローカルに検出された指摘のみを表示し、Validate サーバー上の統合ビルドで検出された指摘は表示しません。

サーバーの指摘

サーバーの指摘とは、Klocwork が Validate サーバー上の統合ビルドで検出した指摘ですが、Klocwork がローカルなデスクトップ解析を使用することで検出しなかった指摘です。これは、高度に最適化されたデスクトップ解析の性質により発生する可能性があります。上記の画像では、赤で強調表示されるCWARN.MEM.NONPOD指摘はサーバーの指摘であり、指摘リストの左マージンにある アイコンで示されます。

サーバーの指摘を解決するためにソースコードを修正した場合も、次の統合ビルトが実行されるまでは、指摘リストから削除されません。 同様に、システムの指摘を解決するためにソースコードを修正した場合も、デスクトップ解析によって検出されずにサーバーの指摘となり、次の統合ビルトが実行されるまでは指摘リストから削除されません。

スタンドアロンデスクトップモードで作業する場合 (すなわち、コネクテッドモードでない場合) は、表示されるすべての指摘はデスクトップの指摘に分類されます。Validate サーバーの統合プロジェクトに接続されていないため、サーバー指摘が表示されることはありません。

サーバー指摘のロードを無効化

Visual Studio Extensionは、デフォルトでサーバー指摘を表示します。Klocwork の指摘リストで、サーバー指摘を表示させないようにする場合は、以下を行います。

  1. 使用している Visual Studio のバージョンを開き、[Klocwork] > [オプション] に移動します。
  2. [解析] タブをクリックします。
  3. [サーバー指摘] セクションで、[サーバー指摘のロード] チェックボックスのチェックを外します。
[サーバー指摘のロード] チェックボックスを選択または選択解除すると、ソリューションを閉じて再度開いた後に変更が有効になります。