Eclipse の C++ 開発環境に静的コード解析をいくつか追加します。ここで解説する方法はプロジェクト単位ではなく1ファイル単位での解析となります。
追加するのはスタイルチェックやメトリクス解析などで、次のツールを使います。
- cpplint
- cppcheck
- SourceMonitor
メニューバーから Run > External Tools > External Tools Configurations...
を選択します。
ツールバーから選択してもいいです。
cpplint
まずは cpplint を登録します。
cpplint は以下の場所からダウンロードできます。
cpplint を実行するには python が必要です。
インストールしていなければ適当な場所にインストールしてください。
ここでは cpplint.py を E:\cpplint.py
、python は E:\python27
にインストールしてあります。
左下にある Program
を選択するとその上にある New
アイコンがクリック出来るようになるのでクリックします。
Name
に cpplint
と入力し、Location
と Arguments
に以下のように入力します。
Location:E:\python27\python.exe
Arguments:E:\cpplint.py ${resource_loc}
次に Common
タブを選択して、Display in favorites menu の Externals Tools
にチェックを入れます。
また、Launch in background はチェックをはずします。設定が終わったら Apply
を押します。
これで設定終了です。
cppcheck
同じような手順で、cppcheck を登録します。
cppcheck は以下の場所からダウンロードできます。
ここでは 1.74 (64bit) をデフォルト設定のままインストールしました。
cpplint と同じように New ボタンを押して新規に作成し、Name を cppcheck
、Location, Arguments を以下のように設定します。
Location:C:\Program Files\Cppcheck\cppcheck.exe
Arguments:--enable=all --force ${resource_loc}
cppcheck はインクルードしたファイルが検索できないとエラーとなりますが、--force
で強制的に解析します。
SourceMonitor
SourceMonitor はメトリクス解析をやってくれます。以下の場所からダウンロードできます。
ここではデフォルト設定のままインストールしました。こちらは次のように設定します。
Name:SourceMonitor
Location:C:\Program Files (x86)\SourceMonitor\SourceMonitor.exe
Arguments:/DC++ ${resource_loc}
実行してみる
計測したいファイルを開いた状態で Run > External Tools...
から実行したいツールを起動します。
cpplint と cppcheck はコンソール画面に、SourceMonitor はダイアログが表示されます。
CPPLINT.cfg
cpplint の設定は CPPLINT.cfg
ファイルを作成し、その中で記述します。CPPLINT.cfg ファイルは対象のソースコードと同じところに入れておくか親のフォルダに入れても構いません。プロジェクトのトップフォルダに入れておくと楽です。
例えば以下のような設定になります。
set noparent
linelength=100
filter=-whitespace/tab,-whitespace/indent,-whitespace/comment
linelength で行数を、filter でフィルターの細かい設定を行えます。
詳細はマニュアルを参照してください。
SourceMonitorが起動しない場合
対象のソースファイルが UTF-8 の場合、SourceMonitor が起動しないことがあります。
一度 SourceMonitor を直接起動し、File > Options > Allow parsing of UTF-8 files
にチェックをつけて再度試してみてください。
メトリクス計測について
詳しくは検索してもらえれば沢山見つかると思います。
複雑度の数値については 10 以下が理想とありますが、個人的には 50 以下、出来れば 30 以下をキープすればいいかと思っています。
ただし、場合によっては複雑な条件だらけになることもあるので例外はあると思っています。
metriculator
Eclipse のプラグインに metriculator というメトリクス計測があります。
Eclipse Marketplace からインストールするこtが出来ます。
使い方は Project Explorer 上でフォルダまたはファイルを右クリックして Run C/C++ Code Analysis
を選択します。
しばらくすると結果が表示されます。
項目 | 名前 | 説明 |
---|---|---|
McCabe | cyclomatic complex | サイクロマチック数(複雑度) |
NbMembers | Number of Members per type | クラスのメンバー数 |
LSLOC | Logical source lines of code | 行数 |
EfferentCoupling | Number of Efferent Couplings per type | クラスが参照している数 |
NbParams | Number of parameters per function | メソッドのパラメータ数 |