OSSのC/C++用静的解析ツール「Cppcheck」

久々に静的解析ツール界隈の情報を集めていたのですが,そういえばあまりCやC++の解析ツールについては話題が無いなぁと思ったので,今日はC/C++の解析ツールのひとつであるCppcheckを(非常に)簡単に紹介したいと思います。たぶん組込み系の方々には需要があるのではないかと想像します。

■Cppcheckの概要
C/C++によるソースコードの静的解析ツールです(執筆時ver1.55)。
メモリリーク,アロケーション(確保と解放)のミスマッチ,バッファオーバーラン等のチェックを行ってくれます。また,STLにも対応しています。
OSSとして公開されており,Jenkinsのプラグインに採用されていることからご存じの方も多いかもしれません。

★Cppcheck for Windows
 http://cppcheck.sourceforge.net/

■インストール
DLしてきたインストーラを実行し,ダイアログに従ってインストールします。
OKボタンをクリックしていくだけでいいです。

■基本的な解析手順
インストールしたCppcheckを実行するとダイアログがguiが開きます。
メニューの「解析」→「ディレクトリ選択」でソースが保存されているディレクトリを選択します。選択すると解析が始まり,結果がリストされます。

しかしここで注意が一点あります。
メニュー等は日本語化されていますが,パスの指定は日本語に対応していません。
ですから,例えばデスクトップに解析対象となるフォルダを置いて,それを指定すると解析されません。
ドライブの直下にtempを作るなどして解析対象はそこに保存するといいでしょう。(ディレクトリ指定したのに動いているそぶりを見せないときはパスやフォルダ名・ファイル名等を疑ってみてください)

オプションなどの詳細は…マニュアルやヘルプを参照ください。
英語ですが分量少なく簡単なので,問題なく理解できると思います。

■VS2010の外部ツールとして登録
日々プログラマそれぞれがプログラミング時にカジュアルにチェックしたいという要望もあるかもしれません。
その場合はVS等の外部ツールに登録しておくと便利です。
「ツール」→「外部ツール」で登録画面が開きますので,実行ファイルの場所と引数を指定してください。またこのとき「出力ウィンドウに出力」にチェック入れるのを忘れずに。

試していませんが,VS2012でも大丈夫なんじゃないかと思います。

■どういうケースにおすすめか
大まかに以下の二つと思います。

・C/C++の静的解析ツールを持っていない
ベンダツールに比較すると機能的にはまだまだですが,費用がかからず,インストールも簡単ということで現場の負担がかからないことが魅力です。
お手軽にポカミスが防げるようになるということで一定の効果が得られますので積極的に使うとよいでしょう。
また,このツールをきっかけとして機能豊富なベンダツールの導入を検討するなどもいいと思います。

・ベンダツールを導入するがライセンスが足りていない
すでにベンダツールを導入しているところもあるかと思います。
しかしながら多くの場合ライセンスの本数がチームメンバーに対して足りておらず,限られたメンバやマシンでした解析ができないといった状況もあるのではないでしょうか。
その場合は,足りていないライセンスはCppcheckで補うことで常に全員が静的解析が行える状況を作り出します。
また,ツールが違うと指摘の幅も広げることができます。
例えば,各自の環境にはCppcheckを入れておき,ビルドマシンなどにはベンダのツールを入れておく,などの運用も可能かと思います。

■おわりに
インストールしてソース突っ込めば解析してくれるという,非常に簡単なツールなので使わない手はないと思います。(学習コストほぼゼロ)
また,比較的メンテナンスされているようですからそういった意味でもおすすめかもしれません。

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です