cppcheck
提供: C言語入門
スポンサーリンク
cppcheck とは、C言語/C++ 向けの ソースコード静的解析ツールです。
読み方
- cppcheck
- しーぴーぴー ちぇっく
概要
ソースコード解析ツール の利点は、プログラムの問題を発見できることです。
cppcheck は、コマンドラインツールとして利用できますが、Eclipse や Visual Studio のプラグインが提供されています。 Jenkins のプラグインもあります。
機能
cppcheckは、以下のチェックや警告を提供します。
- 境界チェック
- メモリリーク
- ヌルポインタの参照
- 未初期化の変数
- 時代遅れ(obsolete) か 安全ではない 関数の利用
- 未使用、冗長なコード
- バグを示す疑わしいコード
インストール
FreeBSD
sudo pkg install cppcheck
Ubuntu
sudo apt install cppcheck
CentOS
sudo yum install cppcheck
Mac
brew install cppcheck
実行例
簡単な使い方
コード単体を指定する場合は、以下の通りです。
cppcheck --enable=all foo.c
ディレクトリを指定することもできます。
cppcheck --enable=all src
$ cat i.c /* * i.c * Copyright (C) 2017 kaoru <kaoru@localhost> * * Distributed under terms of the MIT license. */ int main(int argc, char *argv[]) { int i = 9; i = 0; return 0; } $ cppcheck --enable=all i.c Checking i.c ... [i.c:11] -> [i.c:12]: (style) Variable 'i' is reassigned a value before the old one has been used. [i.c:12]: (style) Variable 'i' is assigned a value that is never used.
define
たとえば、 ifdef でデバッグコードだったり、環境によって、関数の使い分けをします。
#ifdef EBUG x = 128; #else x = 256; #endif
以下の利用では、 x = 256; のほうのコードが cppcheck によってチェックされます。
cppcheck foo.c
ifdef EBUG のコードを使用して コンパイルする場合には、コンパイラだと、 cc -DEBUG と実行します。それと同じように cppcheck で define を指定する場合には、gcc などと同じように -D オプションを利用します。
cppcheck -DEBUG foo.c
include パス
インクルードパスを指定する場合には、 -I オプションを使用します。
cppcheck -I /usr/local/include foo.c
関連項目
ツイート
スポンサーリンク