地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

Cppcheck C/C++のソースコードを静的解析

簡単なツールをCで書くことがたまにあるのでそのツールをリポジトリにまとめてる。そんな時にモダンなC環境は静的解析とかどうやってるんだろうって思って調べたらCppcheckっていうツールを見つけた。

公式を見てるとDebianUbuntuなど、たいていのディストリビューション向けにパッケージが用意されているただバイナリはwin向けのみ置いてるみたい。

Cppcheck - A tool for static C/C++ code analysis

install自体はとても簡単でソースを取ってきてmakeするだけ。オプションはパスやCのオプションを指定する程度。

$ git clone git://github.com/danmar/cppcheck.git

$ sudo make PREFIX=/usr/local SRCDIR=build CFGDIR=/usr/local/share/cppcheck/cfg HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"  install

ちなみにmaccentosを使ってるのでbrewyumでさっと入れることも可能

# CentOS
$ sudo yum install cppcheck

# Mac
$ brew install cppcheck

チェックしてくれる内容はこんな感じ

  • error メモリリークやNULLポインタの参照の可能性のある箇所を指摘
  • warning 未初期化の変数を使用している箇所などを指摘
  • performance 冗長な代入など、無駄な処理がある箇所を指摘
  • portability 移植性の観点から問題のある箇所を指摘
  • style 未使用の変数などを指摘
  • information Cppcheckの挙動に関する補足情報を出力

nullポインタなんかは静的解析で取れるなら嬉しい。(実行時のSEGVを見る機会が減ると嬉しいなぁっていう思い)

GitHub - danmar/cppcheck: static analysis of C/C++ code

今でも活発に動きのあるC/C++の静的解析ツール。積極的にCを書く機会はなくなってしまったけど簡易ツール作成のリポジトリなんかで使っていこう。