はじめに
いつも弊社Understandブログをご購読いただきありがとうございます。
今回は、弊社エンジニアがお客様先や弊社テクニカルサポートにおいて、よくご質問をいただく内容について、その回答を記事にしていきたいと思います。
本記事は前回の記事の続きとなります。前回の記事はこちらをご確認ください。
Understandプロジェクト比較の2つの方法のうち、前回はGitリポジトリを使用した比較の方法をご案内いたしました。
今回はもう1つの方法である「2つのソースコードを使用した比較」の方法をご案内したいと思います。
こちらの方法は、同じプロダクトのバージョンの異なるソースコードを2つ用意することで利用可能なため、Subversionをはじめ、そのほかの構成管理ツール等を利用している場合でも利用することができます。
本シリーズ目次
第1回:Understandでプロジェクト比較をおこなうメリット
第3回:2つのソースコードを使用した比較(Git以外でも利用可)
第4回:まとめ
関連記事
比較機能はUnderstand 5.0から搭載されました。今回ご紹介する「2つのソースコードを使用した比較」は、Understand 5.0で搭載されたときから存在する従来の方式です。このため、当ブログ過去の記事でもこの従来方式によりbatファイルを組み、GitやSVNと連携する方法を公開しております。
※以下の記事の内容はUnderstand 7.0でも利用可能です。
コード配置
root配下に、以下のようにnewerとolderの2つのプロジェクトを用意します。
root
├─newer
│ │ sample.c
│ │ sample.h
│ └─newer.und
│
└─older
│ sample.c
│ sample.h
└─older.und
ここで重要なポイントは、各.undから見たソースコードの配置がnewerとolderで一致していることです。
各.undから見た構成に部分的な差異(ファイルがないなど)がある場合は、その差異をUnderstandは差分として認識します。
この仕様のため、各.undから見た相対的な構造がそもそも一致していない(階層構造が異なるなど)場合には、「全ファイル削除、全ファイル追加」という変更があったと認識される場合があります。
実施手順(2つのソースコードを使用した比較)
- newerのソースコード(例:バージョン2)をnewerディレクトリ配下に配置します。
※newerディレクトリ、olderディレクトリでは最終的にどちらのソースコードを基準に見るかが重要になります。今回の手順では最終的にnewer側のプロジェクト(基準)にolder側のプロジェクトを比較先プロジェクトとして設定します。 - olderのソースコード(例:バージョン1)をolderディレクトリ配下に配置します。
- olderディレクトリのUnderstandプロジェクト(older.und)を作成(create)、プロジェクトへのコード追加(add)、プロジェクトの解析(analyze)をします。
- newerディレクトリのUnderstandプロジェクト(newer.und)を作成(create)、プロジェクトへのコード追加(add)、プロジェクトの解析(analyze)をします。
- newer.undをUnderstandで開き、[比較]-[プロジェクトの比較]から[既存のデータベースを比較対象データベースとして使用]を押して、比較対象データベースとしてolder.undを選択します。

- 上記で追加したプロジェクトについて、右クリックより[差分エンティティロケーター]を押します。
なお、比較対象データベースolder.undが解析されていない場合や変更がある場合は、先に[解析]から再度解析を実施してから[差分エンティティロケーター]を開きます。
※比較対象データベースが正しく解析できていない場合、差分エンティティロケーター上では、すべて新規のファイルとして処理されます。
(.undの名称が記事と異なるため画像を加工しています。) - ここまでの手順が正しくできている場合、以下のように差分エンティティロケーターが表示されます。
この状態は比較プロジェクトの設定ができている状態です。差分エンティティロケーター以外にも、グラフ(ButterflyやUML Sequence、Control Flow、Object References等)において[類別]”Compare”が利用可能となります。
(.undの名称が記事と異なるため画像を加工しています。)
終わりに
今回はここまでとなります。
次回はまとめです。2つの方法の長所や短所、利用シーンをまとめます。
