はじめに
いつも弊社Understandブログをご購読いただきありがとうございます。
今回は、弊社エンジニアがお客様先や弊社テクニカルサポートにおいて、よくご質問をいただく内容について、その回答を記事にしていきたいと思います。
今回取り上げるご質問
最近お客様からのお問い合わせで、以下のようなご質問をいただきました。
「Understandのプロジェクト比較を利用したいのですが、すべて追加、あるいは削除になってしまい設定がうまくいきません。」
「簡単にプロジェクト比較を実施する方法はありますか。」
「比較機能はGit以外でも利用できる方法があると聞いたのですが教えて頂けますか。」
「WinMergeでのプロジェクト比較と比べ、Understandでプロジェクト比較をおこなうメリットは何でしょうか。」
今回はUnderstandでプロジェクト比較を行うメリットを解説したうえで、プロジェクト比較をおこなう2つの方法について、その方法や違いを解説したいと思います。
それぞれ丁寧に説明をする都合上、シリーズものとして公開していく予定です。
本シリーズ目次
第1回:Understandでプロジェクト比較をおこなうメリット
第2回:Gitリポジトリを使用した比較(Git専用)
第3回:2つのソースコードを使用した比較(Git以外でも利用可)
第4回:まとめ
Understandでプロジェクト比較をおこなうメリットと機能
Understandでプロジェクト比較をおこなうメリットは、プロジェクト比較結果から直接Understandの解析情報を利用できる点にあります。
ユースケースとして、ご自身がコードレビューを依頼された際に変更点やその影響範囲を調べたい状況をご想像いただきながら、以下機能の説明をお読みください。
差分エンティティロケーターからエディターを利用
まずは一番シンプルな利用方法です。
下記画像のように表示された差分エンティティロケーター(画像下部)において、各エンティティを選択することで、そのエンティティの差分内容をエディター(画像上部)上でコード差分として見ることができます。
(下記画像では種類を文字列”Function”でフィルターしています。)

差分エンティティロケーターからグラフを利用
比較画面から差分エンティティロケーターを開き、対象のエンティティをマウスオーバーし、右クリック[グラフィカルビュー]から、[Called By]や[Butterfly]、[Control Flow]、[UML Sequence Diagram]など多くのグラフをCompareグラフ(類別:Compareを指定)として利用できます。
以下では例としてButterflyグラフを表示します。
追加/変更/削除された依存関係は矢印に色付けがされており、追加変更/削除された関数にはノードの枠に色付けがされています。

上記の状態から変化したエンティティを下記図のように右クリックすることで、対象のソースコードを表示することもできます。
差分エンティティロケーターからメトリクスを利用
差分エンティティロケーターでは、メトリクス列にUnderstandで取得可能なメトリクスを追加できます。[+]ボタンから下記画像のように選択のうえ、[追加]ボタンを押すことで追加できます。
リファクタリング時にCyclomatic複雑度の絶対値と変化値(Change in xxx)の両方を見たい、といった場合に便利です。

ツリーマップから差分メトリクスを利用
差分となるコード規模を視覚的に理解したい場合にはツリーマップでの表示もお勧めです。
比較プロジェクトが設定され、対象のプロジェクトがActiveの場合には[メトリクス]-[メトリクスツリーマップ]より、以下のように四角のサイズとカラーに割り付けるメトリクスとして、差分メトリクス(DiffCountLine,DiffCyclomatic)をそれぞれ指定します。
以下のツリーマップでは変更差分となった関数の変更行数を四角のサイズに、Cyclomatic複雑度の変化量を色の濃さで表しています。
なお、メトリクスの絶対値の大きさではなく、メトリクスを正負まで考慮した数直線上における相対的な位置で割り付けられるため、負の値の場合を含め数字が小さい場合は色が薄く、または四角が小さく表現されます。
画面が狭いと感じたら?(差分エンティティロケーターの小技)
画像やエディターを次々と表示していくと、Understandの画面内が狭くなってくることがあります。
このような場合、差分エンティティロケーターを”フロート”(Understandの画面を別ウィンドウで表示)すると便利です。下記画像のように枠の右上の四角が重なったようなマークを押すことで”フロート”できます。
2画面で作業している場合には、左画面で差分エンティティロケーターを表示し、右画面でUnderstandエディターやグラフを切り替えて表示するといった利用シーンが考えられます。
元に戻す場合は、差分エンティティロケーターをUnderstand上の元々の配置箇所にドラッグ&ドロップすることで戻すことができます。
この方法はUnderstandの他の機能でも利用できるので、覚えておくと便利な機能です。
終わりに
今回はここまでとなります。
次回はGitリポジトリを使用した比較プロジェクトの設定方法について、説明していきたいと思います。
