はじめに
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)
Visual StudioからCppcheckを呼び出して、静的解析を行う
1.Visual Studioで解析したいソースコードを表示します。
2.ツールメニューから、さきほど追加したcppcheckを選びます。
3.出力ウインドウにcppcheckによる解析結果が英語で表示されます。出力ウインドウ内のエラーをダブルクリックすると、該当行にジャンプすることができます。
おわりに
有償の静的解析ツールはバカみたいに高級なんですが、Cppcheckだと無料でソースコードの静的解析が行えます。Cppcheckは解析結果が英語で出力されるため、その内容を理解するのにスキルが必要ですが、有志で日本語版を作成されている方もいらっしゃいます。「Cppcheck 日本語化」などで検索されると見つかりますので、試してみてください。
売り上げランキング: 498