「cppcheck」の版間の差分

提供: C言語入門
移動: 案内検索
(ページの作成:「cppcheck とは、C言語/C++ 向けの ソースコード静的解析ツールです。 '''読み方''' ;cppcheck:しーぴーぴー ちぇっく __TOC__ ==...」)
 
(相違点なし)

2017年10月22日 (日) 12:52時点における最新版

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

関連項目