LoginSignup
2
0

More than 1 year has passed since last update.

CppcheckをGUIで使う

Last updated at Posted at 2019-09-27

cppcheck

無料で利用できるC/C++用の静的解析ツールです。

インストール

下記サイトから、任意のVersionを入手します。
※2023-03-28の時点で、「cppcheck-2.10-x64-Setup.msi」でした。

新規プロジェクトの作成

あらかじめ、解析対象のソースコードを準備しておき、以下の手順で作成します。

  1. インストールしたらまず、cppcheckを起動します。
  2. GUIから、メニュー -> ファイル -> 新規プロジェクトを選択して、ファイル作成ダイアログを表示させます。
  3. 解析対象のソースコードのルートツリーを選択して、任意のファイル名のプロジェクトファイルを作成します。(拡張子は*.cppcheckです。)任意でDefineやincludeパスを記載します。
  4. 作成完了すると、自動で解析が始まります。

解析の実行

GUIから、メニュー -> チェック -> 全ファイル再解析 で実行できます。

警告の内容はファイル欄に表示され、要約も表示してくれますが、言語を日本語にしていても要約は英語になります。

最初の設定

解析の精度を上げる設定をします。これは任意です。

Cppcheckの設定

  • 編集 -> 設定 -> 全般 -> すべての#ifdefをチェックする をチェック
  • 編集 -> 設定 -> 全般 -> エラーIDを"Id"に表示する をチェック
  • 編集 -> 設定 -> 全般 -> 結論の出ない指摘もチェックする をチェック

プロジェクトの設定

任意のエラーを除外

たとえばデフォルトでは、下記のような変数のスコープを縮小できる警告が有効になっています。

「The scope of the variable "hoge" can be reduced」

これを抑制するには、ファイル -> プロジェクトの編集 -> 警告オプション -> 指摘の抑制 を追加します。
エラーIDにvariableScope、ファイル名に * を指定すると良いです。
どのメッセージがどのIDを意味するのかを確認するには、Cppcheckの設定でエラーIDを表示するオプションを有効にします。

こんな感じで追加します。

Id File Symbol
unusedFunction fileName=*main.c symbolName=NMI_Handler
variableScope fileName=*
constParameter fileName=*

Addon追加

まず、アドオンのpyファイルを入手します。
それとアドオンはpythonのため、Windows用のPythonが必要です。

Windows x86-64 MSI installerあたりをダウンロードしてインストールします。
編集 -> 設定 -> アドオン -> Pythonインタプリタの場所にC:/Python27/python.exeを指定
C:\Program Files\Cppcheck\addonsに、アドオンのpyファイルを追加します。
cert.pyあたりを追加すれば、プロジェクトファイルの設定で、アドオンとツール画面のグレーアウトが有効になります。

Windowsでコマンドラインで使いたい場合

C:\Program Files\Cppcheckにあるcppcheck.exeを実行します。

$ cppcheck --doc
$ cppcheck --errorlist

最後に

結構細かいところまで検出してくれるので、バグ修正に有効。
前までのバージョン、少なくとも2.7までは、グローバルな変数の未使用検出ができなかったのだが、
2.10では出来るようになっていた。
さらに細かい指摘まで検出するbughuntingという機能があったのだが、
これがクラッシュの連続で有用なのに使うことが出来なかったのだが、全くなくなってしまっている。
これは残念なことなので、ますますの進化に期待したい。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0