コード品質管理ツール「CppDepend」を使ってみた

最近Node.jsを書くことが多く、コードの品質管理ツールとしてJSHintを使っています。VimEmacsSublimeAtomなどの有名どころのエディタと連携して動的にコードスタイルのチェックが出来るため、コーディングを重ねることで自然によいコードを書けるように矯正を行うことができます。
例えば、次のようなコードは怒られます。

var SOME_VARIABLE = LEFT_OPERAND 
                    + RIGHT_OPERAND;

正しくは以下のようにします。

var SOME_VARIABLE = LEFT_OPERAND + 
                    RIGHT_OPERAND;

JavaScriptセミコロンの省略が可能なため、なるべく解釈に間違いのないようなコーディングが求められます。よって、行が次の行に続いているのかが分かり難い上のコードよりも下のコードの方が好ましいわけです。僕は上のコードの方が好きだったのですが、JSHintによって間違ったコーディングをしていたことに気がつきました。


他の言語でもJSHintのようにスタイルチェックをしてくれるものがあればいいなーと思っていたある日、「C++のコード品質管理ツール『CppDepend』を使ってみないか?」と薦められたため、使ってみました。

CppDepend

http://www.cppdepend.com/

主な特徴

  • デフォルトでコードに対する項目や規則が120個用意されている
  • 2つのビルド間で、単なるテキスト比較以上の変更を検知
  • クラス数、名前空間数、メソッド数などの82個のコードメトリクス

skypeやhp社も使っているとか。対応しているOSはWindowsLinux。有料ソフトですが、14日間の試用ができます。
僕が普段使っているMacに対応していないのが残念ですが、今回はWindows7でやってみることに。
Visual Studioなどのプロジェクトファイルにも対応しているようなのですが、持っていないので今回は僕が競技プログラミングで使っているC++のライブラリに対して使ってみました。

はじめは何らかのプロジェクトファイルがないと使えないのかと思いましたが、Project Makerを使ったら普通のC++ファイルに対してもいけました。



実行してみるとこんな感じのHTMLが表示されます。行数が少ないのもあるんだろうけど解析が結構早い。
コードの総数が539行と意外と少なかったのと、コメントが23%もあるというのにびっくり。



こちらがデフォルトの設定で違反していた規則の一覧。
大まかにあげてみると

  • 型名は大文字で始まるべき
  • 同じ名前の関数使いすぎ
  • メソッドで局所変数多すぎ
  • 1つのメソッドが大きすぎ
  • メソッドのコメントが少ないかも
  • フィールドはprivateにすべき

すっごい怒られてますけど、競技プログラミングはコードが汚くても誰にも迷惑をかけないのでいいんです(言い訳)。


以上がCppDependを軽く使ってみた結果です。
コード管理の項目がきめ細やかなので、C/C++Visual Studioなどを使って大型開発をしていて、コードの品質管理に困ったら選択肢に入れてみるのもいいんじゃないかと思います。