NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

C++静的分析ツールのCppDependを使用してみた。

CppDependとは

www.cppdepend.com

CppDependはCまたはC++のプロジェクトのコードを分析してコードの維持管理を容易くできるようにする分析ツールです。これを使うによって下記のことが把握できます。

  • コードの総量(LOC)が把握できる。
  • 総コードとコメントとの割合が見れる。
  • プロジェクトに定義したタイプ、メソッドなどの数が確認できる。
  • レガシーコードの管理がしやすくなる。
  • プロジェクトのコード規則に違反したコードがあるかが確認できる。
  • 技術的負債の比率が確認できる。
  • などなど…

実は以前に知り合いからから進められましたが、今更使うことになりました。今日使い始めましたし、お金もないから体験版をダウンロードしてしばらく使いたいと思います。

実はGitHubなどでオープンソース開発の目的で使用しているなら無料で使える方法があるようです。
プロジェクトに準じた文書とアクティビティを用意して、CppDependをサービスしている会社に送って無料で使わせたいと頼めば無料で使えるらしいです。ツールの定価はおよそ599ドルになりますし、個人の開発者はこのルートを通してツールを無料に使うようにするほうが良いと思います。

実際に使用して見ました。

f:id:neuliliilli:20181201180145p:plain
C++プロジェクト、`Dy`を静的分析した画像

最初分析をするのにおよそ10分くらい掛かりました。そしてこのように分析した結果の画面が見れます。このようにLOC、技術的負荷などが見れるようになります。

そしてこの画面でけじゃなくて、数値をクリックしてどの部分のどのコードが正しいかそれとも直すべきなのかをお知らせしてくれます。

例えば、右列のRules > Criticalをクリックしたらこのような画面が表示され、そして直すべきのコードを見せるようにしてくれます。

f:id:neuliliilli:20181201182215p:plain
イシューの個数、日で換算した技術的負荷の大きさなどが見れます。

そしてMetricsメニューではメソッドかタイプごとのLOCまたは複雑度を色で見せてくれます。全体の様相を把握したいならこれを見るほうが良いでしょうね。

f:id:neuliliilli:20181201182948p:plain
`Metrics`で見れるプロジェクトの全体的様相。

結論

技術的負荷を指すDebtは日々にどんどん増加するそうです。
規則違反、臭いコード(Code smell)、大きすぎるタイプなどが技術的負荷に当てはまります。ですから静的コード分析を行ってこのDebtを減らすようにリファクタリングなどをするほうが良いかもしれないですね。