はじめに
マイクロソフトが無償で公開しているVisual Studio 2013 Express(Visual Studio 2013 Express for Windows Desktop)では、C++コードの静的コード解析ができます。
この記事では、Visual Studio 2013 ExpressでC++コードのコード解析を行ってみます。
Microsoft Visual Studio Professional 2013 DVD
posted with amazlet at 14.04.17
マイクロソフト (2013-11-29)
売り上げランキング: 377
売り上げランキング: 377
Visual Studio 2013 Expressの入手
Visual Studio 2013 Expressは、以下のページからダウンロードすることができます。
ケース1 初期化漏れ
以下のコードにおいて、戻り値i は引数valが1でないときに初期化されません。
int func1(int val) { int i; if ( val == 1) { i = 1; } return i; // i は 引数valが1でないときに初期化されない }
上記のコードをコード分析にかけてみます。
コード分析を実行するには、ビルドメニューから「ソリューションでコード分析を実行(Y)」を選択します。
コード分析が完了すると、分析結果が画面に表示されます。
分析結果をクリックすると、ソースコード上のどこが問題なのかハイライトされ、コード分析の詳細な内容が表示されます。
ケース2 バッファサイズオーバ
以下のコードは、5バイトのバッファ領域に6バイト書き込みにいきます。
int _tmain(int argc, _TCHAR* argv[]) { char tmp[5]; char tmp2[6]; memset(tmp, 0x00, sizeof(tmp2)); return 0; }
上記のコードをコード分析にかけてみます。
確かにバッファオーバランの可能性を検出しています。クリックすると、該当箇所がハイライトされます。
おわりに
無料で使えるので、プログラムのレビュー時などの活用してみてください。