次の方法で共有


C/C++ のコード分析の概要

更新 : 2007 年 11 月

C/C++ コード分析ツールは、C/C++ ソース コードの障害に関する情報を開発者に提供します。このツールによってレポートされる一般的なコーディング エラーとしては、バッファ オーバーラン、初期化されていないメモリ、null ポインタの逆参照、メモリ リーク、リソース リークなどがあります。

IDE (統合開発環境) の統合

開発者の利便性を高めるため、分析ツールは IDE に完全に統合されています。ビルド プロセス中、ソース コードに対して生成された警告はすべて [エラー一覧] に表示されます。これらの警告には、障害パスの情報が含まれ、警告をダブルクリックすると、警告の原因となった障害パスが強調表示されます。

#pragma のサポート

次の例に示すように、開発者は、#pragma ディレクティブを使用することで、警告をエラーとして扱ったり、警告の有効と無効を切り替えたりできます。

#pragma warning (error: 6260)

#pragma warning (disable: 6011)

#pragma warning (enable: 6056)

注釈のサポート

注釈を使用すると、コード分析がより正確になります。注釈は、関数のパラメータおよび戻り値の型に対する Pre 条件および Post 条件について、追加情報を提供します。

#include <CodeAnalysis/SourceAnnotations.h>

[returnvalue:Post( MustCheck=SA_Yes )] double* CalcSquareRoot

(

    [Pre( Null=SA_No )] double* source,

    unsigned int size

);

以下、上記の例について説明します。

[Post ( MustCheck=SA_Yes)] は、呼び出し元が CalcSquareRoot の戻り値をチェックする必要があることを示しています。

[Pre ( Null=SA_No)] は、呼び出し元が null 以外のパラメータ "ソース" を CalcSquareRoot に渡す必要があることを示しています。

チェックイン ポリシーの要件としての分析ツールの実行

組織的な取り決めとして、チェックインされるすべてのコードが、特定のポリシーを満たしていることが必要が場合があります。たとえば、次のようなポリシーが考えられます。

  1. チェックイン対象のコードにビルド エラーが存在しないこと。

  2. 最近のビルドでコード分析が実行されていること。

これは、チェックイン ポリシーを指定することにより実現できます。

Team System Team Build の統合

ビルド システムの統合機能を使用すると、分析ツールをビルド プロセスの一環として実行できます。詳細については、「Team Foundation ビルドの概要」を参照してください。

コマンド ラインのサポート

開発者は分析ツールを開発環境から実行する以外に、コマンド ラインから実行することもできます。次にその例を示します。

C:\>cl /analyze Sample.cpp