JP5725359B2 - ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム - Google Patents

ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム Download PDF

Info

Publication number
JP5725359B2
JP5725359B2 JP2011204924A JP2011204924A JP5725359B2 JP 5725359 B2 JP5725359 B2 JP 5725359B2 JP 2011204924 A JP2011204924 A JP 2011204924A JP 2011204924 A JP2011204924 A JP 2011204924A JP 5725359 B2 JP5725359 B2 JP 5725359B2
Authority
JP
Japan
Prior art keywords
function
source code
correction
component
analysis result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011204924A
Other languages
English (en)
Other versions
JP2013065267A (ja
Inventor
芳明 野村
芳明 野村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2011204924A priority Critical patent/JP5725359B2/ja
Priority to US13/591,854 priority patent/US8752009B2/en
Priority to CN2012103109308A priority patent/CN103019666A/zh
Publication of JP2013065267A publication Critical patent/JP2013065267A/ja
Application granted granted Critical
Publication of JP5725359B2 publication Critical patent/JP5725359B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラムに関する。
従来、ソースコードの修正内容を確認する際の手法として、例えばUNIX(登録商標)のdiffコマンドを利用して、修正前後のソースコードを行単位でテキスト比較し、ソースコード間の差分を表示させる手法が用いられている。しかしながら、このようなテキスト上の差分だけでは、それぞれの修正がどの機能に対応しているのかをユーザ自身で判断しなければならない。したがって、複数の機能に対する修正が混在している場合には、修正箇所と機能との対応付けに困難を要することになる。修正箇所と機能とを対応付ける技術として、例えば、下記特許文献1および2に記載されている技術がある。
特許文献1に記載の技術では、修正前後のソースコードを比較して修正箇所を抽出し、ソースコードの構文解析結果を用いることで、修正箇所と変数名や関数名との対応付けを行っている。特許文献2に記載の技術では、ソースコードを、プログラム、モジュール、ファイルおよび関数の各階層に分けられるように予め階層構造化しておき、修正前後のソースコードを比較する際に、プログラム、モジュール、ファイルおよび関数の各階層単位で比較することで、修正箇所と階層機能との対応付けを行っている。
特開平08−194611号公報 特開2006−277127号公報
特許文献1のように、構文解析結果を用いるだけでは、変数名や関数名よりも上位階層となるモジュールやファイル等との対応付けには不十分である。また、特許文献2では、プログラムやモジュール等の階層構造を、予め定義して登録しておく必要があるが、例えば、設計情報が入手できない場合や、追加時の登録漏れ等が考えられ、管理するのに困難を要する。
本発明は、上述した課題を解決するためになされたものであり、修正箇所と機能との対応付けを正確かつ簡易に行うことができるソースコード比較装置、ソースコード比較方法およびソースコード比較プログラムを提供することを目的の一例とする。
本発明の一側面であるソースコード比較装置は、修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出部と、前記差分抽出部により抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析部と、前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析部と、前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力部と、を備え、前記機能解析部は、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する。
本発明の一側面であるソースコード比較方法は、修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出ステップと、前記差分抽出ステップにおいて抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析ステップと、前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析ステップと、前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力ステップと、を含み、前記機能解析ステップは、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する。
本発明の一側面であるソースコード比較プログラムは、上記ソースコード比較方法に含まれる各ステップをコンピュータに実行させる。
本発明によれば、修正箇所と機能との対応付けを正確かつ簡易に行うことができる。
実施形態におけるソースコード比較装置の構成を例示する図である。 構文解析結果を例示する図である。 分割後の構文解析結果を例示する図である。 修正履歴テーブルのデータ構成を例示する図である。 暫定機能解析結果を例示する図である。 機能解析結果を例示する図である。 修正履歴テーブルのデータ構成を例示する図である。 比較結果を例示する図である。 比較結果を例示する図である。 修正前後のソースコードを比較する際の動作を説明するためのフローチャートである。 修正前後のソースコードを比較する際のデータの遷移状態を例示する模式図である。 変形例における妥当性検査部が修正の妥当性を検査する際の一例を示す模式図である。 機能区分ごとに算出する各構成要素の修正率を例示する図である。 機能区分の構成要素単位に過去の修正率と今回の修正状況との対応関係を例示する図である。 ソースコードに修正履歴を書き込んで保存する際の一例を示す模式図である。
以下、添付図面を参照して、本発明に係るソースコード比較装置、ソースコード比較方法およびソースコード比較プログラムの好適な実施形態について説明する。
まず、図1を参照して、実施形態におけるソースコード比較装置の機能構成について説明する。ソースコード比較装置1は、機能的には、例えば、差分抽出部11と、構文解析部12と、機能解析部13と、修正履歴登録部14と、比較結果出力部15と、を有する。
ここで、ソースコード比較装置1は、物理的には、例えば、CPU(Central Processing Unit)と、メモリと、入出力インターフェースとを含んで構成される。メモリには、例えば、CPUで処理されるプログラムおよびデータを記憶するROM(Read Only Memory)やHDD(Hard Disk Drive)、主として制御処理のための各種作業領域として使用されるRAM(Random Access Memory)等の要素が含まれる。これらの要素は、互いにバスを介して接続されている。CPUが、ROMに記憶されたプログラムを実行し、入出力インターフェースを介して受信されるソースコートやメッセージ、RAMに展開されるデータ等を処理することで、ソースコード比較装置1における各部の機能を実現することができる。
差分抽出部11は、修正前のソースコードと修正後のソースコードとを比較して差分を抽出する。ソースコードを比較する手法として、一般的なテキスト比較処理を用いることができる。差分抽出部11は、ソースコードのテキスト同士を比較していくことで、修正前のソースコードと修正後のソースコードとの差分を列挙する。
構文解析部12は、差分抽出部11により抽出された差分から、修正対象となった構成要素を列挙し、構文解析結果を生成する。構成要素は、ソースコードに使用可能な構成要素であり、例えば、変数、関数、構造体等が該当する。図2に、構文解析結果の一例を示す。図2の構文解析結果は、ソースコードの差分として、“差分1”、“差分2”、“差分3”が抽出され、“差分1”には構成要素として“関数1”が含まれ、“差分2”には構成要素として“変数1”および“構造体1”が含まれ、“差分3”には構成要素として“関数2”が含まれていることを示している。
構文解析部12は、複数の構成要素を含む差分が存在する場合に、その差分を構成要素ごとに分割し、構文解析結果を更新する。これは、ソースコード上で隣り合って記述されている複数の構成要素が修正された場合には、複数の構成要素を含む差分が、ひとまとまりの差分として抽出されることを考慮したものであり、このような場合に、構成要素ごとに差分を分割することとしたものである。図3に、分割後の構文解析結果の一例を示す。図3の構文解析結果は、図2の“差分2”が複数の構成要素(“変数1”および“構造体1”)を含んでいるため、この“差分2”を、構成要素“変数1”に対応する“差分2a”と、構成要素“構造体1”に対応する“差分2b”と、に分割したことを示している。
機能解析部13は、修正履歴テーブル31を参照し、構文解析結果に含まれる構成要素に対応する機能区分を決定し、機能解析結果を生成する。
図4を参照して、修正履歴テーブル31のデータ構成について説明する。修正履歴テーブル31は、データ項目として、例えば、履歴番号項目と、構成要素項目と、機能区分項目とを有する。履歴番号項目は、修正前後のソースコードを比較するごとにインクリメントされる識別番号を格納する。構成要素項目は、修正対象となった構成要素を一意に特定するための識別情報を格納する。機能区分項目は、構成要素が属する機能を一意に特定するための識別情報を格納する。機能区分は、一または複数の構成要素により実現される機能を識別可能なように、ユーザが任意に設定することができる。
図4の修正履歴テーブルは、あるソースコードについて、1回目の修正前後の比較では、機能区分“機能1”に属する構成要素“関数1”および“変数1”が修正されたことを示し、2回目の修正前後の比較では、機能区分“機能2”に属する構成要素“構造体1”が修正されたことを示す。
機能解析部13は、構文解析結果に含まれる構成要素が、修正履歴テーブル31に存在する場合には、その構成要素と対応付けて修正履歴テーブル31に記憶されている機能区分を、その構成要素に対応する機能解析結果の機能区分に設定する。機能解析部13は、構文解析結果に含まれる構成要素が、修正履歴テーブル31に存在しない場合には、修正履歴に存在しないことを示す区分(例えば、“新規機能”)を、その構成要素に対応する機能解析結果の機能区分に仮設定する。
機能解析部13は、機能区分に“新規機能”を仮設定した場合に、その時点の機能解析結果を暫定機能解析結果として出力装置4に表示させ、“新規機能”を仮設定した機能区分に対する入力をユーザに促す。その後、仮設定した機能区分に対する入力をユーザから受け付けた場合に、機能解析部13は、仮設定した暫定機能解析結果の機能区分を、入力された機能区分に変更することで、機能解析結果を更新する。
図5に、暫定機能解析結果の一例を示す。図5の暫定機能解析結果は、図3の構文解析結果と図4の修正履歴テーブルとに基づいて生成された機能解析結果である。図3の構文解析結果の構成要素うち、“関数1”、“変数1”および“構造体1”については、図4の修正履歴テーブルに存在するため、修正履歴テーブルのそれぞれの構成要素に対応して記憶されている機能区分“機能1”、“機能1”および“機能2”が、図5の暫定機能解析結果の構成要素“関数1”、“変数1”および“構造体1”に対応する機能区分にそれぞれ設定されている。一方、図3の構文解析結果の構成要素うち、“関数2”については、図4の修正履歴テーブルに存在しないため、修正履歴に存在しないことを示す区分である“新規機能”が、図5の暫定機能解析結果の構成要素“関数2”に対応する機能区分に仮設定されている。
図6に、機能解析結果の一例を示す。図6の機能解析結果は、図5の暫定機能解析結果の構成要素“関数2”に対応する機能区分が、ユーザにより入力された“機能3”に設定変更された状態を示している。
修正履歴登録部14は、機能解析結果に基づいて、修正履歴テーブル31に修正履歴を登録する。
図7に、更新後の修正履歴テーブルの一例を示す。図7の修正履歴テーブルは、図6の機能解析結果に基づいて図4の修正履歴テーブルを更新した後の状態である。図7の修正履歴テーブルには、図6の機能解析結果に含まれる4組の構成要素と機能区分との組が、修正履歴テーブルの履歴番号“3”に対応するデータとして追加登録されている。
比較結果出力部15は、修正前後のソースコードを比較した結果を示す比較結果を出力装置4に表示させる。比較結果は、機能解析結果に含まれる各項目を用いて表すことができる。比較結果に表示する項目は、機能解析結果に含まれる各項目の中からユーザが任意に指定することができる。
図8に、比較結果の一例を示す。図8の比較結果は、機能解析結果に含まれる分割差分と機能区分とを用いて表した例である。図8の比較結果は、“機能1”に関する修正として、“差分1”と“差分2a”とが抽出され、“機能2”に関する修正として、“差分2b”が抽出され、“機能3”に関する修正として、“差分3”が抽出されたことを示している。
図9に、ユーザが出力対象として特定の機能を指定した場合に表示される比較結果の一例を示す。図9は、ユーザが出力対象として“機能1”を指定したときに表示される比較結果である。図9の比較結果には、修正された複数の機能のうち、ユーザにより指定された“機能1”に関する比較結果のみが表示されている。ユーザは、例えばクエリ機能を利用して出力対象を任意に指定することができる。
次に、図10および図11を参照して、修正前後のソースコードを比較する際の動作について説明する。図10は、修正前後のソースコードを比較する際の動作を説明するフローチャートであり、図11は、修正前後のソースコードを比較する際のデータの遷移状態を模式的に示す図である。
最初に、修正前のソースコードAと修正後のソースコードBとを入力装置2から読み込む、ソースコード読込処理を実行する(ステップS101)。
続いて、差分抽出部11は、修正前のソースコードAと修正後のソースコードBとをテキスト比較により比較して差分を抽出する、テキスト比較処理を実行する(ステップS102)。図11では、修正前のソースコードAと修正後のソースコードBとの差分として、“差分1”、“差分2”および“差分3”が抽出されている。
続いて、構文解析部12は、上記ステップS102で抽出された差分から修正対象となった構成要素を列挙し、差分を構成要素ごとに分割して構文解析結果を生成する、構文解析処理を実行する(ステップS103)。図11では、“差分1”、“差分2”および“差分3”に含まれる構成要素として、“関数1”、“変数1”、“構造体1”および“関数2”が列挙されている。
続いて、機能解析部13は、上記ステップS103で生成した構文解析結果に含まれる構成要素に対応する機能区分を、修正履歴テーブル31を参照して決定し、機能解析結果を生成する、機能解析処理を実行する(ステップS104)。図11では、修正履歴テーブルを参照し、修正履歴テーブルに存在する“機能1”および“機能2”が、差分から列挙された構成要素に対応する機能区分として決定されている。
機能解析部13は、上記ステップS103で生成した構文解析結果に含まれる全ての構成要素(修正箇所)が、修正履歴テーブル31に存在するか否かを判定する(ステップS105)。この判定がYESである場合(ステップS105;YES)には、処理を後述するステップS108に移行する。
一方、上記ステップS105の判定で構文解析結果に含まれる構成要素(修正箇所)のいずれかが修正履歴テーブル31に存在しないと判定された場合(ステップS105;NO)に、機能解析部13は、その時点の機能解析結果を暫定機能解析結果として出力装置4に表示させ(ステップS106)、“新規機能”を仮設定した機能区分に対する入力をユーザに促す。図11では、“差分3”から列挙された“関数2”に対応する機能区分への入力がユーザに促される。
続いて、仮設定した機能区分に対する入力をユーザから受け付けた場合に、機能解析部13は、暫定機能解析結果の“新規機能”を仮設定した機能区分を、入力された機能区分に変更することで、機能解析結果を更新する(ステップS107)。図11では、“差分3”から列挙された“関数2”に対応する機能区分が“機能3”に設定変更される。
続いて、修正履歴登録部14は、上記ステップS104で生成された機能解析結果または上記ステップS107で更新された機能解析結果に基づいて、修正履歴テーブル31に修正履歴を登録する、修正履歴登録処理を実行する(ステップS108)。図11では、修正履歴テーブルに、履歴番号“3”の修正履歴データが追加登録される。
続いて、比較結果出力部15は、修正前後のソースコードを比較した結果を示す比較結果を出力装置4に表示させる、比較結果出力処理を実行する(ステップS109)。
上述したように、実施形態におけるソースコード比較装置1によれば、蓄積した過去の修正履歴にもとづいて、修正箇所と機能との対応付けを行うことができるため、過去の修正実績に基づいた正確な対応付けを簡易に行うことが可能となる。
また、修正履歴にない新規修正箇所については、その修正箇所に対応する機能を入力するようにユーザに促し、ユーザから入力された機能を登録することができるため、新規コードや新規機能を追加した場合であっても、登録漏れを確実に防止することができる。
また、修正のたびに、修正箇所と機能とを対応付けて追加登録し、対応付け情報を蓄積していくことができるため、過去の対応付け情報を参照しながら開発することが可能となり、開発時の作業効率を向上させることができる。
[変形例]
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
例えば、上述した実施形態のソースコード比較装置1は、図1に示す各部を備えているが、さらに、妥当性検査部を備えることとしてもよい。妥当性検査部は、修正履歴テーブル31を参照して、機能区分ごとに、各構成要素が当該機能区分に属する構成要素として修正される割合(修正率)を算出する。妥当性検査部は、機能区分ごとに算出した各構成要素の修正率が所定の閾値以上となる構成要素が、機能解析結果の当該機能区分に対応する構成要素として設定されていない場合に、修正が妥当ではない旨をユーザに通知する。
図12〜図14を参照して、妥当性検査部の機能ついて具体的に説明する。図12は、妥当性検査部が修正の妥当性を検査する際の一例を模式的に示した図である。図13は、機能区分ごとに算出する各構成要素の修正率の一例を示す図である。図14は、機能区分の構成要素単位に過去の修正率と今回の修正状況との対応関係を例示した図である。
妥当性検査部は、図12に示す修正履歴テーブルを参照して、図13に示す機能区分ごとの各構成要素の修正率を算出する。図12の修正履歴テーブルには、履歴番号“1”と履歴番号“2”とで識別される2回分の比較結果が修正履歴として蓄積されている。“機能1”は、2回とも修正対象となっており、“機能2”は、履歴番号“1”でのみ修正対象となっている。
“機能1”を修正したときには、“関数1”と“変数1”とが2回とも修正されているため、“関数1”および“変数1”の修正率は“100%”となり、“構造体1”は履歴番号“2”でのみ修正されているため、“構造体1”の修正率は“50%”となる(図13参照)。
“機能2”を修正したときには、“変数1”が修正されているため、“変数1”の修正率は“100%”となり、“関数1”と“構造体1”とは修正されていないため、“関数1”および“構造体1”の修正率は“0%”となる(図13参照)。
妥当性検査部は、図13に示す機能区分ごとの各構成要素の修正率を参照して、検査対象となる機能区分において修正率が所定の閾値以上となる構成要素が、機能解析結果の当該機能区分に対応する構成要素として設定されていない場合に、修正が妥当ではない旨をユーザに通知する。
図12に示すように、修正前後のソースコードA、Bを比較すると、機能解析結果には、“差分1”として、“関数1”と“機能1”との組み合わせが設定されることになる。図13に示す“機能1”の構成要素ごとの修正率と、今回の修正状況との対応関係を表したものが図14となる。仮に修正率の閾値が90%に設定されているとすると、修正率が閾値以上となる構成要素は、“関数1”および“変数1”となる。今回の“機能1”に関する修正では、“関数1”のみが修正されているため、妥当性検査部は、“変数1”が修正漏れであると判定し、その旨をユーザに通知する。
なお、ユーザに通知するのは、修正漏れであることには限定されない。例えば、過去の修正率が第2の閾値以下である構成要素が修正されている場合には、修正ミスであると判定し、その旨をユーザに通知することもできる。
このような妥当性検査部を備えることで、過去の修正履歴に基づいて今回の修正の妥当性を判断することができるため、開発時の作業効率をさらに向上させることが可能となる。
また、上述した実施形態では、修正履歴を修正履歴テーブル31に格納して保存しているが、修正履歴を保存する方法は、これに限定されない。例えば、図15に示すように、比較するソースコードに修正履歴を書き込んで保存することとしてもよい。図15は、Java(登録商標)言語のソースコードYにアノテーションとして修正履歴Xを埋め込んだ例である。ソースコードYの一部に、各機能区分に対応するアノテーションを定義する。各アノテーションは、int型の配列を持つ単一値のアノテーションとする。対応する履歴番号を設定したアノテーションを、対応する構成要素の記述箇所に挿入する。これにより、ソースコードの編集と修正履歴の参照とを、一つのソースコードで実現できるため、修正内容の確認や開発等の作業効率を向上させることが可能となる。
また、上述した各実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下のように限定するものではない。
(付記1) 修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出部と、前記差分抽出部により抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析部と、前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析部と、前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力部と、を備え、前記機能解析部は、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する、ことを特徴とするソースコード比較装置。
(付記2) 前記機能解析部は、前記構文解析結果に含まれる前記構成要素が前記修正履歴に存在しない場合に、前記修正履歴に存在しないことを示す区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に仮設定するとともに、前記仮設定した前記機能区分に対する入力をユーザに促す、ことを特徴とする付記1記載のソースコード比較装置。
(付記3) 前記機能解析部は、前記仮設定した前記機能区分に対する入力をユーザから受け付けた場合に、前記仮設定した前記機能区分を、入力された前記機能区分に変更することで、前記機能解析結果を更新する、ことを特徴とする付記2記載のソースコード比較装置。
(付記4) 前記修正履歴を参照し、前記機能区分ごとに、前記構成要素が当該機能区分に属する前記構成要素として修正される割合を算出し、当該割合が所定の閾値以上となる前記構成要素が、前記機能解析結果の当該機能区分に対応する前記構成要素として設定されていない場合に、修正が妥当ではない旨をユーザに通知する妥当性検査部を、さらに備えることを特徴とする付記1〜3のいずれかに記載のソースコード比較装置。
(付記5) 前記機能解析部により生成される前記機能解析結果を、前記修正履歴として記憶装置に記憶させる修正履歴記憶部を、さらに備えることを特徴とする付記1〜4のいずれかに記載のソースコード比較装置。
(付記6) 前記機能解析部により生成される前記機能解析結果を、前記修正履歴として修正後のソースコードに組み込む修正履歴組込部を、さらに備えることを特徴とする付記1〜4のいずれかに記載のソースコード比較装置。
(付記7) 修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出ステップと、前記差分抽出ステップにおいて抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析ステップと、前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析ステップと、前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力ステップと、を含み、前記機能解析ステップは、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する、ことを特徴とするソースコード比較方法。
(付記8) 付記7に記載の各ステップをコンピュータに実行させるためのソースコード比較プログラム。
1…ソースコード比較装置
2…入力装置
3…記憶装置
4…出力装置
11…差分抽出部
12…構文解析部
13…機能解析部
14…修正履歴登録部
15…比較結果出力部
31…修正履歴テーブル

Claims (8)

  1. 修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出部と、
    前記差分抽出部により抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析部と、
    前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析部と、
    前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力部と、を備え、
    前記機能解析部は、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する、ことを特徴とするソースコード比較装置。
  2. 前記機能解析部は、前記構文解析結果に含まれる前記構成要素が前記修正履歴に存在しない場合に、前記修正履歴に存在しないことを示す区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に仮設定するとともに、前記仮設定した前記機能区分に対する入力をユーザに促す、ことを特徴とする請求項1記載のソースコード比較装置。
  3. 前記機能解析部は、前記仮設定した前記機能区分に対する入力をユーザから受け付けた場合に、前記仮設定した前記機能区分を、入力された前記機能区分に変更することで、前記機能解析結果を更新する、ことを特徴とする請求項2記載のソースコード比較装置。
  4. 前記修正履歴を参照し、前記機能区分ごとに、前記構成要素が当該機能区分に属する前記構成要素として修正される割合を算出し、当該割合が所定の閾値以上となる前記構成要素が、前記機能解析結果の当該機能区分に対応する前記構成要素として設定されていない場合に、修正が妥当ではない旨をユーザに通知する妥当性検査部を、さらに備えることを特徴とする請求項1〜3のいずれか1項に記載のソースコード比較装置。
  5. 前記機能解析部により生成される前記機能解析結果を、前記修正履歴として記憶装置に記憶させる修正履歴登録部を、さらに備えることを特徴とする請求項1〜4のいずれか1項に記載のソースコード比較装置。
  6. 前記機能解析部により生成される前記機能解析結果を、前記修正履歴として修正後のソースコードに組み込む修正履歴組込部を、さらに備えることを特徴とする請求項1〜4のいずれか1項に記載のソースコード比較装置。
  7. 修正前のソースコードと修正後のソースコードとを比較して差分を抽出する差分抽出ステップと、
    前記差分抽出ステップにおいて抽出された前記差分を、ソースコードに使用可能な構成要素ごとに分割し、当該分割した後の差分である分割差分と前記構成要素とを対応付けた構文解析結果を生成する構文解析ステップと、
    前記構文解析結果に含まれる前記分割差分と前記構成要素との組に対応付けて機能区分を設定することで機能解析結果を生成する機能解析ステップと、
    前記機能解析結果に含まれる前記分割差分および前記機能区分を用いて、修正前のソースコードと修正後のソースコードとの比較結果を出力する出力ステップと、を含み、
    前記機能解析ステップは、前記構文解析結果に含まれる前記構成要素が、過去にソースコードを比較した結果に基づいて蓄積された修正履歴に存在する場合に、当該構成要素に対応付けて前記修正履歴に設定されている前記機能区分を、当該構成要素に対応する前記機能解析結果の前記機能区分に設定する、ことを特徴とするソースコード比較方法。
  8. 請求項7に記載の各ステップをコンピュータに実行させるためのソースコード比較プログラム。
JP2011204924A 2011-09-20 2011-09-20 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム Expired - Fee Related JP5725359B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011204924A JP5725359B2 (ja) 2011-09-20 2011-09-20 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム
US13/591,854 US8752009B2 (en) 2011-09-20 2012-08-22 Source code comparison device, source code comparison method and source code comparison program
CN2012103109308A CN103019666A (zh) 2011-09-20 2012-08-28 源代码比较设备、源代码比较方法和源代码比较程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011204924A JP5725359B2 (ja) 2011-09-20 2011-09-20 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム

Publications (2)

Publication Number Publication Date
JP2013065267A JP2013065267A (ja) 2013-04-11
JP5725359B2 true JP5725359B2 (ja) 2015-05-27

Family

ID=47881878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011204924A Expired - Fee Related JP5725359B2 (ja) 2011-09-20 2011-09-20 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム

Country Status (3)

Country Link
US (1) US8752009B2 (ja)
JP (1) JP5725359B2 (ja)
CN (1) CN103019666A (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533668B2 (en) * 2010-04-26 2013-09-10 Red Hat, Inc. Comparing source code using code statement structures
JP5725359B2 (ja) * 2011-09-20 2015-05-27 日本電気株式会社 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム
US9785302B2 (en) * 2013-03-14 2017-10-10 Microsoft Technology Licensing, Llc Inline display and preview of related information for elements in a document
US9311077B2 (en) * 2013-03-29 2016-04-12 International Business Machines Corporation Identification of code changes using language syntax and changeset data
CN103617122B (zh) * 2013-12-12 2016-03-30 用友网络科技股份有限公司 一种源代码的比对方法
KR101623174B1 (ko) * 2014-08-27 2016-05-20 주식회사 파수닷컴 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
JP2018093412A (ja) * 2016-12-06 2018-06-14 株式会社日立製作所 演算装置、送信プログラム、送信方法
CN107577476A (zh) * 2017-08-07 2018-01-12 中国科学院软件研究所 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
JP2019219848A (ja) * 2018-06-19 2019-12-26 クラリオン株式会社 ソースコード解析方法およびソースコード解析装置
US11157844B2 (en) * 2018-06-27 2021-10-26 Software.co Technologies, Inc. Monitoring source code development processes for automatic task scheduling
CN109542508B (zh) * 2018-10-18 2020-12-29 华中科技大学 一种基于函数调用关系图的代码同源性分析方法
US11416245B2 (en) 2019-12-04 2022-08-16 At&T Intellectual Property I, L.P. System and method for syntax comparison and analysis of software code

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3711863A (en) * 1972-01-21 1973-01-16 Honeywell Inf Systems Source code comparator computer program
US4048728A (en) * 1973-09-12 1977-09-20 Systex, Inc. Training system for telephone switchboard operators using computer central processing unit
US5201050A (en) * 1989-06-30 1993-04-06 Digital Equipment Corporation Line-skip compiler for source-code development system
US5485409A (en) * 1992-04-30 1996-01-16 International Business Machines Corporation Automated penetration analysis system and method
JPH08194611A (ja) 1995-01-19 1996-07-30 Hitachi Ltd プログラム修正による影響範囲を解析する装置
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6804682B1 (en) * 2002-04-29 2004-10-12 Borland Software Corporation System and methodology providing compiler-assisted refactoring
US7496892B2 (en) * 2003-05-06 2009-02-24 Andrew Nuss Polymorphic regular expressions
US20050015752A1 (en) * 2003-07-15 2005-01-20 International Business Machines Corporation Static analysis based error reduction for software applications
US7503035B2 (en) * 2003-11-25 2009-03-10 Software Analysis And Forensic Engineering Corp. Software tool for detecting plagiarism in computer source code
JP4360942B2 (ja) * 2004-03-05 2009-11-11 三菱電機株式会社 ソフトウェア開発支援装置
US7624304B2 (en) * 2004-10-07 2009-11-24 Microsoft Corporation Defect detection for integers
JP2006277127A (ja) * 2005-03-28 2006-10-12 Canon Inc 修正プログラムの比較方法
US7707552B2 (en) * 2005-10-17 2010-04-27 International Business Machines Corporation Method and system for autonomically prioritizing software defects
US20080196000A1 (en) * 2007-02-14 2008-08-14 Fernandez-Lvern Javier System and method for software development
US20090044177A1 (en) * 2007-08-09 2009-02-12 Cary Lee Bates Method and apparatus for profile enhanced source code analyzer results
US8352921B2 (en) * 2007-11-02 2013-01-08 Klocwork Corp. Static analysis defect detection in the presence of virtual function calls
JP2009169724A (ja) * 2008-01-17 2009-07-30 Nomura Research Institute Ltd 保守支援装置
CN100576172C (zh) * 2008-05-27 2009-12-30 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
US8099721B2 (en) * 2008-06-17 2012-01-17 Microsoft Corporation Parsing of declarations in all branches of preprocessor conditionals
JP2010186378A (ja) * 2009-02-13 2010-08-26 Hitachi Ltd ソフトウェアのバージョン間の差分表示システム及び方法
US8806441B2 (en) * 2009-06-29 2014-08-12 International Business Machines Corporation Static code analysis
US9507699B2 (en) * 2011-06-16 2016-11-29 Microsoft Technology Licensing, Llc Streamlined testing experience
JP5725359B2 (ja) * 2011-09-20 2015-05-27 日本電気株式会社 ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム

Also Published As

Publication number Publication date
US20130074035A1 (en) 2013-03-21
US8752009B2 (en) 2014-06-10
CN103019666A (zh) 2013-04-03
JP2013065267A (ja) 2013-04-11

Similar Documents

Publication Publication Date Title
JP5725359B2 (ja) ソースコード比較装置、ソースコード比較方法およびソースコード比較プログラム
CN111767057B (zh) 一种数据处理方法及装置
JP4396994B2 (ja) リソース・ファイルの翻訳検証方法、装置、およびプログラム
US20070271510A1 (en) Error checking web documents
US9811449B2 (en) Test scenario generation support device and test scenario generation support method
US20070266378A1 (en) Source code generation method, apparatus, and program
JP2007034813A (ja) 複数自然言語のソフトウェア説明書生成システム
US8387010B2 (en) Automatic software configuring system
US10261884B2 (en) Method for correcting violation of source code and computer readable recording medium having program performing the same
CN110618941B (zh) 一种界面元素处理方法及装置
JP5747698B2 (ja) 要件管理支援装置
JP2013077124A (ja) ソフトウェアテストケース生成装置
CN106033338A (zh) 基于fog数据的源代码导入及解析的方法和装置
JP3758282B2 (ja) 情報検索装置
JP2016057715A (ja) 図形式プログラム解析装置
US9430451B1 (en) Parsing author name groups in non-standardized format
JP4484791B2 (ja) 検証データ生成装置および検証データ生成プログラム、検証データ生成方法
US8645908B2 (en) Method for generating specifications of static test
US7979476B2 (en) Information processing apparatus, control method therefor, program, and storage medium
JP2007241347A (ja) プログラムの品質管理装置、及びプログラムの品質管理レポートの生成方法
JP2008020972A (ja) ソフトウエア解析システム
JP2007310829A (ja) データ処理装置、データ処理方法およびデータ処理プログラム
JP2013206310A (ja) モデル検査装置、モデル検査方法、およびプログラム
US9171106B2 (en) Apparatus and method to collect and condense design violations from output data files
US20130091423A1 (en) Method and Apparatus for Checking a Structure Conformity for a Piece Of Development Documentation with at Least One Development Document

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140806

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150305

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150318

R150 Certificate of patent or registration of utility model

Ref document number: 5725359

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees