小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Visual Studio + CppcheckでC++コードの静的解析ができる

はじめに

C++のソースコードを静的解析して、不具合などを検出したいと思った場合、大抵は有償の製品を使うことになります。代表的なもので、Visual StudioのTeam Editionが静的解析の機能を持っていますが、購入すると数十万くらいかかります。
無料で静的解析できないのかと調べてみたところ、Cppcheckというフリーソフトが見つかりました。この記事では、Visual Studio 2008とCppcheckを連携させて、Visual StudioからC++のソースコードの静的解析ができるようにしてみました。

Cppcheck

CppchekはC/C++用の静的解析ツールです。メモリリーク、アロケーション(確保と解放)のミスマッチ、バッファオーバーラン、さらに多くのチェックを行ってくれます。
Cppcheckでは主に以下のチェックを実施してくれます。

  • 範囲外例外のチェック
  • クラス毎のコードチェック
  • 例外のチェック
  • メモリリークのチェック
  • 推奨されない関数の警告
  • 不正な使い方のSTLに対するチェック
  • 初期化されていない変数、未使用変数のチェック
ソフトウェアのバージョン

今回は以下の環境で動作させてみました。

  • Windows 7
  • Visual Studio 2008 Pro
  • Cppcheck 1.5.3
Cppcheckの入手とインストール

以下のサイトからCppcheckをダウンロードします。

インストーラを起動して、ウィザードに従いインストールを行います。





Visual StudioとCppcheckを連携する

Cppcheckのインストールが完了したら、Visual StudioとCppcheckを連携してみます。設定の方法は、以下のブログを参考にしました。

1.Visual Studioのメニューからツール−外部ツールを選択します。

2.外部ツールの設定画面で追加ボタンをクリックします。
3.タイトルや引数などは以下のように設定します。

  • タイトル:Cppcheck
  • コマンド:cppcheck.exe
  • 引数:--enable=all --template vs $(ItemPath)

また、"出力ウインドウを使用"にチェックを入れます。

4.OKボタンをクリックして、ダイアログを閉じます。

Visual StudioからCppcheckを呼び出して、静的解析を行う

1.Visual Studioで解析したいソースコードを表示します。
2.ツールメニューから、さきほど追加したcppcheckを選びます。
3.出力ウインドウにcppcheckによる解析結果が英語で表示されます。出力ウインドウ内のエラーをダブルクリックすると、該当行にジャンプすることができます。

おわりに

有償の静的解析ツールはバカみたいに高級なんですが、Cppcheckだと無料でソースコードの静的解析が行えます。Cppcheckは解析結果が英語で出力されるため、その内容を理解するのにスキルが必要ですが、有志で日本語版を作成されている方もいらっしゃいます。「Cppcheck 日本語化」などで検索されると見つかりますので、試してみてください。

Microsoft Visual Studio 2010 Professional アップグレード
マイクロソフト (2010-06-18)
売り上げランキング: 498