JP6235945B2 - Source code generation and provision apparatus, and source code generation and provision method - Google Patents

Source code generation and provision apparatus, and source code generation and provision method Download PDF

Info

Publication number
JP6235945B2
JP6235945B2 JP2014058028A JP2014058028A JP6235945B2 JP 6235945 B2 JP6235945 B2 JP 6235945B2 JP 2014058028 A JP2014058028 A JP 2014058028A JP 2014058028 A JP2014058028 A JP 2014058028A JP 6235945 B2 JP6235945 B2 JP 6235945B2
Authority
JP
Japan
Prior art keywords
code
partial
information
common
source
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.)
Active
Application number
JP2014058028A
Other languages
Japanese (ja)
Other versions
JP2015184735A (en
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.)
Hitachi Social Information Services Ltd
Original Assignee
Hitachi Government and Public Sector System Engineering Ltd
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 Hitachi Government and Public Sector System Engineering Ltd filed Critical Hitachi Government and Public Sector System Engineering Ltd
Priority to JP2014058028A priority Critical patent/JP6235945B2/en
Priority to PCT/JP2015/058050 priority patent/WO2015141723A1/en
Priority to CN201580014888.7A priority patent/CN106068496B/en
Publication of JP2015184735A publication Critical patent/JP2015184735A/en
Application granted granted Critical
Publication of JP6235945B2 publication Critical patent/JP6235945B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

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

Description

本発明は、ソースコード生成および提供装置、並びにソースコード生成および提供方法に関する。   The present invention relates to a source code generation and provision apparatus and a source code generation and provision method.

システムの保守作業では、長年に亘るソースコードの修正により、設計書の不備により、あるいはデータ項目やロジックの仕様変更によりコード(ロジックやデータ項目定義等のコード)の重複が生じ、ソースコードの可読性が低下するという問題があり、保守作業の効率が落ちるということがあった。このために、手作業にてリファクタリング(重複コードの共通化によるソースコード規模の縮小)作業を行い、保守性の回復がなされて来た。   In system maintenance work, code (logic and data item definition code) is duplicated due to revision of source code over the years, deficiencies in design documents, or changes in data item and logic specifications, and the readability of source code There is a problem that the efficiency of maintenance work decreases. For this purpose, refactoring (reducing source code scale by duplicating common codes) has been performed manually, and maintenance has been restored.

特許文献1には、スクリプトによるソースコード自動生成の方法が提案され、生成結果としての同じコードが存在する場合に、重複部分を共通化することが記載されている。   Patent Document 1 proposes a method for automatically generating source code using a script, and describes that an overlapping portion is made common when the same code as a generation result exists.

特許文献2には、重複コードの検出方法として既存のコードクローン検出ツールを利用し、ソースファイルからコードクローンを検出し重複部分の共通化することが記載されている。   Patent Document 2 describes that an existing code clone detection tool is used as a method for detecting duplicate codes, code clones are detected from a source file, and duplicate portions are shared.

特開第2007−304998号公報JP 2007-304998 A 特開第2009−176064号公報JP 2009-176064 A

手作業による重複コードの共通化を図る方法にあっては、品質が低く作業コストが高くなるという問題があった。加えて、手作業では、変数名が異なるなど完全一致でない、類似のソースコードを検出する事が難しく、重複コードの共通化が効果的に行うことができないという問題があった。   In the method of sharing the duplicated code manually, there is a problem that the quality is low and the work cost is high. In addition, there is a problem in that it is difficult to detect similar source codes that are not completely matched, such as variable names being different, and that it is not possible to effectively duplicate code.

また、特許文献1の技術では、ソースコード生成過程で重複コードを共通化するという手段であると、生成中のソースコードのみに影響する重複コードを共通化するということが出来るが、コードの共通化時にすでに生成完了したソースコードにまたがる重複コードを共通化するということができないため、複数のプログラム間に跨って存在する重複コードを共通化することができないという問題があった。   Further, in the technique of Patent Document 1, if the means for sharing the duplicate code in the source code generation process, it can be said that the duplicate code that affects only the source code being generated is shared. There is a problem that it is not possible to share duplicate code that spans a plurality of programs because it is not possible to share duplicate code that spans source code that has already been generated at the time of conversion.

また、特許文献2の技術では、変数のスコープが局所化できる構造化言語に対して有効な技術であり、COBOL85のような変数が大域変数(変数の影響範囲が常に変数宣言を行ったプログラム全体に及ぶ)となる、初期の構造化プログラム言語の場合、重複コードに含まれる変数を関数のパラメタとして生成することはソースコードが冗長となり、ソースコードの可読性が低下してしまうといった問題があった。加えて、特許文献2の技術では、変数宣言からなるデータ構造の定義はリファクタリング(コード共通化)の対象でない。   The technology of Patent Document 2 is effective for a structured language in which the scope of variables can be localized. Variables such as COBOL85 are global variables (the entire program in which the variable influence range always declares variables). In the case of early structured programming languages, the problem is that generating variables included in duplicate code as function parameters makes the source code redundant and lowers the readability of the source code. . In addition, in the technique of Patent Document 2, the definition of the data structure composed of variable declarations is not an object of refactoring (code sharing).

また、コードの共通化後にソースコードを修正あるいは保守する場合は、コード共通化によるソースコードの変更を考慮する必要があるため、コード共通化後の保守性が向上しにくいという問題があった。   In addition, when the source code is corrected or maintained after the code is standardized, it is necessary to consider the change of the source code due to the code standardization, so that the maintainability after the code standardization is difficult to improve.

本発明は、初期の構造化プログラム言語で作成されたソースコードに対して、リファクタリングされたソースコードを効率よく生成することが出来るようにすることを目的とする。   An object of the present invention is to make it possible to efficiently generate refactored source code for source code created in an early structured programming language.

また、リファクタリング後の保守作業を容易にするための保守用情報を生成、提供することを目的とする。   Another object is to generate and provide maintenance information for facilitating maintenance work after refactoring.

本発明は、ソースコードを解析して、ソースコードに含まれる互いに類似する部分コードを検出し、そのソースコード上の位置情報を取得する類似コード検出手段と、
前記検出した互いに類似する複数の部分コードに基づいて、共通コードを生成するとともに、当該共通コードと前記類似するそれぞれの各部分コードとの差分情報を生成する共通コード生成手段と、
前記ソースコード内の前記類似する各部分コードを、その前記位置情報に基づいて、前記共通コードおよび前記部分コードの差分情報を挿入する挿入コードに差し替える部分コード差替手段と、
を備えることを特徴とするソースコード生成装置を提供する。
The present invention analyzes a source code, detects similar partial codes included in the source code, and obtains position information on the source code, similar code detecting means,
A common code generating means for generating a common code based on the detected plurality of similar partial codes and for generating difference information between the common code and each of the similar partial codes;
Partial code replacement means for replacing each similar partial code in the source code with an insertion code for inserting difference information between the common code and the partial code based on the position information;
A source code generation device is provided.

本発明は、上述されたソースコード生成装置において、
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報であること
を特徴とするソースコード生成装置を提供する。
The present invention provides the above-described source code generation device,
The similar partial code is a code clone which is a code considered to be equivalent in a program grammar,
The difference information is information for replacing a description in the partial code with another description, and provides a source code generation device.

本発明は、上述されたソースコード生成装置において、
前記類似コード検出手段は、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成装置を提供する。
The present invention provides the above-described source code generation device,
The similar code detecting means extracts a partial code similar as the code clone based on a program grammar, and compares a plurality of extracted partial codes or a part as a replacement target of the partial code by comparison with a reference. Provided is a source code generation device characterized by performing granularity adjustment by exclusion or division.

本発明は、上述されたソースコード生成装置において、
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含む保守用情報を生成する保守用情報生成手段を備えたこと
を特徴とするソースコード生成装置を提供する。
The present invention provides the above-described source code generation device,
A source code generation device comprising maintenance information generation means for generating maintenance information including the replaced similar partial code, the position information thereof, the common code, and the difference information I will provide a.

また、本発明は、類似コード検出手段が、ソースコードを解析して、ソースコードに含まれる互いに類似する部分コードを検出し、そのソースコードの位置情報を取得する類似コード検出ステップと、
共通コード生成手段が、前記検出した互いに類似する複数の部分コードに基づいて、共通コードを生成するとともに、当該共通コードと前記類似するそれぞれの各部分コードとの差分情報を生成する共通コード生成ステップと、
部分コード差替手段が、前記ソースコード内の前記類似する各部分コードを、その前記位置情報に基づいて、前記共通コードおよび前記部分コードの差分情報を挿入する挿入コードに差し替える部分コード差替ステップと、
を含むことを特徴とするソースコード生成方法を提供する。

Further, according to the present invention, the similar code detecting unit analyzes the source code, detects mutually similar partial codes included in the source code, and acquires position information on the source code ; and
A common code generation unit generates a common code based on the detected plurality of similar partial codes, and generates difference information between the common code and each of the similar partial codes. When,
A partial code replacement step in which the partial code replacement means replaces each similar partial code in the source code with an insertion code for inserting the common code and the partial code difference information based on the position information. When,
A source code generation method characterized by comprising:

本発明は、上述されたソースコード生成方法において、
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報である
ことを特徴とするソースコード生成方法を提供する。
The present invention provides the above-described source code generation method,
The similar partial code is a code clone which is a code considered to be equivalent in a program grammar,
The difference information is information for replacing the description in the partial code with another description. A source code generation method is provided.

本発明は、上述されたソースコード生成方法において、
前記類似コード検出ステップでは、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成方法を提供する。
The present invention provides the above-described source code generation method,
In the similar code detection step, a partial code similar to the code clone is extracted based on the program grammar, and a part of the partial code to be replaced is compared by comparing the extracted partial codes or comparing with a reference. Provided is a source code generation method characterized by performing granularity adjustment by exclusion or division.

本発明は、上述されたソースコード生成方法において生成されたソースコードに加えて、
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含んで生成された保守用情報を提供する保守用情報提供ステップを、
さらに含むことを特徴とするソースコード提供方法を提供する。
In addition to the source code generated in the above-described source code generation method, the present invention provides
A maintenance information providing step of providing maintenance information generated including the replaced similar partial code, the position information, the common code, and the difference information,
Furthermore, the present invention provides a source code providing method characterized by including the above.

本発明は、従来のリファクタリング装置と異なり、リファクタリング対象を関数単位だけではなく、変数宣言まで拡大しているため、より多くの重複コードを共通化し、また保守性をより向上させることができる。   Unlike the conventional refactoring apparatus, the present invention extends the refactoring target not only to function units but also to variable declarations, so that more duplicate codes can be shared and maintainability can be further improved.

また本発明は、初期の構造化言語で作成されたソースコードに好適なリファクタリング装置であり、初期の構造化言語の利用が多いとされる保守期間が長いシステムへ適用することで多大な効果を発揮し得る。   Further, the present invention is a refactoring device suitable for source code created in an early structured language, and has a great effect when applied to a system with a long maintenance period that is expected to be used in an early structured language. Can demonstrate.

本発明実施例の形態をブロックで示す図。The figure which shows the form of this invention Example with a block. 二つの類似部分コードの共通化を行う手順と、その自動化を行うステップを示す図。The figure which shows the procedure which performs the commonization of two similar partial codes, and the step which performs the automation. 手順の実施例を示す図。The figure which shows the Example of a procedure. 類似コードの抽出の内容の詳細を示す図。The figure which shows the detail of the content of extraction of a similar code. 共通コードの生成の内容の詳細を示す図。The figure which shows the detail of the production | generation content of a common code. 共通コード埋込命令への差し替えの内容の詳細および保守用資料の生成の内容を示す図。The figure which shows the detail of the content of replacement | exchange to a common code embedding instruction, and the content of the production | generation of the maintenance data. ファイル1、ファイル2、ファイル3の例を示す図。The figure which shows the example of the file 1, the file 2, and the file 3. 類似コードの抽出例を示す図。The figure which shows the example of extraction of a similar code. 類似コードの抽出例を示す図。The figure which shows the example of extraction of a similar code. 類似部分コード情報を示す図。The figure which shows similar partial code information. 共通コードの生成を示す図。The figure which shows the production | generation of a common code. 共通コード埋め込み命令への差し替えを示す図。The figure which shows the replacement | exchange to a common code embedding instruction. ファイル1やファイル2について埋め込み命令が挿入されたことを示す図。The figure which shows that the embedding command was inserted about the file 1 and the file 2. FIG. リファクタリング判断基準情報例を示す図。The figure which shows the example of refactoring criteria information. リファクタリング判断例を示す図。The figure which shows the refactoring judgment example.

以下、本発明の形態を、図面を用いて説明する。   Hereinafter, embodiments of the present invention will be described with reference to the drawings.

図1は、本発明の実施例であるソースコード生成装置100をブロックで示す。   FIG. 1 is a block diagram showing a source code generating apparatus 100 according to an embodiment of the present invention.

図1において、ソースコード生成装置100は、処理装置101が持つソースコード102を参照する。このソースコード102は、変数が大域変数である初期の構造化プログラム言語で記述されているものとする。   In FIG. 1, the source code generation device 100 refers to the source code 102 included in the processing device 101. It is assumed that the source code 102 is described in an initial structured program language in which variables are global variables.

ソースコード生成装置100は、コードクローン検出手段1、コードクローン情報取得手段2、共通化単位設定およびコードクローン情報調整手段3、コードクローン情報取得手段4、部分コード間差分情報生成手段6、共通化コード生成手段7、埋め込みコード情報取得手段8、調整ソースコード生成手段9、およびデータベース10から構成される。これらの手段は、通信回線11で互いに接続され、情報の授受がなされ得る。ソースコード提供装置110は、ソースコード生成装置100と保守用情報生成手段105とから構成される。保守用情報生成手段105はソースコード生成装置100と通信回線13で互いに接続され、情報の授受がなされ得る。外部の処理装置101とソースコード提供装置110とは通常の通信回路12を介して接続される。他の手段によって接続されるようにしてもよい。通信回路12によって生成された情報の相互授受がなされる。   The source code generation device 100 includes a code clone detection unit 1, a code clone information acquisition unit 2, a sharing unit setting and code clone information adjustment unit 3, a code clone information acquisition unit 4, a partial code difference information generation unit 6, a sharing The code generation unit 7 includes an embedded code information acquisition unit 8, an adjustment source code generation unit 9, and a database 10. These means are connected to each other via a communication line 11 and can exchange information. The source code providing apparatus 110 includes a source code generating apparatus 100 and maintenance information generating means 105. The maintenance information generation means 105 is connected to the source code generation apparatus 100 and the communication line 13 so that information can be exchanged. The external processing device 101 and the source code providing device 110 are connected via a normal communication circuit 12. You may make it connect by another means. Mutual exchange of information generated by the communication circuit 12 is performed.

コードクローンについて使用する場合、類似部分コードをコードクローンに含まれる下位概念とされる場合があるが、ここではコードクローン(あるいはクローン)を二つの部分コードが類似した類似部分コードの関係にある場合を指して使用する。部分コードが同一の場合には、同一部分コードとして示す。   When using a code clone, a similar partial code may be considered as a subordinate concept included in the code clone, but here the code clone (or clone) is related to a similar partial code with two similar partial codes Point to and use. When the partial codes are the same, they are shown as the same partial code.

コードクローン検出手段1は、ソースコード解析およびコードクローンとして把握される部分コードである類似部分コードおよび同一部分コードの検出を行う。部分コードは、通常互いに同一の同一部分コード、互いに類似の類似部分コードからなり、部分コードとしての識別がなされる。同一部分コードに特定しての共通化処理では共通化範囲に限界がある、本実施例では類似部分コードについても共通化処理を行う。このように類似部分コードについてについて主に説明するが、同一部分コードの共通化処理を除外するものではない。コードクローンの検出法については各種の検出方法が報告されていて、各種の検出方法が採用可能である。   The code clone detection means 1 performs source code analysis and detection of similar partial codes and identical partial codes, which are partial codes grasped as code clones. The partial code is usually composed of the same partial code that is identical to each other and similar partial codes that are similar to each other, and is identified as a partial code. There is a limit to the common range in the common processing specified for the same partial code. In this embodiment, the common processing is also performed for similar partial codes. Although the similar partial code will be mainly described in this way, the common part common processing is not excluded. Various detection methods have been reported for detecting code clones, and various detection methods can be employed.

コードクローン検出手段1は、単一または複数のソースコードを解析して、当該ソースコードに含まれる少なくとも二つの部分コードについて、部分コードを構成するトークン種別の並びが同等であることを条件として、類似部分コードをコードクローンとして検出する。トークンとは、プログラミング言語の文法上、ソースコードを構成する最小単位の文字列である。   The code clone detection means 1 analyzes a single or a plurality of source codes, and for at least two partial codes included in the source code, on the condition that the sequence of token types constituting the partial code is equivalent, Similar partial codes are detected as code clones. A token is a character string of a minimum unit constituting a source code in the grammar of a programming language.

コードクローン情報取得手段2は、コードクローン検出手段1で検出された部分コードのソースコード上の位置情報を取得する。位置情報は、領域情報と言われることがある。   The code clone information acquisition unit 2 acquires position information on the source code of the partial code detected by the code clone detection unit 1. The position information may be referred to as area information.

コードクローン情報調整手段3は、共通化単位設定を設定し、コードクローン情報取得手段2で取得された部分コードの位置情報を読み込み、任意の粒度(構造的なまとまり)を持つ部分コードを抽出する。粒度は、コードの共通化を行う単位として設定する。粒度は演算処理記述やデータ構造記述など、複数の粒度を設定してよい。粒度は、ソースコード生成装置100が生成するソースコードの理解容易性や保守性から定めればよい。   The code clone information adjustment unit 3 sets the common unit setting, reads the position information of the partial code acquired by the code clone information acquisition unit 2, and extracts a partial code having an arbitrary granularity (structural unit). . Granularity is set as a unit for code sharing. The granularity may be set to a plurality of granularities such as an arithmetic processing description and a data structure description. The granularity may be determined from the ease of understanding and maintainability of the source code generated by the source code generation device 100.

コードクローン情報取得手段4は、コードクローン情報調整手段3で、共通化単位が設定され、抽出された部分コードのソースコード上の位置情報を取得する。コードクローン情報取得手段2で取得した部分コードの位置情報は破棄する。   The code clone information acquisition unit 4 acquires the position information on the source code of the extracted partial code with the common unit set by the code clone information adjustment unit 3. The partial code position information acquired by the code clone information acquisition means 2 is discarded.

部分コード間差分情報生成手段6は、部分コード間の差分を検出する。差分は類似コードの関係をもつ部分コード間で検出する。検出された差分に基づいて部分コード間差分情報を取得する。   The partial code difference information generating means 6 detects a difference between partial codes. Differences are detected between partial codes having similar code relationships. Based on the detected difference, difference information between partial codes is acquired.

共通コード生成手段7は、コードクローンについて予め定めた単位、典型的には粒度に基づいて予め定めたルールに従って共通コードを生成する。共通コードの生成に部分コード間差分情報を利用しないルールを定めてもよい。生成された共通コードと、類似コードの関係にある部分コードとの差分を検出する。検出された差分情報を、部分コード間差分情報として取得する。部分コード間差分情報生成手段7で取得した部分コード間差分情報は破棄する。   The common code generation means 7 generates a common code according to a predetermined rule based on a predetermined unit for the code clone, typically a granularity. A rule that does not use the difference information between the partial codes for the generation of the common code may be defined. A difference between the generated common code and a partial code having a similar code relationship is detected. The detected difference information is acquired as difference information between partial codes. The partial code difference information acquired by the partial code difference information generation means 7 is discarded.

埋め込みコード情報取得手段8は、部分コード間差分情報から差分情報付き類似コード情報を生成する。   The embedded code information acquisition unit 8 generates similar code information with difference information from the partial code difference information.

調整ソースコード生成手段9は、上述した処理結果に基づいて、各ソースコードから当該部分コードを削除させる命令、および埋め込み済みソースコードを形成させる共通コード挿入指示命令を生成する。   The adjustment source code generation means 9 generates an instruction for deleting the partial code from each source code and a common code insertion instruction instruction for forming an embedded source code based on the processing result described above.

削除させる命令が、取得された部分コードの位置情報に関連して当該部分コードを削除させる命令であり、埋め込み済みソースコードを生成させる共通コード挿入指示命令が、削除した位置に、埋め込みコード情報から生成された共通化コードと生成された差分情報とを埋め込んで、ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを生成させる命令である。埋め込み済みソースコードは、ソースコードとなる。   The instruction to be deleted is an instruction to delete the partial code in relation to the position information of the acquired partial code, and the common code insertion instruction instruction to generate the embedded source code is inserted from the embedded code information to the deleted position. This is an instruction for embedding the generated common code and the generated difference information to generate an embedded source code without substantially changing the structural form of the source code. The embedded source code becomes the source code.

このようにすることで、外部の処理装置101に提供され、使用されることになる埋め込み済みソースコードが生成される。このように、生成されたスリム化ソースコード103は、処理装置101での処理に用いられることになる。   In this way, embedded source code to be provided and used for the external processing apparatus 101 is generated. Thus, the generated slimmed source code 103 is used for processing in the processing apparatus 101.

ソースコード提供装置110は、スリム化ソースコード103、および生成されたソースコード保守用情報生成手段105で生成された保守用情報104を処理装置101に提供する。これらに二つの提供によって顧客は、ソースコードが使い易いものとなる。   The source code providing apparatus 110 provides the processing apparatus 101 with the slimmed source code 103 and the maintenance information 104 generated by the generated source code maintenance information generating means 105. These two provisions make it easier for customers to use the source code.

図2は、二つの類似部分コードの共通化処理を行う手順と、その自動化を行う手順を含む手順を示す。   FIG. 2 shows a procedure including a procedure for sharing two similar partial codes and a procedure for automating the procedure.

図2において、ステップは大きく分けて、
1.類似コードの抽出ステップ(すなわち、コードクローン抽出ステップ)
2.共通コードの生成ステップ
3.共通コード埋込命令への差し替えステップ
4.保守用資料の生成ステップ
5.生成情報提供ステップ
からなり、これらのステップによって、ソースコードおよび関連の保守用情報が利用者である顧客の端末に提供される。
1.類似コードの抽出ステップでは、ソースコードから類似部分コードを抽出し、それら類似部分コードの情報を取得する。
1−1 類似部分コードを以下の条件で抽出する。
1)共通化を行う単位。共通化を行う単位として抽出単位は予め定めた任意の粒度であること
2)プログラム文法上同等とみなされる構文(コードクローン)であること
1−2 類似部分コードの情報として、以下の情報を取得する。
・ 類似部分コードの、ソースコード上に占める位置情報
2.共通コードの生成ステップでは、抽出された類似部分コードから共通コードファイルを生成する。
2−1 共通コードを生成する。共通コードは、関連する類似部分コードに対する差分が少なくなるように共通コードを生成すると、ソースコードファイル全体の保守性が向上する。
2−2 生成した共通コードと、関連する類似部分コードとの差分を算出する。
2−3 生成した共通コードを共通コードファイルとして生成する。
3.共通コード埋込命令への差し替えステップでは、共通コード埋込命令への差し替えを行う。ソースコード内の各類似部分コードを削除し、削除した位置(1−2a)に、「共通コードと類似部分コードとの差分を補完しながら、共通コードファイルの内容を挿入する」命令を挿入する。すなわち共通コード挿入指示命令を挿入する。このようにして削除命令および共通コード挿入指示命令を持つスリム化ソースコードが生成される。
4.保守用資料の生成ステップでは、作成した共通コードや修正したソースコードの関連を、類似コードごとにまとめた一覧をファイルとして出力する。スリム化ソースコードと共に保守用情報が顧客に提供される。
In FIG. 2, the steps are roughly divided.
1. Similar code extraction step (i.e., code clone extraction step)
2. 2. Common code generation step 3. Replacement step to common code embedding instruction 4. Maintenance document generation step These steps comprise generation information provision steps, whereby the source code and related maintenance information are provided to the customer terminal of the user.
1. In the similar code extraction step, similar partial codes are extracted from the source code, and information on the similar partial codes is acquired.
1-1 Similar partial codes are extracted under the following conditions.
1) A unit for sharing. The unit of extraction is a predetermined arbitrary granularity as a unit to be shared 2) It is a syntax (code clone) regarded as equivalent in the program grammar 1-2 The following information is acquired as information of similar partial codes To do.
-Location information of similar partial codes on the source code In the common code generation step, a common code file is generated from the extracted similar partial codes.
2-1 Generate common code. When the common code is generated so that the difference with respect to the related similar partial code is reduced, the maintainability of the entire source code file is improved.
2-2 The difference between the generated common code and the related similar partial code is calculated.
2-3 Generate the generated common code as a common code file.
3. In the replacement step to the common code embedded instruction, replacement to the common code embedded instruction is performed. Each similar part code in the source code is deleted, and an instruction “insert the contents of the common code file while complementing the difference between the common code and the similar part code” is inserted at the deleted position (1-2a). . That is, a common code insertion instruction command is inserted. In this way, a slimmed source code having a deletion instruction and a common code insertion instruction instruction is generated.
4). In the maintenance material generation step, a list in which the relationships between the created common code and the corrected source code are summarized for each similar code is output as a file. Maintenance information is provided to customers along with the streamlined source code.

図3は、ソースコード提供手順の実施例を示す。   FIG. 3 shows an embodiment of a source code providing procedure.

図3において、手順は、上述したように、1.類似部分コードの抽出およびコード調整、2.共通化コードの生成、3.共通コード挿入による差し替え、4.保守用資料の生成、5.生成情報の提供からなる。   In FIG. 3, the procedure is as follows: 1. extraction of similar partial codes and adjustment of codes; 2. Generation of common code 3. Replacement by inserting common code 4. Generation of maintenance materials. Providing generation information.

図3において、類似部分コードの抽出で、ソースコード31(図1でソースコード102)が用意され、準備されたソースコード31が参照されて、静的解析32(静的解析は、従来から知られている)がなされ、類似部分コードを含んだコードクローンの検出がなされる。このように切り出され、検出された類似部分コードを含んだコードクローン情報33が取得される。コードクローン情報33が参照され、コードクローンについての調整、例えば粒度調整34がなされる。リファクタリング粒度情報39が参照され、コードクローン粒度調整34がなされたコードクローンについてコードクローン情報35が取得される。   In FIG. 3, source code 31 (source code 102 in FIG. 1) is prepared by extracting similar part codes, and the prepared source code 31 is referred to, and static analysis 32 (static analysis is conventionally known). Code clones containing similar partial codes are detected. The code clone information 33 cut out in this way and including the detected similar partial code is acquired. The code clone information 33 is referred to, and the code clone is adjusted, for example, the granularity adjustment 34 is performed. With reference to the refactoring granularity information 39, the code clone information 35 is acquired for the code clone for which the code clone granularity adjustment 34 has been made.

コードクローンは、リファクタリング調整基準に従ってリファクタリング候補となり、ファイル化される。   The code clone becomes a refactoring candidate according to the refactoring adjustment criteria and is filed.

リファクタリング候補コードについて、リファクタリング判断基準情報36が参照されて、リファクタリング判断37がなされ、リファクタリング対象コードクローン情報38が生成される。   With respect to the refactoring candidate code, the refactoring determination criterion information 36 is referred to, the refactoring determination 37 is performed, and the refactoring target code clone information 38 is generated.

2.共通コードの生成に移行する。   2. Move on to common code generation.

このステップで、リファクタリング対象コードクローン間差分の検出40がなされる。検出された差分から差分情報が生成される。差分情報が参照されて差分情報付きコードクローン情報41が取得される。差分情報付きコードクローン情報41が参照されて共通コード生成42がなされる。生成された共通コードおよび差分情報から共通コード43および共通化処理のための共通コード情報44が取得される。
3.共通コード埋込命令への差し替えに移行する。
In this step, the difference 40 between the refactoring target code clones is detected 40. Difference information is generated from the detected difference. The code clone information 41 with difference information is acquired by referring to the difference information. The common code generation 42 is performed with reference to the code clone information 41 with difference information. From the generated common code and difference information, the common code 43 and common code information 44 for common processing are acquired.
3. Transition to replacement with common code embedding instructions.

移行のため、削除命令、共通コード挿入指示命令が生成され、挿入すなわち埋込45がなされる。この埋込命令を持つ埋め込みソースコード46が生成され、取得される。これによって埋め込みソースコードは、保守前のソースコードの構造上の形態を実質的に変えられることなく、保守前のソースコードの規模に比べて大きさが縮小される。
4.保守用資料の生成および5.生成情報の提供に移行する。
For the transition, a delete instruction and a common code insertion instruction instruction are generated and inserted, that is, embedded 45 is made. Embedded source code 46 having this embedded instruction is generated and acquired. As a result, the size of the embedded source code is reduced as compared with the scale of the source code before maintenance without substantially changing the structural form of the source code before maintenance.
4). Generation of maintenance materials and 5. Shift to provision of generated information.

このステップで、ソースコード処理方法情報を含む保守用情報の生成がなされ、生成された、ソースコード情報および保守用情報の提供がなされる。   In this step, maintenance information including source code processing method information is generated, and the generated source code information and maintenance information are provided.

このように、処理装置に実行させる単一または複数のソースプログラムの複数のソースコードを解析して、当該ソースコードに含まれる少なくとも二つの部分コードについて共通化を行う予め定めた単位であること、およびプログラム文法上同等とみなされる構文であることを条件として、類似部分コードが検出され、
複数のソースコードのコードクローン間の差分を検出して各ソースコードについて差分情報が生成され、
各ソースコードについて、生成された共通コードと生成された差分情報とからなる埋め込みコード情報が生成され、
取得された位置情報に関連して当該部分コードを削除させる命令、および埋め込み済みソースコードを生成させ、削除した位置に、埋め込みコード情報から生成された共通コードと生成された差分情報とを埋め込んで、ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを形成させる命令が生成され、
複数のプログラムの各調整部分コードと、生成された共通コードと検出された差分とからなる埋め込みコード情報の関係の保守用情報が生成され、
ソースコードの構造上の形態が実質的に変わることなく、参照されたソースコードに比して各規模が縮小されたソースコードおよび該埋め込みコード情報の関係の保守用情報を提供する。これによって顧客は、上述のようにして生成された共通コードを持つソースコードを用いての各種処理を行い得ることになる。
In this way, it is a predetermined unit for analyzing a plurality of source codes of a single or a plurality of source programs to be executed by the processing device and sharing at least two partial codes included in the source code, And similar subcodes are detected, provided that the syntax is considered equivalent in program grammar,
Detects differences between code clones of multiple source codes and generates difference information for each source code,
For each source code, embedded code information consisting of the generated common code and the generated difference information is generated,
An instruction to delete the partial code in relation to the acquired position information and an embedded source code are generated, and the common code generated from the embedded code information and the generated difference information are embedded in the deleted position. Instructions are generated to form embedded source code without substantially changing the structural form of the source code,
Maintenance information on the relationship between each adjustment part code of the plurality of programs, the generated common code, and the embedded code information consisting of the detected difference is generated,
Provided is maintenance information on the relationship between the source code whose scale is reduced compared to the referenced source code and the embedded code information without substantially changing the structural form of the source code. As a result, the customer can perform various processes using the source code having the common code generated as described above.

図4−図6は、図3に示した内容の詳細を示す。図3で説明した事項は必要以上に繰り返さないことにする。   4 to 6 show details of the contents shown in FIG. The matter described in FIG. 3 will not be repeated more than necessary.

図4は、1.類似コードの抽出の内容の詳細を示す。図4において、類似部分コード抽出により、コードクローンを抽出する。ソースコードAからソースコードA内の一方のコードが部分コード(1)32Aとして抽出され、一方の部分コード(1)32Bとなる。また、ソースコードBからソースコードB内の類似コード(1)32Cが抽出され、類似部分コード(1)32Dとなる。一方の部分コード(1)32Bと類似部分コード(1)32Dの2つの部分コードは、類似の関係にあり、コードクローンの関係にある。   FIG. The details of extraction of similar codes are shown. In FIG. 4, code clones are extracted by extracting similar partial codes. One code in the source code A is extracted from the source code A as the partial code (1) 32A, and becomes one partial code (1) 32B. Further, the similar code (1) 32C in the source code B is extracted from the source code B, and becomes a similar partial code (1) 32D. The two partial codes of one partial code (1) 32B and similar partial code (1) 32D are in a similar relationship and are in a code clone relationship.

このように静的解析がなされ、複数のソースコード31についてのコードクローン検出32がなされる。   In this way, static analysis is performed, and code clone detection 32 for a plurality of source codes 31 is performed.

コードの類似性を判定する方法は、各種知られており、公知の手法によるコード類似判定方法が採用可能である。   Various methods for determining code similarity are known, and code similarity determination methods using known methods can be employed.

一方の部分コード(1)32Bおよび類似部分コード(1)32Dから類似部分コード情報33が取得される。また、類似部分コード情報として、類似コードの、ソースコード上に占める位置が位置情報として取得される。   Similar partial code information 33 is acquired from one partial code (1) 32B and similar partial code (1) 32D. Further, as the similar partial code information, the position of the similar code on the source code is acquired as the position information.

次のステップで、リファクタリング粒度情報39が参照され、類似部分コードを共通化する共通コードの単位に調整するコードクローン粒度調整34がなされる。共通コードの単位をコード共通化実行単位に調整したコードクローン情報35を取得する。コードクローンを共通コードの粒度に調整する。すなわち、リファクタリングスル粒度に調整する。   In the next step, the refactoring granularity information 39 is referred to, and the code clone granularity adjustment 34 for adjusting the similar partial code to a common code unit is performed. The code clone information 35 in which the common code unit is adjusted to the code common execution unit is acquired. Adjust code clones to common code granularity. That is, it adjusts to a refactoring through particle size.

調整とは、類似部分コードの一部のコードの一部を削ったり、類似部分コードを分割してコード共通化実行単位、例えば実行粒度を合わせることをいう。共通コード以下の粒度の場合は共通化不要とし、共通化処理の対象から外される。この調整によってコード共通化後のソースコードファイルの保守性が、調整を行わない場合よりも向上する。   The adjustment means that a part of the code of the similar partial code is deleted or the similar partial code is divided to match the code sharing execution unit, for example, the execution granularity. If the granularity is less than that of the common code, no sharing is required and it is excluded from the common processing. This adjustment improves the maintainability of the source code file after code sharing compared to the case where no adjustment is made.

調整単位、粒度単位は、関数やデータ構造などの(1)共通化処理後のプログラム保守性が損なわれず、(2)後述の共通コード挿入命令よりも大きい、プログラム言語上の粒度が適宜設定される。すなわち、粒度は、プログラムの演算処理またはデータ構造のいずれかまたは両方の観点から、プログラム言語構造上の粒度をリファクタリングの対象として予めリファクタリング粒度情報に設定したものを利用する。   As for the adjustment unit and granularity unit, (1) program maintainability after common processing, such as functions and data structures, is not impaired, and (2) a larger granularity in the program language than the common code insertion instruction described later is set as appropriate. The That is, as the granularity, from the viewpoint of either or both of the arithmetic processing of the program and the data structure, the granularity on the program language structure is set as the refactoring granularity information in advance as the refactoring target.

◆共通化の粒度単位へ削る例を示す。コードクローンI34Aが実行単位の共通化処理の粒度単位まで削られ、コードクローンI34Bとされる。したがって、コードクローンIは、共通化処理の粒度単位に設定調整、設定されたコードクローンということになる。   ◆ An example of cutting to a common granularity unit is shown. The code clone I34A is cut down to the granularity unit of the execution unit common processing, and is set as the code clone I34B. Therefore, the code clone I is a code clone that is set and adjusted in the unit of granularity of the common processing.

◆共通化の粒度単位へ分割する例を示す。コードクローンII34Cが実行単位の共通化処理の粒度単位まで分割され、コードクローンII34DおよびコードクローンII34Eとなる。したがって、コードクローンII34CおよびコードクローンII34Eは、複数の共通化処理の粒度単位に設定調整、設定されたれたリファクタリング候補コードになる。コードクローンは、リファクタリング候補コードとしてリファクタリングコードクローン情報ファイルにファイルされる。   ◆ An example of dividing into common granularity units is shown. The code clone II34C is divided up to the granularity unit of the execution unit common processing, and becomes a code clone II34D and a code clone II34E. Therefore, the code clone II34C and the code clone II34E become refactoring candidate codes that have been set and adjusted to a plurality of granularity units for common processing. The code clone is filed in a refactoring code clone information file as a refactoring candidate code.

リファクタリング候補コードは、リファクタリング判断基準情報36が参照されることで、リファクタリング判断37(リファクタリング判断部における判断)され、リファクタリング対象コードクローンとされ、コードクローン情報38が取得される。以下、コードクローンという。   The refactoring candidate code is referred to the refactoring determination criterion information 36, so that the refactoring determination 37 (determination by the refactoring determination unit) is performed, the code clone information 38 is obtained as a refactoring target code clone. Hereinafter referred to as a code clone.

リファクタリング判断37を行うリファクタリング部は、与えられた判断情報(リファクタリング対象とするソースコードの構成など)や、算出された保守容易性の傾向(既存の尺度、例えば削減されるソースコードの規模や保守容易性指数など)をもとに、対象のコードクローン情報ファイルの中からリファクタリングを行うリファクタリング候補コードが設定された。   The refactoring unit that performs the refactoring determination 37 includes the given determination information (configuration of source code to be refactored, etc.) and the calculated maintainability tendency (existing scale, for example, the scale and maintenance of the reduced source code). Based on the ease index, etc., refactoring candidate codes for refactoring were set from the target code clone information file.

判断は、リファクタリング対象の「データ構造の記述」と「演算に記述」ごとに実施する。そして、次に示すように選択したコードクローン間の差分情報を、調整単位、例えばプログラム言語のトークンレベルの粒度で収集し、その結果を先に選択したコードクローンに紐付け、リファクタリング対象コードクローンを取得し、リファクタリングコードクローン情報ファイルに格納する。   The determination is performed for each “description of data structure” and “description in operation” to be refactored. Then, as shown below, the difference information between the selected code clones is collected at the adjustment unit, for example, the token level granularity of the programming language, the result is linked to the previously selected code clone, and the refactoring target code clone is Acquire it and store it in the refactoring code clone information file.

このようにリファクタリングは、類似コードについてコードクローンとして検出するだけでなく、共通化コードを生成し、差分情報を収集し共通化コードを利用できるように置き換え、ソースコード作成のための共通コードの適用までのステップで使用される。   In this way, refactoring not only detects similar code as code clones, but also generates common code, collects difference information and uses the common code, and applies common code to create source code. Used in steps up to.

図5は、2.共通コードの生成の内容の詳細を示す。   FIG. Details of the contents of common code generation are shown.

コードクローン間差分抽出40では、類似となるコードクローン間の、共通部分以外の差分を検出する。全く同一のコードであれば差分はないが、類似の場合差分が存在する。共通コードおよびこの共通コードに関連した差分からなる埋め込み用のコードが生成される。   In the difference extraction 40 between code clones, a difference other than a common part between similar code clones is detected. There is no difference if they are exactly the same code, but there is a difference if they are similar. An embedding code including a common code and a difference related to the common code is generated.

類似となるコードクローンには、共通部分が双方に共通し、一方のみに差分となるコードが存在する場合、共通部分が双方に共通し、互いに差異となるコードが存在する場合がある。共通コード生成は、これらの差異が場合に、差異が存在しない場合に生成され、差異がある場合に、差分が共通コードに加えられて生成される。   In a similar code clone, when a common part is common to both, and there is a code that is different only on one side, there is a case where a common part is common to both and there are codes that are different from each other. The common code generation is generated in the case where these differences exist, and when there is no difference, the difference is added to the common code when there is a difference.

ソースコードAについてのコードクローン(1)40AおよびソースコードBについてのコードクローン(1′)40Bは、コードクローンであり、これらにはそれぞれ差分が付加された形態となる。コードクローン(1)40Aおよびコードクローン(1′)40Bは、コードクローン間で同一の部分である。類似部分コードには、この同一部分に各差分が付加される。コードクローン(1)40Aとその差分、コードクローン(1′)40Aとその差分から差分情報付きコードクローン情報41、リファクタリング対象コードクローン情報41が取得される。この差分情報付きコードクローン情報41が埋め込み用のコードとして用いられることになる。   The code clone (1) 40A for the source code A and the code clone (1 ′) 40B for the source code B are code clones, each of which has a difference added. The code clone (1) 40A and the code clone (1 ′) 40B are identical portions between the code clones. Each difference is added to the same part in the similar part code. The code clone information 41 with difference information and the refactoring target code clone information 41 are acquired from the code clone (1) 40A and its difference, the code clone (1 ') 40A and its difference. This code clone information 41 with difference information is used as an embedding code.

コードクローン情報41から、共通コード43を生成し、共通コードについて共通コードファイルを格納する。このようにして共通コードファイルに生成された共通コードを格納しておく。   A common code 43 is generated from the code clone information 41, and a common code file is stored for the common code. The common code generated in this way is stored in the common code file.

共通コード生成42において、各コードクローンから、共通部分を抜き出して共通コードファイルを生成する。   In the common code generation 42, a common code file is generated by extracting a common part from each code clone.

ソースコードAその他のソースコードのコードクローン(1)や(1′)のコードクローン間で同一のコード部分について共通コードとする。これによって共通コード43で示すように対象のソースコードに対応して一つまたは複数の共通コードを生成する。共通コード生成がなされたことで、取得されたコードクローン位置情報と生成された共通コードと検出対象コードクローン間の差分とからなる共通コード情報44が生成される。   The same code portion is made common among the code clones (1) and (1 ') of the source code A and other source codes. As a result, as shown by the common code 43, one or a plurality of common codes are generated corresponding to the target source code. When the common code is generated, the common code information 44 including the acquired code clone position information, the generated common code, and the difference between the detection target code clones is generated.

図6は、3.共通コード埋込命令への差し替えの内容の詳細および4.保守用資料の生成、5.生成情報の提供の内容を示す。   FIG. 3. Details of replacement to common code embedding instruction and 4. Generation of maintenance materials. Indicates the contents of generation information provided.

共通コード挿入指示命令が生成され、命令の埋込45がなされる。   A common code insertion instruction instruction is generated, and instruction embedding 45 is performed.

プログラムコードからリファクタリングコードクローンに相当する部分コードを削除すると共に、各共通コードの挿入コードの挿入命令を挿入する。   A partial code corresponding to the refactoring code clone is deleted from the program code, and an insertion instruction for the insertion code of each common code is inserted.

なお、共通コード挿入指示命令には、挿入する共通コードおよび共通コードとの差分情報を付加する。   Note that the common code to be inserted and the difference information from the common code are added to the common code insertion instruction.

ソースコードからリファクタリング対象コードクローンに相当する部分コードを削除すると共に、各共通コードの挿入させる挿入命令を生成し、挿入を指示する。共通コードとの差分情報を付加させる。埋込済ソースコード46を生成する。   A partial code corresponding to the refactoring target code clone is deleted from the source code, and an insertion instruction for inserting each common code is generated, and insertion is instructed. Add difference information from the common code. The embedded source code 46 is generated.

図6において、ソースコードから調整コードクローンに相当する部分コードをその部分の位置情報から削除46Aするとともに、生成された各共通コードの共通コード挿入指示命令46Bを挿入する。共通コード挿入指示命令埋込46を実行する。なお、共通コード挿入指示命令には、挿入する共通コードに共通コードとの差分情報が付加される。   In FIG. 6, the partial code corresponding to the adjusted code clone is deleted from the position information 46A from the source code, and a common code insertion instruction command 46B for each generated common code is inserted. The common code insertion instruction embedding 46 is executed. Note that, in the common code insertion instruction, difference information from the common code is added to the common code to be inserted.

埋込済ソースコード46は、同一部分コードおよび類似部分コードの共通化処理の結果、生成されたソースコードになる。同一部分コードについては、上述したステップにより処理が可能である。
4.保守用資料の生成がなされ、5、生成情報が提供される。
The embedded source code 46 becomes a source code generated as a result of common processing of the same partial code and similar partial code. The same partial code can be processed by the steps described above.
4). Maintenance material is generated, and 5, generation information is provided.

この保守用資料の生成ステップでは、共通化処理と共に共通コード一覧・共通コード呼び出し元プログラム一覧・削除プログラム一覧などの保守用資料を生成する。   In this maintenance material generation step, maintenance materials such as a common code list, a common code caller program list, and a deletion program list are generated together with the common processing.

生成された情報が提供可能とされる。
・規模(コード行数)一覧資料:プログラムソースコードファイルごとの、修正行数・削除行数・追加行数などの規模の一覧
・共通コード一覧:共通コードの一覧
・削除コード関連一覧:共通コードが、どの類似コードと置き換わったのかという関連を示す一覧
・修正コード一覧:類似コードを共通コードに置き換えた影響で修正された箇所の一覧
情報の提供に際しては、生成されたソースコードへの命令の埋め込み情報を元のソースコードに対する保守用情報として生成して格納し、
外部の処理装置に、ソースコードの構造上の形態を実質的に変えることなく、参照されたソースコードに比して規模が縮小されたソースコードを提供し、該提供時に格納した保守用情報を電子情報として提供する。
The generated information can be provided.
・ Scale (number of code lines) list materials: List of scales such as the number of modified lines, number of deleted lines, number of added lines, etc. for each program source code file ・ Common code list: List of common codes ・ List of deleted codes: Common code List of modified code that shows the relationship of which similar code was replaced: List of parts that have been modified due to the effect of replacing similar code with common code When providing information, instructions for the generated source code Generate and store the embedded information as maintenance information for the original source code,
The external processing device is provided with source code whose scale is reduced compared to the referenced source code without substantially changing the structural form of the source code, and the maintenance information stored at the time of provision is provided. Provide as electronic information.

このように、複数のプログラムの各調整部分コードと、生成された共通コードと共通コードに関連して検出された差分とからなる埋め込みコード情報の関係の保守用情報が生成され、
ソースコードの構造上の形態が実質的に変わることなく、参照されたソースコードに比して各規模が縮小されたソースコードおよび該埋め込みコード情報の関係の保守用情報を提供する、ソースコード提供装置110が構成される。
In this way, maintenance information of the relationship of the embedded code information consisting of each adjustment part code of the plurality of programs and the generated common code and the difference detected in relation to the common code is generated,
Source code providing for maintaining the relationship between the source code reduced in scale and the embedded code information compared with the referenced source code without substantially changing the structural form of the source code A device 110 is configured.

図7から図14は、共通化処理例を示す。   7 to 14 show examples of common processing.

図7は、COBOLレコードの例であり、ファイルI、ファイル2、ファイル3の例を示す。   FIG. 7 is an example of a COBOL record, and shows an example of file I, file 2, and file 3.

図8、図9は、類似コードの抽出例を示す。   8 and 9 show examples of similar code extraction.

図8は、クローン1を、図9は、クローン2の例を示す。ファイル1のNo.2−5,ファイル2のNo.2−5、ファイル3のNo.13−16がコードクローンであることを示す。   FIG. 8 shows an example of clone 1 and FIG. 9 shows an example of clone 2. No. of file 1 2-5, file 2 No. 2-5, file 3 No. 13-16 are coding clones.

図9は、ファイル3を示し、No.15,16とNo19,20がコードクローンであることを示す。   FIG. 15 and 16 and No19 and 20 are code clones.

図10は、類似部分コード情報を示す。   FIG. 10 shows similar partial code information.

図11は、共通コードの生成を示す。No.2−5が生成された共通コードを示す。   FIG. 11 shows the generation of the common code. No. 2-5 indicates the generated common code.

図12は、共通コード挿入指示命令への差し替えを示す。   FIG. 12 shows replacement to a common code insertion instruction command.

背景色(網かけ)を付けた部分が修正される。ファイル1のNo.2−5、ファイル2のNo.2−5、ファイル3のNo.13−16が論理削除または物理削除される。ファイル3に、No17に、共通コード挿入指示命令が挿入されたことを示す。   The part with the background color (shaded) is corrected. No. of file 1 2-5, file 2 No. 2-5, file 3 No. 13-16 is logically deleted or physically deleted. The file 3 indicates that the common code insertion instruction is inserted into No17.

ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを生成させる命令によって実行されている。   It is executed by instructions that generate embedded source code without substantially changing the structural form of the source code.

図13は、ファイル1やファイル2について共通コード挿入指示命令が挿入されたことを示す。   FIG. 13 shows that a common code insertion instruction command has been inserted for file 1 and file 2.

図14は、リファクタリング判断基準情報例を示す。   FIG. 14 shows an example of refactoring determination criterion information.

図15は、リファクタリング判断例を示す。例1は、2つのデータ記述がコードクローン候補として存在するが、リファクタリング対象としない場合である。例2は、2つのデータ記述がコードクローン候補として存在し、リファクタリング対象とする場合である。   FIG. 15 shows an example of refactoring determination. Example 1 is a case where two data descriptions exist as code clone candidates but are not to be refactored. Example 2 is a case where two data descriptions exist as code clone candidates and are to be refactored.

ソースコード生成装置100は、処理装置に実行させる単一または複数のソースプログラムの複数のソースコードを解析して、当該ソースコードに含まれる少なくとも二つの部分コードについて共通化を行う予め定めた単位であること、およびプログラム文法上同等とみなされる構文であることを条件として、類似部分コードのコードクローンであることを検出するコードクローン検出手段と、
複数のソースコードについて、検出された二つの部分コードがコードコローン関係であることおよび当該部分コードのソースコード上の位置情報を取得するコードクローン情報取得手段と、
複数のプログラムの各コードクローンについて、共通コードを生成する共通コード生成手段と、
複数のソースコードのコードクローン間の差分を検出して各ソースコードについて差分情報を生成する調整ソースコード差分情報取得手段と、
各ソースコードについて、生成された共通コードと生成された差分情報とからなる埋め込みコード情報を生成する埋め込みコード情報取得手段と、
各ソースコードから当該部分コードを削除させる命令、および埋め込み済みソースコードを生成させる命令を備えた調整ソースコード生成手段と、を備える、
ここで、削除させる命令が、取得された位置情報に関連して当該部分コードを削除させる命令であり、埋め込み済みソースコードを生成させる命令が、削除した位置に、埋め込みコード情報から生成された共通コードと生成された差分情報とを埋め込んで、ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを生成させる命令である。
The source code generation device 100 analyzes a plurality of source codes of a single or a plurality of source programs to be executed by a processing device, and uses at least a predetermined unit for sharing at least two partial codes included in the source code. A code clone detection means for detecting that the code clone is a similar partial code, on the condition that the syntax is considered to be equivalent in the program grammar;
For a plurality of source codes, code clone information acquisition means for acquiring that the two detected partial codes are in a code colony relationship and position information on the source codes of the partial codes,
Common code generation means for generating a common code for each code clone of a plurality of programs;
Adjustment source code difference information acquisition means for detecting differences between code clones of a plurality of source codes and generating difference information for each source code;
For each source code, embedded code information acquisition means for generating embedded code information composed of the generated common code and generated difference information;
An adjustment source code generation means including an instruction for deleting the partial code from each source code and an instruction for generating an embedded source code;
Here, the instruction to be deleted is an instruction to delete the partial code in relation to the acquired position information, and the instruction to generate the embedded source code is the common generated from the embedded code information at the deleted position. This is an instruction for embedding a code and generated difference information to generate an embedded source code without substantially changing the structural form of the source code.

ソースコード生成装置100は、
複数のソースコードの各コードクローンについて、識別された粒度単位から、共通化実行単位としての共通化コードを生成する単位としての粒度を予め定めたルールに従って調整、設定する粒度調整設定手段と、
複数のソースコードの各コードクローンについて、共通化実行単位として調整、設定された共通化コード粒度の情報を取得するコードクローン情報取得手段と、を備える。
The source code generation device 100
For each code clone of a plurality of source codes, a granularity adjustment setting unit that adjusts and sets the granularity as a unit for generating a shared code as a shared execution unit from the identified granularity unit according to a predetermined rule;
Code clone information acquisition means for acquiring information of the common code granularity adjusted and set as a common execution unit for each code clone of a plurality of source codes.

共通化コード生成手段が、複数のプログラムの各コードクローンについて、共通コードを生成し、
コードクローン間差分情報取得手段が、複数のソースコードのコードクローン間の差分を検出して各ソースコードについて差分情報を生成し、
埋め込みコード情報取得手段が、各ソースコードについて、当該共通コードと生成された差分情報とからなる埋め込みコード情報を生成する。
The common code generation means generates a common code for each code clone of a plurality of programs,
Difference information acquisition means between code clones detects differences between code clones of a plurality of source codes and generates difference information for each source code,
An embedded code information acquisition unit generates embedded code information including the common code and the generated difference information for each source code.

埋め込み済みソースコードを生成させる命令が、埋め込みコード情報から当該共通化コードとコードクローンに関連して生成された差分とを埋め込んで、ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを生成させる命令である。   The instruction to generate the embedded source code is embedded without substantially changing the structural form of the source code by embedding the common code and the difference generated in relation to the code clone from the embedded code information. This instruction generates source code.

コードクローン検出手段が同一および類似部分コード関係であることを検出し、コードクローン情報取得手段が同一および類似部分コードの情報を取得する。埋め込み済みソースコードを生成させる命令が、差分のないことを示す情報を持つ埋め込みコード情報をも埋め込んだソースコードを生成させる命令である。   The code clone detecting means detects that the same and similar partial code relationship is found, and the code clone information acquiring means acquires information on the same and similar partial code. An instruction for generating an embedded source code is an instruction for generating a source code in which embedded code information having information indicating that there is no difference is also embedded.

このようにして、ログラムコードの同一部分コードまたは/および類似部分コードを共通化処理することができ、上述した削除および埋め込み命令が挿入されたソースコードが形成されるので、ソースコードの規模を効果的に削減することができる。   In this way, the same part code or / and similar part code of the program code can be shared, and the source code into which the above-described deletion and embedding instructions are inserted is formed, so that the scale of the source code is effective. Can be reduced.

ソースコードの構造上の形態が実質的に変わることなく、保守に際して、使い勝手、保守性がよく、よって汎用性があり、効率よく共通化がなされ、共通化可能範囲が拡大されて、効率よく共通化がなされ、また参照されたソースコードに比して規模が縮小されたソースコードを提供することが出来る。   The structure of the source code does not change substantially, and maintenance is easy to use and maintainability. Therefore, it is versatile and can be shared efficiently. It is possible to provide a source code that has been scaled down and scaled down relative to the referenced source code.

また、規模が縮小されて作成されたソースコードが提供できる。
そして、本実施例によれば、上述したように設定された共通コード粒度下で、コードクローン関係の類似部分コードと生成された共通コードと検出された各共通コード粒度コードクローン類似部分コード間の差分とからなる共通コード情報を取得しているので、各ソースコードについて、ソースコードから、取得されたコードクローン関係の類似部分コードを削除し、生成された共通コードと検出された各共通コード粒度コードクローン類似部分コード間の差分をそれぞれ挿入出来るようにしてコードクローン埋め込み済みソースコードを生成することができる。また、設定された共通コード粒度のもとで、ソースコードの同一部分コードまたは/および類似部分コードを共通化処理することができるからソースコードの規模を効果的に削減することができる。
In addition, source code created with a reduced scale can be provided.
And according to the present embodiment, between the common code granularity code clone-related partial code detected under the common code granularity set as described above, the similar partial code of the code clone relation and the generated common code Since the common code information consisting of the difference is acquired, for each source code, the similar partial code of the acquired code clone relation is deleted from the source code, and the generated common code and each detected common code granularity Code clone-embedded source code can be generated so that differences between code clone-like partial codes can be inserted. Further, since the same partial code or / and similar partial code of the source code can be shared under the set common code granularity, the scale of the source code can be effectively reduced.

1…コードクローン検出手段、2…コードクローン情報取得手段、3…コードクローン情報取得調整手段、4…コードクローン情報取得手段、6…部分コーン間差分情報生成手段、7…共通コード生成手段、8…埋め込みコード情報取得手段、9…調整ソースコード生成手段,10…データベース、100…ソースコード生成装置、101…処理装置、102…ソースコード、103…埋込済ソースコード、104…保守用情報、105…保守用情報生成手段、110…ソースコード提供装置。   DESCRIPTION OF SYMBOLS 1 ... Code clone detection means, 2 ... Code clone information acquisition means, 3 ... Code clone information acquisition adjustment means, 4 ... Code clone information acquisition means, 6 ... Partial cone difference information generation means, 7 ... Common code generation means, 8 ... embedded code information acquisition means, 9 ... adjusted source code generating means, 10 ... database, 100 ... source code generating apparatus, 101 ... processing apparatus, 102 ... source code, 103 ... embedded source code, 104 ... maintenance information, 105... Maintenance information generating means, 110... Source code providing apparatus.

Claims (8)

ソースコードを解析して、ソースコードに含まれる互いに類似する部分コードを検出し、そのソースコード上の位置情報を取得する類似コード検出手段と、
前記検出した互いに類似する複数の部分コードに基づいて、共通コードを生成するとともに、当該共通コードと前記類似するそれぞれの各部分コードとの差分情報を生成する共通コード生成手段と、
前記ソースコード内の前記類似する各部分コードを、その前記位置情報に基づいて、前記共通コードおよび前記部分コードの差分情報を挿入する挿入コードに差し替える部分コード差替手段と、
を備えることを特徴とするソースコード生成装置。
Analyzing the source code, detecting similar partial codes included in the source code, and acquiring similar code detecting means for acquiring position information on the source code;
A common code generating means for generating a common code based on the detected plurality of similar partial codes and for generating difference information between the common code and each of the similar partial codes;
Partial code replacement means for replacing each similar partial code in the source code with an insertion code for inserting difference information between the common code and the partial code based on the position information;
A source code generation device comprising:
請求項1に記載されたソースコード生成装置において、
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報であること
を特徴とするソースコード生成装置。
In the source code generation device according to claim 1,
The similar partial code is a code clone which is a code considered to be equivalent in a program grammar,
The source information generating apparatus according to claim 1, wherein the difference information is information for replacing the description in the partial code with another description.
請求項2に記載されたソースコード生成装置において、
前記類似コード検出手段は、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成装置。
In the source code generation device according to claim 2,
The similar code detecting means extracts a partial code similar as the code clone based on a program grammar, and compares a plurality of extracted partial codes or a part as a replacement target of the partial code by comparison with a reference. A source code generation device that performs granularity adjustment by exclusion or division.
請求項1乃至3のいずれかに記載されたソースコード生成装置において、
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含む保守用情報を生成する保守用情報生成手段を備えたこと
を特徴とするソースコード生成装置。
In the source code generation device according to any one of claims 1 to 3,
A source code generation device comprising maintenance information generation means for generating maintenance information including the replaced similar partial code, the position information thereof, the common code, and the difference information .
類似コード検出手段が、ソースコードを解析して、ソースコードに含まれる互いに類似する部分コードを検出し、そのソースコードの位置情報を取得する類似コード検出ステップと、
共通コード生成手段が、前記検出した互いに類似する複数の部分コードに基づいて、共通コードを生成するとともに、当該共通コードと前記類似するそれぞれの各部分コードとの差分情報を生成する共通コード生成ステップと、
部分コード差替手段が、前記ソースコード内の前記類似する各部分コードを、その前記位置情報に基づいて、前記共通コードおよび前記部分コードの差分情報を挿入する挿入コードに差し替える部分コード差替ステップと、
を含むことを特徴とするソースコード生成方法。
A similar code detecting means analyzes the source code, detects similar partial codes included in the source code, and acquires position information on the source code ; and
A common code generation unit generates a common code based on the detected plurality of similar partial codes, and generates difference information between the common code and each of the similar partial codes. When,
A partial code replacement step in which the partial code replacement means replaces each similar partial code in the source code with an insertion code for inserting the common code and the partial code difference information based on the position information. When,
A source code generation method comprising:
請求項5に記載されたソースコード生成方法において、
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報である
ことを特徴とするソースコード生成方法。
In the source code generation method according to claim 5,
The similar partial code is a code clone which is a code considered to be equivalent in a program grammar,
The source information generation method, wherein the difference information is information for replacing the description in the partial code with another description.
請求項6に記載されたソースコード生成方法において、
前記類似コード検出ステップでは、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成方法。
The source code generation method according to claim 6,
In the similar code detection step, a partial code similar to the code clone is extracted based on the program grammar, and a part of the partial code to be replaced is compared by comparing the extracted partial codes or comparing with a reference. A source code generation method characterized by performing granularity adjustment by exclusion or division.
請求項5乃至7のいずれかに記載されたソースコード生成方法において生成されたソースコードに加えて、
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含んで生成された保守用情報を提供する保守用情報提供ステップを、
含むことを特徴とするソースコード提供方法。
In addition to the source code generated in the source code generation method according to claim 5,
A maintenance information providing step of providing maintenance information generated including the replaced similar partial code, the position information, the common code, and the difference information,
A source code providing method comprising:
JP2014058028A 2014-03-20 2014-03-20 Source code generation and provision apparatus, and source code generation and provision method Active JP6235945B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014058028A JP6235945B2 (en) 2014-03-20 2014-03-20 Source code generation and provision apparatus, and source code generation and provision method
PCT/JP2015/058050 WO2015141723A1 (en) 2014-03-20 2015-03-18 Source code generation and provision device, and source code generation and provision method
CN201580014888.7A CN106068496B (en) 2014-03-20 2015-03-18 Source code forms and provide device and source code is formed and providing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014058028A JP6235945B2 (en) 2014-03-20 2014-03-20 Source code generation and provision apparatus, and source code generation and provision method

Publications (2)

Publication Number Publication Date
JP2015184735A JP2015184735A (en) 2015-10-22
JP6235945B2 true JP6235945B2 (en) 2017-11-22

Family

ID=54144687

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014058028A Active JP6235945B2 (en) 2014-03-20 2014-03-20 Source code generation and provision apparatus, and source code generation and provision method

Country Status (3)

Country Link
JP (1) JP6235945B2 (en)
CN (1) CN106068496B (en)
WO (1) WO2015141723A1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6341582B1 (en) * 2017-04-05 2018-06-13 石田 伸一 Source code conversion apparatus, source code conversion program, and source code conversion method
CN108491209B (en) * 2018-02-23 2021-07-16 厦门集微科技有限公司 Method and device for extracting public codes in html page
CN113238796B (en) * 2021-05-17 2024-09-20 北京京东振世信息技术有限公司 Code reconstruction method, device, equipment and storage medium

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08263299A (en) * 1995-03-27 1996-10-11 Sanyo Electric Co Ltd Method for converting program
JP2007304998A (en) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd Source code generation method, device, and program
JP2009176064A (en) * 2008-01-24 2009-08-06 Fuji Electric Holdings Co Ltd Software refactoring support device and method
CN104407901B (en) * 2014-12-08 2018-04-06 北京国双科技有限公司 The adding method and device of code

Also Published As

Publication number Publication date
WO2015141723A1 (en) 2015-09-24
CN106068496B (en) 2019-09-27
CN106068496A (en) 2016-11-02
JP2015184735A (en) 2015-10-22

Similar Documents

Publication Publication Date Title
CN106843840B (en) Source code version evolution annotation multiplexing method based on similarity analysis
US12106095B2 (en) Deep learning-based java program internal annotation generation method and system
CN109376196B (en) Method and device for batch synchronization of redo logs
CN105824756B (en) A kind of out-of-date demand automatic testing method and system based on code dependence
US9811449B2 (en) Test scenario generation support device and test scenario generation support method
US9152415B2 (en) Abstracting benefit rules from computer code
JP6235945B2 (en) Source code generation and provision apparatus, and source code generation and provision method
TW201730786A (en) Analysis system and analysis method for executing analysis process with at least portions of time series data and analysis data as input data
US12118383B2 (en) System migration support apparatus, system migration support method and program to enhance reproducibility of migration destination system
CN106919403B (en) multi-granularity code clone detection method based on Java byte codes in cloud environment
JP2009223851A (en) Method for migrating database system
CN110554860B (en) Construction method and code generation method of software project natural language programming interface (NLI)
JP2011096082A (en) Program analyzing method, program analyzing program and program analyzer
CN114879974B (en) Implicit dependency pattern analysis method based on CPG+ graph
TWI497240B (en) Program editing device, program editing method and editing program of the program products
CN113001538B (en) Command analysis method and system
JP6281239B2 (en) Program development support apparatus and method
JP2013105286A (en) Automatic program generation device and automatic program generation method
KR101904643B1 (en) Article generation method using the decision tree
JP5578625B2 (en) Program analysis apparatus, program analysis method, and program
EP3739409A1 (en) Operation flow generation device, system, program, and operation flow generation method
JP2016051367A (en) Data analysis device, data analysis method, and program
JP2007047971A (en) Individual program generation device and method
CN110990281B (en) Automatic static analysis method
CN108334316B (en) Application development implementation method and device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170925

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170925

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171027

R150 Certificate of patent or registration of utility model

Ref document number: 6235945

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250