プロジェクト比較の2つの方法③(2つのソースコードを使用した比較(Git以外でも利用可))

Understand

はじめに

いつも弊社Understandブログをご購読いただきありがとうございます。

今回は、弊社エンジニアがお客様先や弊社テクニカルサポートにおいて、よくご質問をいただく内容について、その回答を記事にしていきたいと思います。

本記事は前回の記事の続きとなります。前回の記事はこちらをご確認ください。
Understandプロジェクト比較の2つの方法のうち、前回はGitリポジトリを使用した比較の方法をご案内いたしました。
今回はもう1つの方法である「2つのソースコードを使用した比較」の方法をご案内したいと思います。
こちらの方法は、同じプロダクトのバージョンの異なるソースコードを2つ用意することで利用可能なため、Subversionをはじめ、そのほかの構成管理ツール等を利用している場合でも利用することができます。

本シリーズ目次

第1回:Understandでプロジェクト比較をおこなうメリット

第2回:Gitリポジトリを使用した比較(Git専用)

第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つのソースコードを使用した比較)

  1. newerのソースコード(例:バージョン2)をnewerディレクトリ配下に配置します。
    ※newerディレクトリ、olderディレクトリでは最終的にどちらのソースコードを基準に見るかが重要になります。今回の手順では最終的にnewer側のプロジェクト(基準)にolder側のプロジェクトを比較先プロジェクトとして設定します。
  2. olderのソースコード(例:バージョン1)をolderディレクトリ配下に配置します。
  3. olderディレクトリのUnderstandプロジェクト(older.und)を作成(create)、プロジェクトへのコード追加(add)、プロジェクトの解析(analyze)をします。
  4. newerディレクトリのUnderstandプロジェクト(newer.und)を作成(create)、プロジェクトへのコード追加(add)、プロジェクトの解析(analyze)をします。
  5. newer.undをUnderstandで開き、[比較]-[プロジェクトの比較]から[既存のデータベースを比較対象データベースとして使用]を押して、比較対象データベースとしてolder.undを選択します。
  6. 上記で追加したプロジェクトについて、右クリックより[差分エンティティロケーター]を押します。
    なお、比較対象データベースolder.undが解析されていない場合や変更がある場合は、先に[解析]から再度解析を実施してから[差分エンティティロケーター]を開きます。
    ※比較対象データベースが正しく解析できていない場合、差分エンティティロケーター上では、すべて新規のファイルとして処理されます。

    (.undの名称が記事と異なるため画像を加工しています。)
  7. ここまでの手順が正しくできている場合、以下のように差分エンティティロケーターが表示されます。
    この状態は比較プロジェクトの設定ができている状態です。差分エンティティロケーター以外にも、グラフ(ButterflyやUML Sequence、Control Flow、Object References等)において[類別]”Compare”が利用可能となります。

    (.undの名称が記事と異なるため画像を加工しています。)

終わりに

今回はここまでとなります。
次回はまとめです。2つの方法の長所や短所、利用シーンをまとめます。