EmacsとCMakeで、自分のコードを cpplint クリーンにする
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を起動することができました。