(57)【要約】【課題】容易に複数のプログラムファイルの比較結果を得ることを可能にする。【解決手段】メンバ及びメソッドを含むクラス情報で定義される第１ファイルと第２ファイルとを比較するファイル比較方法であって、前記第１ファイル及び前記第２ファイルからクラス情報で定義されるメンバ及びメソッドを抽出する抽出ステップと、対応するクラスについて、前記第１ファイルから抽出されたメンバ及びメソッドと前記第２ファイルから抽出されたメンバ及びメソッドとを比較してが同一であるか否かを判定する判定ステップと、比較結果を出力する出力ステップとを有する。【選択図】      図１
2008071147.tif 000002
【特許請求の範囲】
【請求項１】
メンバ及びメソッドが定義されるクラス情報を含む第１ファイルと第２ファイルとを比較するファイル比較方法であって、
前記第１ファイル及び前記第２ファイルからクラス情報で定義されるメンバ及びメソッドをそれぞれ抽出する抽出ステップと、
前記第１ファイルが含むクラス情報から抽出されたメンバ及びメソッドと前記第２ファイルが含むクラス情報から抽出されたメンバ及びメソッドとを比較して同一であるか否かを判定する判定ステップと、
前記判定ステップにおける比較結果を出力する出力ステップと、
を有することを特徴とするファイル比較方法。
【請求項２】
前記抽出ステップは、メンバとしてメンバ名及び前記メンバの型を抽出するとともに、メソッドとしてメソッド名、前記メソッドの返却値型及び前記メソッドの引数型を抽出し、
前記判定ステップは、前記第１ファイル及び前記第２ファイルが含む対応するクラス情報毎に、前記メンバ名及び前記メンバの型が同一であるか否かを判定するとともに、前記メソッド名、前記返却値型及び前記引数型が同一であるか否かを判定する
ことを特徴とする請求項１に記載のファイル比較方法。
【請求項３】
メンバ及びメソッドが定義されるクラス情報を含む第１ファイルと第２ファイルとを比較するファイル比較装置であって、
前記第１ファイル及び前記第２ファイルからクラス情報で定義されるメンバ及びメソッドをそれぞれ抽出する抽出部と、
前記第１ファイルが含むクラス情報から抽出されたメンバ及びメソッドと前記第２ファイルが含むクラス情報から抽出されたメンバ及びメソッドとを比較して同一であるか否かを判定する判定部と、
前記判定部における比較結果を出力する出力制御部と、
を有することを特徴とするファイル比較装置。
【請求項４】
メンバ及びメソッドが定義されるクラス情報を含む第１ファイルと第２ファイルとを比較するファイル比較プログラムであって、
前記第１ファイル及び前記第２ファイルからクラス情報で定義されるメンバ及びメソッドをそれぞれ抽出する抽出ステップと、
前記第１ファイルが含むクラス情報から抽出されたメンバ及びメソッドと前記第２ファイルが含むクラス情報から抽出されたメンバ及びメソッドとを比較して同一であるか否かを判定する判定ステップと、
前記判定ステップにおける比較結果を出力する出力ステップと、
をコンピュータに実行させることを特徴とするファイル比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のファイルを比較するファイル比較方法、ファイル比較装置及びファイル比較プログラムに関する。
【背景技術】
【０００２】
古いバージョンのプログラムファイルと一部が改良された新しいバージョンのプログラムファイルファイルを比較する等、異なる複数のプログラムファイルを比較することがある。プログラムファイルの違いを容易に把握することができれば、プログラムファイルの更新や新しいバージョンのプログラムファイルのバグ発見等の処理を容易にすることができる点で、プログラム開発者やプログラム利用者の処理負担を軽減することが可能になる。
【０００３】
従来、異なる２つのプログラムファイルを比較する場合、２つのプログラムファイルをそれぞれテキストファイルとして一行づつ順番に並べて比較し、テキストファイルの各構成要素すなわち、プログラムファイルの構成要素が一致するか否かを判定する方法があった（例えば、特許文献１参照）。
【０００４】
しかしながら、単に各プログラムファイルを比較する場合、テキストファイルの各構成要素を比較するのみでは、両プログラムファイルの異なる部分を判断しにくい場合がある。
【０００５】
例えば、古いバージョンのプログラムファイルが含む一の構成要素の記述位置を、新しいバージョンのプログラムファイルでは異なる位置に変更する場合もある。特許文献１に記載されるように構成要素を順番に並べて比較する方法では、このように古いバージョンのプログラムファイルにおける記述位置と新しいバージョンのプログラムファイルにおける当該記述位置が異なる場合、新しいプログラムファイルには当該構成要素を含んでいないという比較結果が得られることがあった。
【０００６】
また、プログラムファイル中には、プログラム開発者がプログラムの内容を理解しやすくするためにコメントを入れることがあるが、このようなコメントまでも比較対象とするため、コメントの違いまでが比較結果とされる。したがって、コメントの違いが比較対象として出力されることを防ぐためには、プログラムファイルを比較する前に比較処理を実行するユーザがプログラムファイルから予めコメントを削除する必要があった。
【特許文献１】特開平４−６７２３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って本発明は、容易に複数のプログラムファイルの比較結果を得ることが可能なファイル比較方法、ファイル比較装置及びファイル比較プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の特徴に係るファイル比較方法は、メンバ及びメソッドが定義されるクラス情報を含む第１ファイルと第２ファイルとを比較するファイル比較方法であって、前記第１ファイル及び前記第２ファイルからクラス情報で定義されるメンバ及びメソッドをそれぞれ抽出する抽出ステップと、前記第１ファイルが含むクラス情報から抽出されたメンバ及びメソッドと前記第２ファイルが含むクラス情報から抽出されたメンバ及びメソッドとを比較して同一であるか否かを判定する判定ステップと、判定ステップにおける比較結果を出力する出力ステップとを有する。
【０００９】
ここで、抽出ステップは、メンバとしてメンバ名及び前記メンバの型を抽出するとともに、メソッドとしてメソッド名、前記メソッドの返却値型及び前記メソッドの引数型を抽出し、判定ステップは、前記第１ファイル及び前記第２ファイルが含む対応するクラス情報毎に、前記メンバ名及び前記メンバの型が同一であるか否かを判定するとともに、前記メソッド名、前記返却値型及び前記引数型が同一であるか否かを判定することが好ましい。
【発明の効果】
【００１０】
本発明によれば、容易に複数のプログラムファイルの比較結果を得ることができるファイル比較方法、ファイル比較装置及びファイル比較プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
〈ファイル比較装置〉
図１に示す機能ブロック図を用いて、本発明の最良の実施形態に係るファイル比較装置１の機能構成を説明する。
【００１２】
ファイル比較装置１は、図１に示すように、ファイル読出部１１、抽出部１２、判定部１３及び出力制御部１４を有している。このファイル比較装置１は、中央処理装置（CPU：central processing unit）２１、記憶装置２２、メモリ２３等を有する一般的なコンピュータであって、記憶装置２２に記憶されるファイル比較プログラムがCPU２１に読み込まれて実行されることで、ファイル読出部１１、抽出部１２、判定部１３及び出力制御部１４を備えるファイル比較装置１が実装される。また、図１に示す記憶装置２２は、ファイル比較装置１における比較処理の対象である第１ファイルと、第２ファイルとが予め記憶されている。
【００１３】
ファイル比較装置１には、図１に示すように、ユーザによって操作指示等が入力されるマウスやキーボード等の入力装置３１及びファイル比較装置１におけるファイル比較処理の結果等が表示されるディスプレイ等の出力装置３２が接続されている。
【００１４】
図２を用いて、記憶装置２２に記憶され、比較処理の対象であるファイルの一例を説明する。記憶装置２２に記憶されている第１ファイルは、図２（ａ）に示すように、メンバ名がa，b，c、メンバの型が全てint型、メソッド名がget_a，get_b，get_c、メソッドの型が全てint型で定義されるクラスＡのヘッダファイルである。また、記憶装置２２に記憶されている第２ファイルは、図２（ｂ）に示すように、メンバ名がa，b、メンバの型が全てint型、メソッド名がget_a，get_b、メソッドの型が全てint型で定義されるクラスＡのヘッダファイルである。第１ファイルが含むクラスＡと第２ファイルが含むクラスＡとは、対応するクラスである。
【００１５】
また、図２に示す第１ファイル及び第２ファイルは、一つのクラスが含まれている例であるが、複数のクラスが含まれるファイルであったり、親クラスが定義された形式のファイルであっても同様である。
【００１６】
なお、記憶装置２２では、図２で示した第１ファイル及び第２ファイルに限られず、他の複数のファイルも記憶することができる。
【００１７】
ファイル読出部１１は、ユーザによって入力装置３１を介して第１ファイルの識別子及び第２ファイルの識別子を含む比較リクエストを入力すると、第１ファイルの識別子及び第２ファイルの識別子で識別されるファイルを記憶装置２２から読み出して、抽出部１２に出力する。比較対象となる２つのファイルが存在しない場合、ファイル比較装置１ではファイル比較処理を実行することはできない。したがって、記憶装置２２に比較対象となる第１ファイル又は第２ファイルが記憶されておらず、第１ファイル及び第２ファイルを読み出すことができない場合、ファイル読出部１１は、出力制御部１４にエラー信号を出力する。
【００１８】
抽出部１２は、ファイル読出部１１から第１ファイル及び第２ファイルを入力すると、第１ファイル及び第２ファイルをメモリ２３に記憶する。その後、抽出部１２は、メモリ２３に記憶した第１ファイル及び第２ファイルからクラス情報の抽出として、クラス名、各クラスで定義されるメンバ及びメソッドを抽出し、抽出したクラス名、メンバ及びメソッドを判定部１３に出力する。
【００１９】
具体的には、抽出部１２は、まずコメント削除手段１２ａで各ファイルからコメントを削除し、クラス抽出部１２ｂでクラス名を抽出してメモリ２３に記憶する。ここで、クラスに親クラスが存在する場合、クラス抽出手段１２ｂは、各クラス名に対応する親クラス名を抽出してメモリ２３に記憶する。その後、抽出部１２は、メンバ抽出手段１２ｃで各クラスに定義されるメンバとしてメンバ名及び前記メンバの型を抽出し、メソッド抽出手段１２ｄで各クラスに定義されるメソッドとしてメソッド名、前記メソッドの返却値型及び前記メソッドの引数型を抽出してメモリ２３に記憶する。
【００２０】
例えば、図２（ａ）に示した第１ファイルからは、まず、図３（ａ）に示すようにコメント削除手段１２ａによってコメントが削除され、クラス抽出手段１２ｂによってクラス名として「Ａ」が抽出され、メンバ抽出手段１２ｃによってクラスAで定義されるメンバ名として「a」、「b」、「c」が抽出され、メンバ名aの型、メンバ名bの型及びメンバ名cの型としてそれぞれ「int」が抽出される。また、メソッド抽出手段１２ｄによってメソッド名として「get_a」、「get_b」、「get_c」が抽出され、メソッド名get_aの型、メソッド名get_bの型及びメソッド名get_cの型としてそれぞれ「int」が抽出される。
【００２１】
同様に、図２（ｂ）に示した第２ファイルからは、図３（ｂ）に示すようにコメント削除手段１２ａによってコメントが削除され、クラス抽出手段１２ｂによってクラス名として「Ａ」が抽出され、メンバ抽出手段１２ｃによってクラスＡで定義されるメンバ名として「a」、「b」が抽出され、メンバ名aの型及びメンバ名bの型としてそれぞれ「int」が抽出される。また、メソッド抽出手段１２ｄによってメソッド名として「get_a」、「get_b」が抽出され、メソッド名get_aの型、メソッド名get_bの型としてそれぞれ「int」が抽出される。
【００２２】
判定部１３は、抽出部１２から第１ファイルから抽出されたクラス名、各クラスに定義されるメンバ及びメソッドと第２ファイルから抽出されたクラス名、各クラスに定義されるメンバ及びメソッドを入力すると、各クラス名、メンバ及びメソッドをメモリ２３に記憶する。その後、判定部１３はメモリ２３に記憶した第１ファイルから抽出されたクラス名、メンバ及びメソッドと、第１ファイルに対応する第２ファイルから抽出されたクラス情報、メンバ及びメソッドとがそれぞれ同一であるか否かを判定し、比較結果として出力制御部１４に出力する。
【００２３】
具体的には、判定部１３は、対象とする２つのクラス情報について、クラス判定手段１３ａによって各クラス名に関連付けられる親クラス名が同一であるか否かを判定し、メンバ判定手段１３ｂによって抽出したメンバ名及びメンバの型が同一であるか否かを判定し、メソッド判定手段１３ｃによってメソッド名、返却値型及び引数型が同一であるか否かを判定する。
【００２４】
例えば、図２に示す第１ファイルと第２ファイルとを比較対象とする場合、親クラス名は存在しないため、クラス判定手段１３ａにおいては判定の処理はされない。また、メンバ判定手段１３ｂは、第１ファイルに含むメンバ（メンバ名：「a」、「b」、「c」、メンバの型：全てについてint）と第２ファイルに含むメンバ（メンバ名：「a」、「b」、メンバの型：全てについてint）とを比較し、「a」、「b」が同一であり、第１ファイルにのみ「c」が含まれる点が異なるという比較結果を出力する。さらに、メソッド判定手段１３ｃは、第１ファイルに含むメソッド（メソッド名：「get_a」、「get_b」、「get_c」、メソッドの型：全てについてint）と第２ファイルに含むメソッド（メソッド名：「get_a」、「get_b」、メソッドの型：全てについてint）とを比較し、「get_a」、「get_b」が同一であり、第２ファイルにのみ「get_c」が含まれる点が異なるという比較結果を出力する。
【００２５】
出力制御部１４は、判定部１３から比較結果を入力すると、比較結果をメモリ２３に記憶し、メモリ２３に記憶した比較結果に基づいて比較結果画面を生成して出力装置３２であるディスプレイに出力する。また、出力制御部１４は、ファイル読出部１１からエラー信号を出力すると、エラー画面を生成して出力装置３２に出力する。
【００２６】
図４を用いて、図２に示した第１ファイル及び第２ファイルから得られた比較結果によって出力装置３２であるディスプレイで表示される比較結果画面１００の一例を説明する。図３に示す第１ファイル及び第２ファイルを比較すると、同一のメンバは「a」及び「b」であるため、同一のメンバを表示する「equal member[1]」の値は「b a」となり、同一のメソッドは「get_a」及び「get_b」であるため、同一のメソッドを表示する「equal method[1]」の値は「get_b get_a」となる。メンバの型及びメソッドの型はいずれもintであるため、異なる型を表示する「ne style member[0]」の値は出力されない。第１ファイルにのみ存在するメンバは「c」であるため、第１ファイルに存在し第２ファイルに存在しないメンバを表示する「add member1[0]」の値は「c」となり、第２ファイルにのみ存在するメンバはないため、第２ファイルに存在し第１ファイルに存在しないメンバを表示する「add member2[-1]」の値は出力されない。第１ファイルにのみ存在するメソッドは「get_c」であるため、第１ファイルに存在し第２ファイルに存在しないメソッドを表示する「add method1[0]」の値は「get_c」となり、第２ファイルにのみ存在するメソッドはないため、第２ファイルに存在し第１ファイルに存在しないメソッドを表示する「add method2[-1]」の値は出力されない。出力結果は、この図４を用いて説明したように出力装置３２に出力される。
【００２７】
〈ファイル比較装置における処理〉
続いて、図５に示すフローチャートを用いて、ファイル比較装置１において実行されるファイル比較方法の処理の流れを説明する。
【００２８】
まず、ファイル比較装置１において、ユーザによって入力装置３１を介して比較リクエストを入力したファイル読出部１１は、記憶装置２１から第１ファイル及び第２ファイルを読み出す（Ｓ１）。
【００２９】
記憶装置２１から第１ファイル及び第２ファイルを読み出すことができた場合（Ｓ２でＹＥＳ）、ファイル読出部１１は、読み出した第１ファイル及び第２ファイルを抽出部１２に出力する（Ｓ３）。
【００３０】
第１ファイル及び第２ファイルを入力した抽出部１２は、各ファイルからクラス名、メンバ及びメソッドを抽出して、第１ファイルのクラス、メンバ及びメソッドと第２ファイルのクラス、メンバ及びメソッドを判定部１３に出力する（Ｓ４）。
【００３１】
第１ファイルのクラス、メンバ及びメソッドと第２ファイルのクラス、メンバ及びメソッドを入力した判定部１３は、第１ファイル及び第２ファイルで定義されるクラスのメンバとメソッドがそれぞれ一致するか否か判定し、比較結果として出力制御部１４に出力する（Ｓ５）。
【００３２】
比較結果を入力した出力制御部１４は、入力した比較結果に基づいて生成した比較結果画面１００を出力装置３２に出力し、ファイル比較方法の処理を終了する（Ｓ６）。
【００３３】
一方、比較リクエストを入力したファイル読出部１１が、記憶装置２１から第１ファイル及び第２ファイルを読み出すことができない場合（Ｓ２でＮＯ）、ファイルを比較することはできないため、出力制御部１４にエラー信号を出力する（Ｓ７）。
【００３４】
エラー信号を入力した出力制御部１４は、出力制御部１４にエラー画面を出力し、処理を終了する（Ｓ８）。
【００３５】
上述したように、本発明の最良の実施形態に係るファイル比較装置１は、比較する対象となる各ファイルについて、クラス、メンバ及びメソッドの単位で同一であるか否かを判定し、同一の点及び異なる点を比較結果として出力することで、ファイルの変更部分をユーザに対して容易に把握させることができる。
【図面の簡単な説明】
【００３６】
【図１】本発明の最良の実施形態に係るファイル比較装置の構成を説明する機能ブロック図である。
【図２】図１で示したファイル比較装置で比較対象とされるファイルの一例である。
【図３】図２で示したファイルからコメントが削除された一例である。
【図４】図２で示したファイルから得られた比較結果の一例である。
【図５】図１で示したファイル比較装置における比較処理を説明するフローチャートである。
【符号の説明】
【００３７】
１…ファイル比較装置
１１…ファイル読出部
１２…抽出部
１３…判定部
１４…出力制御部
２１…中央処理装置（CPU）
２２…記憶装置
２３…メモリ
３１…入力装置
３２…出力装置
【図１】
2008071147.tif 000003
【図２】
2008071147.tif 000004
【図３】
2008071147.tif 000005
【図４】
2008071147.tif 000006
【図５】
2008071147.tif 000007