コードメトリクスのツリーマップ可視化
コードメトリクスのツリーマップ可視化
この メトリクスビュー は、コードベースを一目で理解するのに役立つ強力なツリーマップビジュアライゼーションを CppDepend で提供します。コード要素をネストされた長方形として表現することで、ツリーマップはパターンの発見、問題領域の特定、コード構造の視覚的な探索を容易にします。
入門ビデオ
ツリーマップ可視化を使用してコード ベースを探索する方法を学びます。
はじめに
内で メトリクスビュー、コードベースはで表されます ツリーマップ。ツリーマッピングは、ネストされた長方形を使用してツリー構造のデータを表示する方法です。CppDepend ツリーマップで使用されるツリー構造は、通常のコード階層です。
- C/C++プロジェクトには名前空間が含まれ、
- 名前空間には型が含まれ、
- 型にはメソッドとフィールドが含まれます。
ツリーマップでは、長方形がコード要素を表します。オプション レベル 単位の長方形が表すコード要素の種類を決定します。オプション レベル 5つの値を取れる: プロジェクト, 名前空間, 型, メソッド と フィールド 以下の 2 つのスクリーンショットは、同じコード ベースを左は型レベル、右は名前空間レベルで表したものです。

オプション コードメトリクス ツリーマップのこれは長方形のサイズを決定します。たとえば、レベルが次に設定されている場合 型 メトリクスはに設定 コード行数、各単位長方形は型を表し、単位長方形のサイズは対応する型のコード行数に比例します。
PRQL クエリが現在編集されている場合、クエリに一致したコード要素のセットは、青色の長方形のセットとしてツリーマップに表示されます。下のスクリーンショットでは、PRQL クエリが最大の 200 のメソッドに一致しています。ここでのツリーマップレベルは メソッド メトリクスは コード行数 予想どおり、青い長方形はツリーマップの最大の 200 の単位長方形を表しています。
下のスクリーンショットは、現在ポイントされているコード要素(ここではプロジェクト)が XML) はツリーマップ上に赤い四角形で表示されます。

一般的なシナリオ
の適切な組み合わせを選択することで メトリクス と レベル 値、 メトリクスビュー 他の手段では見つけにくいパターンを把握するのに役立ちます。
大きすぎ、複雑すぎ
CppDepend は、大きすぎる、複雑すぎるコードを発見するための多くのコードメトリクスを提供します。パラメータが多すぎる、変数が多すぎる、コード行数が多すぎる、循環的複雑度が高すぎるメソッドなどは排除すべきです。同様に、コード行数が多すぎる型も排除すべきです。
下のスクリーンショットでは、ツリーマップ レベルは次に設定されています 型 メトリクスは コード行数。大きな長方形はコードベースの大きな型を表します。マウスで長方形にカーソルを合わせると、型のメトリクス値(ここでは型のコード行数)が表示されます。コードツリーマッピングは、大きすぎる、複雑すぎるコード要素を発見するのに役立つだけでなく、それぞれのサイズと複雑さを比較するのにも役立つことは明らかです。

欠陥の特定
下のスクリーンショットでは、PRQL クエリで、パラメータが多すぎる、変数が多すぎるメソッドを要求しています。青い長方形はツリーマップ上で一致したメソッドを示しています。ここでの興味深い点は、一致したメソッドの一部がグループ化されているように見えることです。ツリーマップは階層ビューであるため、コード要素のセットがグループ化されている場合、それらのコード要素が同じ親に属していることを意味します。実際、ここでグループ化された 12 のメソッドは同じ型に属しています。
ツリーマッピングがなければ、これら 12 のメソッドの親型を見つけるのは困難だったでしょう。これで、コード品質レビューアーは、コードベースの他の部分よりも欠陥が多く含まれているように見えるこの領域に注意を集中できます。

トップダウンコード探索
CppDepend のツリーマップメトリックビューは、ズームインとズームアウトをサポートしています。これにより、特定のプロジェクト、名前空間、クラスに簡単にズームできます。これは、コード行数の観点からコンポーネントのボリュームを探索および比較するのに特に便利です。
生産性をコード行数で測定すべきでは決してありません。しかし、コード行数を数えることは、組織の特定のコンテキストがあれば、ソフトウェアを正確に見積もるための有用なメトリクスであることが証明されています。コードベースの機能は、ある意味でアセンブリ、名前空間、型に分割されています。ツリーマッピングを使うと、これらの成果物は横に並んだ長方形になります。長方形の面積、つまり機能の重みは、視覚的に比較できます。ツリーマッピングでコードサイズを定期的に探索できることは、機能の重みとコストの正確な感覚を構築する唯一無二の方法です。
よく知っているコード ベースでツリーマップを可視化する実験をしてみると、予期しない機能のサイズを発見して驚くでしょう。

コード構造の観察
を使用する場合 メトリクスビュー ボリューム(コード行数、メソッドのパラメータ数…)や複雑さ以外のメトリクスを使うと、興味深い観察結果が得られることがあります。
この ランキングメトリクス は、コードベース内の型またはメソッドの人気度を測定するコードメトリクスです。ランキングメトリクスでツリーマッピングを使用すると、人気のある型がどこで宣言されているかが明確にわかります。これにより、コードベースで何が重要かについての情報がすぐに得られます。
下のスクリーンショットはの型を示しています Microsoft DLR (Dynamic Language Runtime) ランキング メトリックでツリーマップ化されたコード ベース。ツリーマップは次を示します CallSite と 式 は DLR の一般的な概念であり、実際にここでもそうです。
同様の興味深いコード構造の観察は、次のようなコード メトリックでも行えます 求心性/遠心性結合 または レベル.

