読者です 読者をやめる 読者になる 読者になる

本当は怖い情報科学

情報系大学院生の趣味&実益ブログ。

EmacsとCMakeで、自分のコードを cpplint クリーンにする

C++

Google Coding Style というものがあります。コーディング規約は世の中にたくさんあると思いますが、これはGoogle社が発表しているものです。

このコーディング規約を採用する上でいくつか便利なツールがあります。一つは、emacs用のgoogle-c-style.elです。これは、インデント等の動作を Google Coding Style に沿ってカスタマイズしてくれるものです。

次に、自分のコードがCoding Styleに準拠してくれるかをチェックしてくれる cpplint.py というコマンドがあります。これを使えば、違反している場所と理由を具体的に指摘してくれるので、規約にしたがっていない点を修正できます

しかし、いちいちコマンドラインから手動で cpplint.py 起動するのは賢くありません。第一に面倒くさいし、いちいち該当箇所を覚えてエディタで開くのも頭が悪いです。そこで、CMake経由でcpplint.pyを実行できるようにしてみました。

まず、CMakeで独自のコマンドを実行する方法ですが、これは ADD_CUSTOM_TARGET を使えばよいです。cpplint.py を ${PROJECT_SOURCE_DIR}/bin/cpplint.py においたとして、例えばこんな具合に書きます。

ADD_CUSTOM_TARGET(cpplint
  python
  ${PROJECT_SOURCE_DIR}/bin/cpplint.py
  --filter=-runtime/rtti,-build/include_order
  ${PROJECT_SOURCE_DIR}/src/*
  )

"--filter" の項は、ヘルプを見て適当に調整してください。

そして、通常と同じようにMakefileを生成すれば、make cpplint で実行できます。C/C++プログラム以外のファイルは良い感じに無視してくれます。

$ mkdir build
$ cd build
$ cmake ..
$ make cpplint

これで実行できるはずです。

最後に、cpplintはemacsが解釈可能な形式でエラー箇所を出力してくれるので、emacsから実行すればコンパイルエラー等と同じようにエラー箇所に飛ぶことができます。これは、

M-x compile

で make -k -C ~/xxx/yyy/zzz/build を指定すれば、無事にemacs経由でcpplintを起動することができました。

【広告】