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 に渡す必要があることを示しています。
チェックイン ポリシーの要件としての分析ツールの実行
組織的な取り決めとして、チェックインされるすべてのコードが、特定のポリシーを満たしていることが必要が場合があります。たとえば、次のようなポリシーが考えられます。
チェックイン対象のコードにビルド エラーが存在しないこと。
最近のビルドでコード分析が実行されていること。
これは、チェックイン ポリシーを指定することにより実現できます。
Team System Team Build の統合
ビルド システムの統合機能を使用すると、分析ツールをビルド プロセスの一環として実行できます。詳細については、「Team Foundation ビルドの概要」を参照してください。
コマンド ラインのサポート
開発者は分析ツールを開発環境から実行する以外に、コマンド ラインから実行することもできます。次にその例を示します。
C:\>cl /analyze Sample.cpp