概要表示の使い方

Sider Labs の解析結果の画面(ダッシュボード)では、様々な方法でコードクローンの分析を行うことができますが、この記事では「概要」タブにおけるコードクローンの可視化機能について使い方を説明します。

概要タブには、ホイール表示とマトリックス表示という2つのクローンの可視化パネルがあります。ホイール表示は、プロジェクトの全ファイルのうち、コードクローンが存在するファイルのみを抽出し、同一のクローンを持つファイル間の関係を図示したものです。プロジェクトのファイルが円環に沿って表示されています。円環を繋ぐように飛んでいる円弧が2つのファイル間に存在するクローンになります。円弧の幅がクローンのステートメント数に対応しており、円弧をクリックすると、実際のクローンのコードを閲覧できます。一方で、同一ファイル内部のクローンは円環のうえの「コブ」として表現されています。もし、ある程度大きな幅で、異なる2つのファイル間にまたがる円弧が表示されていたら、クローンの内容を確認することをお薦めします。ユーティリティ関数やクラスとしてまとめることで、コード品質をあげられるかもしれません。

ホイール表示の例

例えば上図はある3D画像処理のオープンソースソフトウェアのレポジトリを分析したものですが、”vmStackedVolume.cpp”(黄色)と、”vmBlockVolume.cpp”(ピンク)との間には、ステートメント数が30 から150程度のクローンペアが10個以上検出されており(図中右下の赤い点線部)、ファイルの名称も近いことから何らかの形で共通化できる余地がありそうです。

次に、マトリックス表示ですが、こちらはクローンを持つファイル名がアルファベット順でX軸、Y軸に配置されています。X軸、Y軸に並んでいるのは同じファイル名のリストです。X軸の一つのファイルと、Y軸の一つのファイルとの間にコードクローンが存在する場合、そのセルはクローンのステートメント数に応じて白から赤までの色がつきます。グレーのセルはクローンが無いことを示しています。対角線上は同一のファイルとなりますが、ここでは同じファイル内で存在するクローンの量を色で示しています。

表示するデータは、マトリックス表示もホイール表示も同じものです。しかし、マトリックス表示の方がクローンの全体像をより俯瞰した視点でみるのに役立ちます。一例として、ファイル名が近いものは、意外にもクローンが多いことがあり、ある程度まとまったクラスタのような分布を見つけることができます。この場合、基底クラスを作成して、複数のクローンを基底クラスからの継承などでまとめられないか検討する価値があるでしょう。

マトリックス表示の例

非常に大規模なプロジェクトの場合、ファイル相関図(ホイール表示、マトリックス表示)のファイル名や表示がほとんど見えなくなってしまうことがあります。今後、UI/UXの改善を行っていく予定ですが、ホイール表示の円環や、マトリックス表示のセル部分にマウスオーバーすると全ファイル名が表示されます。また、図の右上の「拡大」ボタンで図を拡大することもできます。ホイール表示に関しては、拡大した場合、「重要度トップ10」や「クローン数トップ10」のファイルのみで描画することもできます。ご活用下さい。

コメントを残す