Cppcheck でセキュアコーディング 〜 基礎編 〜
Cppcheck のインストール
Cppcheck は Eclipse や Jenkins 用のプラグインが用意されていますが、今回はインストーラと単体 GUI ツールが用意されている Windows 版で説明します。
まずは、Cppcheck のページからインストーラをダウンロードします。緑色の背景で「Download Now!」と書いてあるボタンが Windows 用のインストーラです。
インストール手順は特に難しいこともなく、C++ でコードを書いている人ならここでつまづくわけがありませんね。
ソースコードのチェック
コマンドラインからもチェックは可能ですが、せっかく GUI ツールが付いているのでそちらを使ってみます。
[プログラム] – [Cppcheck 1.6.0.1] – [Cppcheck] からアプリを起動します。表示されたウィンドウのファイルメニューの下にある C++ アイコンをクリックするとフォルダの下にある *.cpp ファイルをいっぺんにチェックしてくれます。
チェックが終わると、問題があった箇所を列挙してくれます。リストから個別の問題を選択すると、下のペインには指摘内容の詳細が表示されます。メッセージが英語なのがオエッって感じかもしれませんが、C++ でコーディングをしている人ならピンとくるレベルかと思います。
デフォルトではエラー、警告、スタイル警告、移植性、パフォーマンス、情報の6種類のカテゴリーがすべて表示されるようになっていますが、プログラムの安全性のチェックという目的だけであれば、エラーと警告のみのチェックに絞っても構わないと思います。チェックが早くなりますしリストも見やすくなります。僕はコンパイル時の Warning も全部消したい人なので全チェックしてもひとつも指摘が出ないようにしたいですが (^_^;)
エディタで指摘行を開く
各行をダブルクリックするとソースコードを開いてくれるのですが、デフォルトではメモ帳が開きます。メモ帳だとファイルは開きますが、指摘のあった行には自動的に飛んでくれません。
外部のエディタを使って指摘のあった行にジャンプするには設定が必要です。[編集]-[設定]から設定メニューを開き、そのダイアログの中の[アプリケーション]タブを選択します。僕は Sublime Text 2 を使っているのでその設定を行います。
ポイントはコマンドラインに渡すパラメータでしょう。起動時の引数としてエディタに渡されます。ファイル名と指定の行を引数で受け取れるエディタであれば、(file) と (line) を書くことで起動時にファイル名と行数に置換されてエディタが呼び出されます。
Sublime Text 2 は ファイル名:行番号 という引数を渡すことで指定のファイルの指定の行を開くことができるので (file):(line) と書きます。
設定を終えたら「デフォルトとして設定」ボタンを押してデフォルトエディタにしておきましょう。さもないと、またメモ帳が開いてしまいます。さて、ダブルクリックしてみましょう…
うまくいきました!
秀丸エディタの場合
秀丸エディタの起動オプションによると、 /j オプションで目的の行に飛ぶようです。またファイル名の前にオプションを付けなくてはならないようですので、次のようにすればよいと思います。
/j(line) (file)
※(line) と (file) の間は空白が入っています。
次回は応用編として Visual Studio との統合方法をご紹介します。