(57)【要約】【課題】ソースコードとオブジェクトプログラムとを簡易な処理で比較できるプログラム比較装置、プログラム比較方法および比較プログラムを提供することを目的とする。【解決手段】プログラム比較装置において、ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成する第１コード生成部と、オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成する第２コード生成部と、第１作業用ソースコードと第２作業用ソースコードとを比較する比較部と、比較部における比較結果を表示する表示部と、を備える構成とした。【選択図】図１
2019220110.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成する第１コード生成部と、
オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成する第２コード生成部と、
前記第１作業用ソースコードと前記第２作業用ソースコードとを比較する比較部と、
前記比較部における比較結果を表示する表示部と、
を備えることを特徴とするプログラム比較装置。
【請求項２】
前記比較部は、前記第１作業用ソースコードと前記第２作業用ソースコードとをテキスト比較することを特徴とする請求項１に記載のプログラム比較装置。
【請求項３】
前記表示部は、前記第１作業用ソースコードと、前記第２作業用ソースコードとを並べて表示することを特徴とする請求項１または２に記載のプログラム比較装置。
【請求項４】
前記表示部は、前記第１作業用ソースコードと、前記第２作業用ソースコードと、前記ソースコードとを並べて表示することを特徴とする請求項１または２に記載のプログラム比較装置。
【請求項５】
前記表示部は、前記第１作業用ソースコードと前記第２作業用ソースコードとの相違箇所を強調表示することを特徴とする請求項３または請求項４に記載のプログラム比較装置。
【請求項６】
前記比較部により、前記第１作業用ソースコードと前記第２作業用ソースコードとに相違点があると判断された場合、前記ソースコードにおける前記相違点の対応箇所を解析する解析部をさらに備え、
前記表示部は、前記ソースコードの前記対応箇所を表示することを特徴とする請求項１〜５の何れか一項に記載のプログラム比較装置。
【請求項７】
ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成するステップと、
オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成するステップと、
前記第１作業用ソースコードと前記第２作業用ソースコードとを比較するステップと、
前記比較の結果を表示するステップと、
を含むことを特徴とするプログラム比較方法。
【請求項８】
ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成するステップと、
オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成するステップと、
前記第１作業用ソースコードと前記第２作業用ソースコードとを比較するステップと、
前記比較の結果を表示するステップと、
をコンピュータに実行させる比較プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードとオブジェクトプログラムとの比較を行うプログラム比較装置、プログラム比較方法および比較プログラムに関する。
【０００２】
従来、オブジェクトプログラムとソースコードとの比較を行って変更点を確認する技術が知られている。例えば、特許文献１では、ソースコードとオブジェクトプログラムとの一致または不一致を判定するプログラム比較解析装置が提案されている。特許文献１のプログラム比較解析装置では、オブジェクトプログラムを逆コンパイルして言語プログラムを生成し、ソースプログラムと言語プログラムを比較する。そして、ソースプログラムと言語プログラムの対応箇所の一致または不一致を判定する構成となっている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１５２５５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ソースコードをコンパイルしてオブジェクトプログラムを得る変換処理は、一般的には不可逆変換である。従って、オブジェクトプログラムを逆コンパイルしても、元のソースコードと同一のソースコードを得ることはできない。そのため、特許文献１に記載される逆コンパイルした言語プログラムとソースプログラムとでは、表現が大きく異なる。特許文献１では、表現の異なるソースプログラムと言語プログラムとを比較するために、プログラムの対応表または解析ツリーを生成して、ソースプログラムと言語プログラムとの対応箇所を対応付ける必要があり、処理が煩雑である。
【０００５】
本発明は、上記従来技術における課題に鑑みてなされたものであり、ソースコードとオブジェクトプログラムとを簡易な処理で比較できるプログラム比較装置、プログラム比較方法および比較プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のプログラム比較装置は、ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成する第１コード生成部と、オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成する第２コード生成部と、第１作業用ソースコードと第２作業用ソースコードとを比較する比較部と、比較部における比較結果を表示する表示部と、を備える。
【０００７】
本発明のプログラム比較方法は、ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成するステップと、オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成するステップと、第１作業用ソースコードと第２作業用ソースコードとを比較するステップと、比較の結果を表示するステップと、を含む。
【０００８】
本発明の比較プログラムは、ソースコードをコンパイルして作業用オブジェクトを生成し、該作業用オブジェクトを逆コンパイルして第１作業用ソースコードを生成するステップと、オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成するステップと、第１作業用ソースコードと第２作業用ソースコードとを比較するステップと、比較の結果を表示するステップと、をコンピュータに実行させるものである。
【発明の効果】
【０００９】
本発明によれば、表現が同じ第１作業用ソースコードと第２作業用ソースコードとを生成することで、ソースコードとオブジェクトプログラムとの比較を簡易な処理で行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１におけるプログラム比較装置の概略構成図である。
【図２】実施の形態１の表示部に表示される比較結果画面の一例である。
【図３】実施の形態１におけるプログラム比較方法のフローチャートである。
【図４】実施の形態２におけるプログラム比較装置の概略構成図である。
【図５】実施の形態２におけるプログラム比較方法のフローチャートである。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下、本発明に係るプログラム比較装置１００の実施の形態について、図面を参照して説明する。図１は、実施の形態１におけるプログラム比較装置１００の概略構成図である。本実施の形態のプログラム比較装置１００は、コンピュータ２００で実行されるオブジェクトプログラムとソースコードとの比較を行うコンピュータである。プログラム比較装置１００を用いて、コンピュータ２００のオブジェクトプログラムにおける変更点、例えば更新の有無または更新内容等が検出される。
【００１２】
図１に示すように、プログラム比較装置１００は、入力部１と、制御部２と、表示部３とを備える。入力部１は、コンピュータ２００からオブジェクトプログラムを取得し、制御部２に入力する。オブジェクトプログラムは、コンパイル方式のプログラムであればよく、例えばＣＬ（Control Language）プログラムである。また、入力部１は、オブジェクトプログラムと比較するソースコードをユーザから取得し、制御部２へ入力する。なお、ソースコードは図示されないメモリに記憶されていてもよく、入力部１は、当該メモリからソースコードを取得して、制御部２へ入力してもよい。
【００１３】
制御部２は、入力部１から入力されるソースコードとオブジェクトプログラムとの比較を行う。制御部２は、メモリ（図示せず）に格納されるプログラムを実行するＣＰＵ（Central Processing Unit）またはマイクロコンピュータなどで構成される。なお、制御部２を単一または複合回路などのハードウェアで構成してもよい。
【００１４】
表示部３は、ＬＣＤ（Liquid Crystal Display）などのディスプレイである。表示部３は、制御部２によるソースコードとオブジェクトプログラムとの比較結果を表示する。なお、本実施の形態では、プログラム比較装置１００が表示部３を備える構成としているが、プログラム比較装置１００に接続されるその他の機器が表示部３を備えてもよい。
【００１５】
また、制御部２は、プログラムを実行することにより実現される機能部として、第１コード生成部２１と、第２コード生成部２２と、比較部２３と、表示生成部２４とを有する。第１コード生成部２１は、ソースコードをコンパイルして作業用オブジェクトを生成し、作業用オブジェクトを逆コンパイルして、第１作業用ソースコードを生成する。なお、作業用オブジェクトを生成するために用いられるコンパイラは、コンピュータ２００のオブジェクトプログラムを生成するために用いられるコンパイラと同じものとする。第２コード生成部２２は、オブジェクトプログラムを逆コンパイルして第２作業用ソースコードを生成する。なお、第１コード生成部２１で用いられる逆コンパイラと、第２コード生成部２２で用いられる逆コンパイラは、同じものとする。
【００１６】
比較部２３は、第１作業用ソースコードと、第２作業用ソースコードとを比較する。ここで、第１作業用ソースコードと、第２作業用ソースコードとは、同様のコンパイラおよび逆コンパイラを用いて生成されているため、変換処理で失われる情報も同じであり、形式および表現が同じとなる。そのため、比較部２３では、第１作業用ソースコードと、第２作業用ソースコードとをテキスト比較することにより、一致および不一致を判断することができる。
【００１７】
表示生成部２４は、比較部２３の比較結果に基づき、表示部３に表示させる比較結果画面３０を生成する。図２は、本実施の形態の表示部３に表示される比較結果画面３０の一例である。図２に示すように、比較結果画面３０は、３画面に分割されており、各画面に第１作業用ソースコード３１と、第２作業用ソースコード３２と、元のソースコード３３とがそれぞれ並んで表示される。
【００１８】
また、比較結果画面３０は、第１作業用ソースコード３１と、第２作業用ソースコード３２とを同時にスクロールするスクロールバー３５と、ソースコード３３をスクロールするスクロールバー３６とを有する。これにより、第１作業用ソースコード３１および第２作業用ソースコード３２と、ソースコード３３とをそれぞれ独立してスクロールさせることができ、両者を容易に見比べることができる。
【００１９】
また、比較結果画面３０では、第１作業用ソースコード３１と、第２作業用ソースコード３２との相違箇所がハイライトで示される。これにより、比較結果画面３０を見たユーザは、容易に相違箇所を把握することができる。なお、第１作業用ソースコード３１と第２作業用ソースコード３２との相違箇所の表示は、強調表示されるものであればよく、ハイライトに限定されるものではない。例えば、第１作業用ソースコード３１と第２作業用ソースコード３２との相違箇所の色を変える、もしくは下線または囲い線などを表示する、などしてもよい。
【００２０】
図３は、本実施の形態におけるプログラム比較方法のフローチャートである。プログラム比較方法は、制御部２がメモリに記憶される比較プログラムを実行することにより実施される。まず、制御部２に比較対象となるソースコードとオブジェクトプログラムが入力される（Ｓ１）。そして、第１コード生成部２１により、ソースコードがコンパイルされ、作業用オブジェクトが生成される（Ｓ２）。続いて、生成された作業用オブジェクトが逆コンパイルされ、第１作業用ソースコードが生成される（Ｓ３）。また、第２コード生成部２２により、オブジェクトプログラムが逆コンパイルされ、第２作業用ソースコードが生成される（Ｓ４）。なお、第１作業用ソースコードの生成と、第２作業用ソースコードの生成は、並列に実施されてもよい。
【００２１】
続いて、比較部２３によって、第１作業用ソースコードと第２作業用ソースコードとが比較され（Ｓ５）、相違点の有無が判断される（Ｓ６）。第１作業用ソースコードと第２作業用ソースコードとに相違点がある場合（Ｓ６：ＹＥＳ）、表示生成部２４により、相違箇所のハイライト表示を含む比較結果画面３０が生成され、表示部３に表示される（Ｓ７）。一方、第１作業用ソースコードと第２作業用ソースコードとに相違点がない場合（Ｓ６：ＮＯ）、表示生成部２４により、相違点がないことを通知する表示を含む比較結果画面３０が生成され、表示部３に表示される（Ｓ８）。相違点がない場合は、相違点がないことを表示することで、ユーザが相違箇所を探すことなく、ソースコードとオブジェクトプログラムが同一であることを迅速に判断できる。
【００２２】
以上のように、本実施の形態によると、同じ表現の第１作業用ソースコードと第２作業用ソースコードとを生成することで、比較部２３にてテキスト比較という簡易な処理を行うだけでソースコードとオブジェクトプログラムとを比較できる。また、第１作業用ソースコードと第２作業用ソースコードとは表現が同じであるため、これらを表示部３に並べて表示することで、ユーザが一致または不一致を容易に判断できる。また、第１作業用ソースコードと第２作業用ソースコードとを表示するとともに、比較結果として相違箇所を強調表示することで、迅速に相違箇所を特定することができ、作業効率が向上する。
【００２３】
実施の形態２．
次に、本発明の実施の形態２について説明する。図４は、実施の形態２におけるプログラム比較装置１００Ａの概略構成図である。実施の形態２のプログラム比較装置１００Ａは、制御部２Ａが解析部２５を有する点において、実施の形態１と相違する。プログラム比較装置１００Ａのその他の構成は、実施の形態１のプログラム比較装置１００と同様である。
【００２４】
解析部２５は、制御部２Ａがプログラムを実行することにより実現される機能部である。解析部２５は、比較部２３において、第１作業用ソースコードと第２作業用ソースコードとに相違点があると判断された場合に、元のソースコードにおける当該相違点の対応箇所を解析して特定する。具体的には、解析部２５は、第１コード生成部２１によるコンパイルおよび逆コンパイルにおける内部処理の解析を行い、対応箇所を追うことで、相違点に対応する箇所を特定する。また、解析部２５は、第１作業用ソースコードおよび第２作業用ソースコードと、ソースコードとの対応関係を予め記憶し、当該対応関係に基づいて相違点の対応箇所を特定してもよい。
【００２５】
表示生成部２４は、比較部２３による比較結果に加え、解析部２５により特定された対応箇所を含む比較結果画面３０を生成し、表示部３に表示させる。具体的には、比較結果画面３０において、ソースコードの対応箇所がハイライト表示されるなどの強調表示が行われる。また、複数の相違点がある場合には、各相違点と対応箇所との対応がわかるように、例えば色分けなどを行って表示される。
【００２６】
図５は、本実施の形態におけるプログラム比較方法のフローチャートである。本実施の形態のプログラム比較方法におけるステップＳ１からステップＳ８は、実施の形態１と同様である。そして、第１作業用ソースコードと第２作業用ソースコードとに相違点があり（Ｓ６：ＹＥＳ）、相違箇所がハイライト表示されると（Ｓ７）、ソースコードにおける相違点の対応箇所が解析される（Ｓ９）。そして、比較結果画面３０に表示されるソースコードにおいて、特定された対応箇所がハイライト表示される（Ｓ１０）。
【００２７】
本実施の形態によると、実施の形態１と同様の効果に加え、ソースコードにおける相違点の対応箇所が特定される。これにより、ユーザが相違点とソースコードとの対応を迅速に把握することができ、作業効率がさらに向上する。
【００２８】
以上が本発明の実施の形態の説明であるが、本発明は、上記の実施の形態に限定されるものではなく、本発明の主旨を逸脱しない範囲で種々に変形することが可能である。例えば、制御部２は、第１作業用ソースコードを予め生成し、図示しないメモリ等に記憶していてもよい。これにより、オブジェクトプログラムとの比較を行う度に、第１作業用ソースコードを生成する必要がなく、処理がさらに簡素化される。
【００２９】
また、比較結果画面３０において、第１作業用ソースコード３１と第２作業用ソースコード３２のみを並べて表示し、ソースコード３３を別画面に表示してもよい。さらに、比較結果画面３０において、第１作業用ソースコード３１と第２作業用ソースコード３２との相違箇所のみまたはソースコード３３の対応箇所のみ、もしくはその両方を表示してもよい。
【符号の説明】
【００３０】
１  入力部、２、２Ａ  制御部、３  表示部、２１  第１コード生成部、２２  第２コード生成部、２３  比較部、２４  表示生成部、２５  解析部、３０  比較結果画面、３１  第１作業用ソースコード、３２  第２作業用ソースコード、３３  ソースコード、３５、３６  スクロールバー、１００、１００Ａ  プログラム比較装置、２００  コンピュータ。
【図１】
2019220110.tif 000003
【図２】
2019220110.tif 000004
【図３】
2019220110.tif 000005
【図４】
2019220110.tif 000006
【図５】
2019220110.tif 000007