Visual C++は最も広く使われているC++開発環境の1つであり、開発者に多くの便利な機能を提供しています。新しいバージョンごとに大きな改良が加えられ、開発体験を高める拡張機能も数多く公開されています。この記事では、 CppDepend。
コードベースを可視化する
依存関係グラフ
依存関係グラフは、コード要素間の依存関係を表す最も一般的な方法の1つであり、Visual Studioにも便利な実装が用意されています。CppDependが提供するグラフは、コード品質により重点を置いています。ボックスのサイズとエッジの太さを、用意されている複数のメトリクスのいずれかに比例させることができます。

依存関係マトリクス
DSM(Dependency Structure Matrix)は、コンポーネント間の依存関係をコンパクトに表現し、ナビゲートするための方法です。DSMはグラフと同じ情報を表しますが、次のような場合にはより実用的です。
- 多数のコード要素が関係している場合。
- 要素間の依存関係の重みを把握する必要がある場合。
- コード要素間の依存関係サイクルを簡単に特定したい場合。

ツリーマップ
Metric View では、コードベースは Treemapで表現されます。Treemapping は、入れ子になった長方形を使ってツリー構造のデータを表示する手法です。ここで使用されるツリー構造は、通常のコード階層です。
- C/C++プロジェクトは名前空間を含む
- 名前空間は型を含む
- 型はメソッドとフィールドを含む
各長方形のサイズは選択したメトリクスに比例します。既定では NbLinesOfCodeです。Metric View では、ツリーマップ要素に色を付けて第2のメトリクスを表示することもでき、2つのコードメトリクスを同時に可視化できます。
たとえば、このツリーマップでは長方形のサイズがコード行数を表し、色が循環的複雑度を表しています。これにより、最も大きく複雑なメソッドを視覚的に簡単に特定できます。

メトリクス情報
プロジェクト、名前空間、クラス、メソッド、フィールドについて、多くのメトリクスを利用できます。Info View にはこれらのメトリクスの一部が表示されるため、開発中に実装品質を評価しやすくなります。

ルールを定義する
CQLinqは、おそらくCppDependが提供する最も強力な機能です。高度なクエリを簡単に定義し、特定のコード要素を検索できます。CQLinqエディタにはカスタムルールを作成するための便利な機能が多数用意されており、結果はリアルタイムで計算されます。

診断を取得する
CppDependを使うと、Clang、Cppcheck、Vera++ が報告した問題を簡単に取得できます。APIを通じて、ほかのツールを統合することも可能です。

トレンドチャート
トレンドチャートは、コードの変更に伴ってメトリクスがどう推移するかを追跡するのに便利です。多くのチャートが既定で用意されており、独自のチャートも簡単に作成できます。

高度な検索
コードサイズ、循環的複雑度、コメント率、結合度などのメトリクスを使ってメソッドを検索できると便利な場面があります。
CppDependにはこの機能があり、幅広いメトリクスを使ってコード要素を検索できます。

まとめ
CppDepend を使うと、コードベースをより深く理解し、実装や設計上の欠陥を特定できます。ただし前述のとおり、豊富な機能セットがあるため、最初はやや使いにくく感じるかもしれません。いくつかの機能に慣れるには数時間かかります。
