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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 34
- 238000012423 maintenance Methods 0.000 claims description 42
- 238000003780 insertion Methods 0.000 claims description 22
- 230000037431 insertion Effects 0.000 claims description 22
- 238000001514 detection method Methods 0.000 claims description 14
- 230000007717 exclusion Effects 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 235000019580 granularity Nutrition 0.000 description 37
- 238000012545 processing Methods 0.000 description 26
- 238000000605 extraction Methods 0.000 description 11
- 239000000463 material Substances 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 102220517353 Poly(A)-specific ribonuclease PARN_I34A_mutation Human genes 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation 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には、スクリプトによるソースコード自動生成の方法が提案され、生成結果としての同じコードが存在する場合に、重複部分を共通化することが記載されている。
特許文献2には、重複コードの検出方法として既存のコードクローン検出ツールを利用し、ソースファイルからコードクローンを検出し重複部分の共通化することが記載されている。
手作業による重複コードの共通化を図る方法にあっては、品質が低く作業コストが高くなるという問題があった。加えて、手作業では、変数名が異なるなど完全一致でない、類似のソースコードを検出する事が難しく、重複コードの共通化が効果的に行うことができないという問題があった。 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
また、特許文献2の技術では、変数のスコープが局所化できる構造化言語に対して有効な技術であり、COBOL85のような変数が大域変数(変数の影響範囲が常に変数宣言を行ったプログラム全体に及ぶ)となる、初期の構造化プログラム言語の場合、重複コードに含まれる変数を関数のパラメタとして生成することはソースコードが冗長となり、ソースコードの可読性が低下してしまうといった問題があった。加えて、特許文献2の技術では、変数宣言からなるデータ構造の定義はリファクタリング(コード共通化)の対象でない。
The technology of
また、コードの共通化後にソースコードを修正あるいは保守する場合は、コード共通化によるソースコードの変更を考慮する必要があるため、コード共通化後の保守性が向上しにくいという問題があった。 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.
以下、本発明の形態を、図面を用いて説明する。 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
図1において、ソースコード生成装置100は、処理装置101が持つソースコード102を参照する。このソースコード102は、変数が大域変数である初期の構造化プログラム言語で記述されているものとする。
In FIG. 1, the source
ソースコード生成装置100は、コードクローン検出手段1、コードクローン情報取得手段2、共通化単位設定およびコードクローン情報調整手段3、コードクローン情報取得手段4、部分コード間差分情報生成手段6、共通化コード生成手段7、埋め込みコード情報取得手段8、調整ソースコード生成手段9、およびデータベース10から構成される。これらの手段は、通信回線11で互いに接続され、情報の授受がなされ得る。ソースコード提供装置110は、ソースコード生成装置100と保守用情報生成手段105とから構成される。保守用情報生成手段105はソースコード生成装置100と通信回線13で互いに接続され、情報の授受がなされ得る。外部の処理装置101とソースコード提供装置110とは通常の通信回路12を介して接続される。他の手段によって接続されるようにしてもよい。通信回路12によって生成された情報の相互授受がなされる。
The source
コードクローンについて使用する場合、類似部分コードをコードクローンに含まれる下位概念とされる場合があるが、ここではコードクローン(あるいはクローン)を二つの部分コードが類似した類似部分コードの関係にある場合を指して使用する。部分コードが同一の場合には、同一部分コードとして示す。 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
コードクローン情報調整手段3は、共通化単位設定を設定し、コードクローン情報取得手段2で取得された部分コードの位置情報を読み込み、任意の粒度(構造的なまとまり)を持つ部分コードを抽出する。粒度は、コードの共通化を行う単位として設定する。粒度は演算処理記述やデータ構造記述など、複数の粒度を設定してよい。粒度は、ソースコード生成装置100が生成するソースコードの理解容易性や保守性から定めればよい。
The code clone
コードクローン情報取得手段4は、コードクローン情報調整手段3で、共通化単位が設定され、抽出された部分コードのソースコード上の位置情報を取得する。コードクローン情報取得手段2で取得した部分コードの位置情報は破棄する。
The code clone
部分コード間差分情報生成手段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
調整ソースコード生成手段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
ソースコード提供装置110は、スリム化ソースコード103、および生成されたソースコード保守用情報生成手段105で生成された保守用情報104を処理装置101に提供する。これらに二つの提供によって顧客は、ソースコードが使い易いものとなる。
The source
図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
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
図3において、類似部分コードの抽出で、ソースコード31(図1でソースコード102)が用意され、準備されたソースコード31が参照されて、静的解析32(静的解析は、従来から知られている)がなされ、類似部分コードを含んだコードクローンの検出がなされる。このように切り出され、検出された類似部分コードを含んだコードクローン情報33が取得される。コードクローン情報33が参照され、コードクローンについての調整、例えば粒度調整34がなされる。リファクタリング粒度情報39が参照され、コードクローン粒度調整34がなされたコードクローンについてコードクローン情報35が取得される。
In FIG. 3, source code 31 (
コードクローンは、リファクタリング調整基準に従ってリファクタリング候補となり、ファイル化される。 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
2.共通コードの生成に移行する。 2. Move on to common code generation.
このステップで、リファクタリング対象コードクローン間差分の検出40がなされる。検出された差分から差分情報が生成される。差分情報が参照されて差分情報付きコードクローン情報41が取得される。差分情報付きコードクローン情報41が参照されて共通コード生成42がなされる。生成された共通コードおよび差分情報から共通コード43および共通化処理のための共通コード情報44が取得される。
3.共通コード埋込命令への差し替えに移行する。
In this step, the
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
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
コードの類似性を判定する方法は、各種知られており、公知の手法によるコード類似判定方法が採用可能である。 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
次のステップで、リファクタリング粒度情報39が参照され、類似部分コードを共通化する共通コードの単位に調整するコードクローン粒度調整34がなされる。共通コードの単位をコード共通化実行単位に調整したコードクローン情報35を取得する。コードクローンを共通コードの粒度に調整する。すなわち、リファクタリングスル粒度に調整する。
In the next step, the
調整とは、類似部分コードの一部のコードの一部を削ったり、類似部分コードを分割してコード共通化実行単位、例えば実行粒度を合わせることをいう。共通コード以下の粒度の場合は共通化不要とし、共通化処理の対象から外される。この調整によってコード共通化後のソースコードファイルの保守性が、調整を行わない場合よりも向上する。 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
リファクタリング判断37を行うリファクタリング部は、与えられた判断情報(リファクタリング対象とするソースコードの構成など)や、算出された保守容易性の傾向(既存の尺度、例えば削減されるソースコードの規模や保守容易性指数など)をもとに、対象のコードクローン情報ファイルの中からリファクタリングを行うリファクタリング候補コードが設定された。
The refactoring unit that performs the
判断は、リファクタリング対象の「データ構造の記述」と「演算に記述」ごとに実施する。そして、次に示すように選択したコードクローン間の差分情報を、調整単位、例えばプログラム言語のトークンレベルの粒度で収集し、その結果を先に選択したコードクローンに紐付け、リファクタリング対象コードクローンを取得し、リファクタリングコードクローン情報ファイルに格納する。 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
類似となるコードクローンには、共通部分が双方に共通し、一方のみに差分となるコードが存在する場合、共通部分が双方に共通し、互いに差異となるコードが存在する場合がある。共通コード生成は、これらの差異が場合に、差異が存在しない場合に生成され、差異がある場合に、差分が共通コードに加えられて生成される。 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
コードクローン情報41から、共通コード43を生成し、共通コードについて共通コードファイルを格納する。このようにして共通コードファイルに生成された共通コードを格納しておく。
A
共通コード生成42において、各コードクローンから、共通部分を抜き出して共通コードファイルを生成する。
In the
ソースコード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
図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
図6において、ソースコードから調整コードクローンに相当する部分コードをその部分の位置情報から削除46Aするとともに、生成された各共通コードの共通コード挿入指示命令46Bを挿入する。共通コード挿入指示命令埋込46を実行する。なお、共通コード挿入指示命令には、挿入する共通コードに共通コードとの差分情報が付加される。
In FIG. 6, the partial code corresponding to the adjusted code clone is deleted from the
埋込済ソースコード46は、同一部分コードおよび類似部分コードの共通化処理の結果、生成されたソースコードになる。同一部分コードについては、上述したステップにより処理が可能である。
4.保守用資料の生成がなされ、5、生成情報が提供される。
The embedded
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
図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
図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
図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
ソースコードの構造上の形態を実質的に変えることなく埋め込み済みソースコードを生成させる命令によって実行されている。 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
図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
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
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
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:
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報であること
を特徴とするソースコード生成装置。 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.
前記類似コード検出手段は、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成装置。 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.
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含む保守用情報を生成する保守用情報生成手段を備えたこと
を特徴とするソースコード生成装置。 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:
前記類似する部分コードは、プログラム文法上同等とみなされるコードであるコードクローンであり、
前記差分情報は、前記部分コード内の記述を他の記述に置き換えるための情報である
ことを特徴とするソースコード生成方法。 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.
前記類似コード検出ステップでは、プログラム文法に基づいて、前記コードクローンとして類似する部分コードを抽出し、抽出した複数の部分コードの比較または基準との比較により、その部分コードの差し替え対象としての一部除外または分割による粒度調整を行うこと
を特徴とするソースコード生成方法。 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.
前記差し替えられた類似する部分コードと、その前記位置情報と、前記共通コードと、前記差分情報とを含んで生成された保守用情報を提供する保守用情報提供ステップを、
含むことを特徴とするソースコード提供方法。 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:
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)
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)
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 |
-
2014
- 2014-03-20 JP JP2014058028A patent/JP6235945B2/en active Active
-
2015
- 2015-03-18 WO PCT/JP2015/058050 patent/WO2015141723A1/en active Application Filing
- 2015-03-18 CN CN201580014888.7A patent/CN106068496B/en active Active
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 |