JP6971835B2 - Element similarity determination device, element similarity determination method and element similarity determination program - Google Patents
Element similarity determination device, element similarity determination method and element similarity determination program Download PDFInfo
- Publication number
- JP6971835B2 JP6971835B2 JP2017248674A JP2017248674A JP6971835B2 JP 6971835 B2 JP6971835 B2 JP 6971835B2 JP 2017248674 A JP2017248674 A JP 2017248674A JP 2017248674 A JP2017248674 A JP 2017248674A JP 6971835 B2 JP6971835 B2 JP 6971835B2
- Authority
- JP
- Japan
- Prior art keywords
- evaluation value
- function
- name
- target
- word
- 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
Images
Landscapes
- Stored Programmes (AREA)
Description
この発明は、ソースコードに存在する複数の要素間の類似性を評価する技術に関する。 The present invention relates to a technique for evaluating similarity between a plurality of elements existing in source code.
ソフトウェア開発においてソースコードを作成していく際、ソースコード修正工数及びメモリ使用量を削減するために、ソースコードの分量は可能な限り削減されることが望ましい。そのために、ソースコードの複数箇所における同じような記述、すなわちコードクローンが検出され、冗長性のある複数の処理を共通の処理に置き換えるといった処置が施される。 When creating source code in software development, it is desirable to reduce the amount of source code as much as possible in order to reduce the man-hours for modifying the source code and the amount of memory used. Therefore, a similar description in a plurality of places of the source code, that is, a code clone is detected, and a measure is taken such that a plurality of redundant processes are replaced with a common process.
ソースコードの分量が膨大になると、コードクローンを目視で発見することが困難になる。そのため、コードクローンは自動的に検出されることが望まれる。このとき、複数の比較対象の記述内容が文字列として厳密に一致していない場合であっても、構造的に共通化されるべき類似性がある場合、コードクローンとして検出されることが望ましい。
特許文献1には、関数の記述文字列と、関数内に存在する要素の名称と、関数の構文と、関数メトリクスといった情報を比較して、類似性がある関数をコードクローンとして検出することが記載されている。
When the amount of source code becomes huge, it becomes difficult to visually find the code clone. Therefore, it is desirable that the code clone be detected automatically. At this time, even if the description contents of a plurality of comparison targets do not exactly match as character strings, it is desirable that they be detected as code clones if there are similarities that should be structurally shared.
In
特許文献1に記載された技術では、類似する関数を特定することはできる。しかし、ソースコードにおいて冗長性につながる類似性を持つものは関数だけではなく、構造体と構造体のメンバといった要素も考えられる。
この発明は、ソースコードにおける要素の類似性を適切に評価可能にすることを目的とする。
In the technique described in
It is an object of the present invention to make it possible to appropriately evaluate the similarity of elements in source code.
この発明に係る要素類似判定装置は、
ソースコードに含まれる各関数で、対象とする複数の要素それぞれが使用されるか否かに応じて、前記各関数について要素毎の要素評価値を計算する要素評価値計算部と、
前記各関数で、対象とする複数の要素それぞれの名称の一部を含む名称の要素が使用されるか否かに応じて、前記各関数について要素毎の名称評価値を計算する名称評価値計算部と、
前記要素評価値計算部によって計算された前記要素評価値と、前記名称評価値計算部によって計算された前記名称評価値とに基づき、前記複数の要素間の類似度を計算する結果統合部と
を備える。
The element similarity determination device according to the present invention is
An element evaluation value calculation unit that calculates an element evaluation value for each element for each function according to whether or not each of a plurality of target elements is used in each function included in the source code.
Name evaluation value calculation that calculates the name evaluation value for each element for each function depending on whether or not an element with a name that includes a part of the name of each of the plurality of target elements is used in each of the functions. Department and
The result integration unit that calculates the similarity between the plurality of elements based on the element evaluation value calculated by the element evaluation value calculation unit and the name evaluation value calculated by the name evaluation value calculation unit. Be prepared.
この発明では、ソースコードに含まれる各関数における要素の使用と、各関数における要素の名称の使用とに基づき、要素間の類似度を計算する。これにより、ソースコードにおける要素の類似性を適切に評価することが可能である。 In the present invention, the similarity between elements is calculated based on the use of elements in each function included in the source code and the use of element names in each function. This makes it possible to appropriately evaluate the similarity of elements in the source code.
実施の形態1.
***構成の説明***
図1を参照して、実施の形態1に係る要素類似判定装置10の構成を説明する。
要素類似判定装置10は、コンピュータである。
要素類似判定装置10は、プロセッサ11と、メモリ12と、ストレージ13と、通信インタフェース14とのハードウェアを備える。プロセッサ11は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
*** Explanation of configuration ***
The configuration of the element
The element
The element
プロセッサ11は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ11は、具体例としては、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)である。
The
メモリ12は、データを一時的に記憶する記憶装置である。メモリ12は、具体例としては、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)である。
The
ストレージ13は、データを保管する記憶装置である。ストレージ13は、具体例としては、HDD(Hard Disk Drive)である。また、ストレージ13は、SD(登録商標,Secure Digital)メモリカード、CF(CompactFlash,登録商標)、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVD(Digital Versatile Disk)といった可搬記録媒体であってもよい。
The
通信インタフェース14は、外部の装置と通信するためのインタフェースである。通信インタフェース14は、具体例としては、Ethernet(登録商標)、USB(Universal Serial Bus)、HDMI(登録商標,High−Definition Multimedia Interface)のポートである。
The
要素類似判定装置10は、機能構成要素として、要素評価値計算部21と、名称評価値計算部22と、結果統合部23とを備える。要素類似判定装置10の各機能構成要素の機能はソフトウェアにより実現される。
ストレージ13には、要素類似判定装置10の各機能構成要素の機能を実現するプログラムが格納されている。このプログラムは、プロセッサ11によりメモリ12に読み込まれ、プロセッサ11によって実行される。これにより、要素類似判定装置10の各機能構成要素の機能が実現される。
The element
The
図1では、プロセッサ11は、1つだけ示されていた。しかし、プロセッサ11は、複数であってもよく、複数のプロセッサ11が、各機能を実現するプログラムを連携して実行してもよい。
In FIG. 1, only one
図1及び図2を参照して、実施の形態1に係る要素評価値計算部21の構成を説明する。
要素評価値計算部21は、ソースコード構造分析情報31と、評価対象要素群32とを入力として、要素関連度一覧表33を生成する。
要素評価値計算部21は、機能構成要素として、直接/間接カウント計算部211と、要素カウント計算部212と、要素統合評価計算部213とを備える。
The configuration of the element evaluation
The element evaluation
The element evaluation
図1及び図3を参照して、実施の形態1に係る名称評価値計算部22の構成を説明する。
名称評価値計算部22は、ソースコード構造分析情報31と、評価対象要素群32とを入力として、名称関連度一覧表34を生成する。
名称評価値計算部22は、機能構成要素として、ワード群抽出部221と、単独ワード群抽出部222と、ワード重み群抽出部223と、ワードカウント計算部224と、関数内ワード群抽出部225と、ワード重み計算部226と、名称統合評価値計算部227とを備える。
The configuration of the name evaluation
The name evaluation
The name evaluation
図1及び図4を参照して、実施の形態1に係る結果統合部23の構成を説明する。
結果統合部23は、要素関連度一覧表33と、名称関連度一覧表34とを入力として、評価一覧表35を生成する。
結果統合部23は、要素関連性評価値群計算部231と、関連性評価値計算部232と、ベクトル類似度計算部233とを備える。
The configuration of the
The
The
図5を参照して、実施の形態1に係るソースコード構造分析情報31を説明する。
ソースコード構造分析情報31は、ソースコードの解析ツール等により取得される情報である。ソースコード構造分析情報31は、ソースコードに含まれる各要素311と各関数314とについての情報である。
各要素311は、構造名称312と、名称313とを含む。構造名称312は、要素311を一意に特定する文字列であり、要素311を持つオブジェクト等の名称である。名称313は、要素311そのものを表す文字列であり、異なる要素311又は関数314が同一の名称を持つことがありえる。
各関数314は、構造名称315と、名称316と、使用要素317と、呼出し関数318とを含む。構造名称315は、関数314を一意に特定する文字列であり、関数314を持つオブジェクト等の名称である。名称316は、関数314そのものを表す文字列であり、異なる関数314又は要素311が同一の名称を持つことがありえる。使用要素317は、関数314で使用される要素311の情報を0個以上並べたものである。使用要素317において、同一の要素311の重複はありえるものとする。つまり、1つの関数314において同一の要素311を複数回使用している場合、使用要素317においても同一の要素311が複数個存在する。呼出し関数318は、関数314で呼び出される他の関数314の情報を0個以上並べたものである。使用要素317において、同一の要素311の重複がありえることと同様に、呼出し関数318において、同一の関数314の重複はありえるものとする。
The source code
The source code
Each
Each
図6を参照して、実施の形態1に係る評価対象要素群32を説明する。
評価対象要素群32は、複数の評価対象要素を含む。評価対象要素は、類似性を評価する対象の要素である。評価対象要素群32は、各評価対象要素について、構造名称312を含む。
The evaluation
The evaluation
図7を参照して、実施の形態1に係る要素関連度一覧表33を説明する。
要素関連度一覧表33は、評価対象要素群32が示す各評価対象要素を対象の要素として、対象の要素について関数毎に、直接使用カウントと、間接使用カウントと、要素評価値とを含む。
直接使用カウントは、対象の関数で対象の要素が直接使用される回数である。間接使用カウントは、対象の関数から呼び出された他の関数で対象の要素が間接的に使用される回数である。要素評価値は、直接使用カウントと間接使用カウントとに基づき計算された評価値である。
The
The
The direct use count is the number of times the element of interest is used directly in the function of interest. The indirect usage count is the number of times the target element is indirectly used by another function called from the target function. The element evaluation value is an evaluation value calculated based on the direct use count and the indirect use count.
図8を参照して、実施の形態1に係る名称関連度一覧表34を説明する。
名称関連度一覧表34は、評価対象要素群32が示す各評価対象要素を対象の要素として、対象の要素の名称を分解したワードについて、関数毎に、ワード使用カウントと、名称評価値とを含む。
ワード使用カウントは、対象の関数で対象のワードが使用される回数である。名称評価値は、対象の要素の名称が分解されたワードについてのワード使用カウントに基づき計算された評価値である。
The
In the
The word usage count is the number of times the target word is used in the target function. The name evaluation value is an evaluation value calculated based on the word usage count for the word in which the name of the target element is decomposed.
図9を参照して、実施の形態1に係る評価一覧表35を説明する。
評価対象要素群32が示す各評価対象要素間の類似度を示す。各評価対象要素間の類似度は、要素関連度一覧表33が示す要素評価値と、名称関連度一覧表34が示す名称評価値とから計算される。
The
The degree of similarity between the evaluation target elements shown by the evaluation
***動作の説明***
図10から図33を参照して、実施の形態1に係る要素類似判定装置10の動作を説明する。
実施の形態1に係る要素類似判定装置10の動作は、実施の形態1に係る要素類似判定方法に相当する。また、実施の形態1に係る要素類似判定装置10の動作は、実施の形態1に係る要素類似判定プログラムの処理に相当する。
*** Explanation of operation ***
The operation of the element
The operation of the element
以下の説明において、変数i,j,kは、各機能構成要素の処理の内部変数とする。つまり、ある機能構成要素の処理で他の機能構成要素が呼び出された場合には、呼出し元の機能構成要素の処理で使用された変数i,j,kの値は、呼出し先の機能構成要素には引き継がれない。 In the following description, the variables i, j, and k are internal variables for the processing of each functional component. That is, when another functional component is called in the processing of a certain functional component, the values of the variables i, j, and k used in the processing of the calling functional component are the functional components of the callee. Will not be taken over by.
図10を参照して、実施の形態1に係る要素評価値計算部21の処理を説明する。
図10に示す処理を実行することにより、要素評価値計算部21は、ソースコードに含まれる各関数で、対象とする複数の要素それぞれが使用されるか否かに応じて、各関数について要素毎の要素評価値を計算する。具体的には、要素評価値計算部21は、評価対象要素群32が示す各評価対象要素を対象の要素として、各関数で対象の要素が使用される要素使用回数に応じて、各関数についての対象の要素の要素評価値を計算する。
With reference to FIG. 10, the processing of the element evaluation
By executing the process shown in FIG. 10, the element evaluation
変数i,jには初期値として1が設定される。 1 is set as an initial value for the variables i and j.
(ステップS11:要素使用カウント処理)
要素評価値計算部21は、ソースコード構造分析情報31におけるj番目の関数を対象の関数とし、評価対象要素群32におけるi番目の要素を対象の要素として、直接/間接カウント計算部211を呼び出し、直接使用カウント(xi,j,0)と、間接使用カウント(xi,j,1)とを特定する。
(Step S11: Element usage count processing)
The element evaluation
(ステップS12:要素統合処理)
要素評価値計算部21は、要素カウント計算部212を呼び出し、ステップS11で特定された直接使用カウント(xi,j,0)及び間接使用カウント(xi,j,1)から、要素評価値(yi,j)を計算する。
ここでは、要素評価値計算部21は、要素統合評価計算部213により、数11に示すように、要素評価値(yi,j)を計算する。
The element evaluation
Here, the element evaluation
(ステップS13:関数終了判定処理)
要素評価値計算部21は、全ての関数についてステップS11及びステップS12の処理が実行されたか否かを判定する。関数とは、ソースコード構造分析情報31が示す関数314のことである。
要素評価値計算部21は、全ての関数について処理が実行された場合には、処理をステップS14に進める。一方、要素評価値計算部21は、処理が実行されていない関数が残っている場合には、変数jに1を加算した上で、処理をステップS11に戻す。
(Step S13: Function end determination process)
The element evaluation
When the processing is executed for all the functions, the element evaluation
(ステップS14:要素終了判定処理)
要素評価値計算部21は、全ての対象の要素についてステップS11及びステップS12の処理が実行されたか否かを判定する。対象の要素とは、評価対象要素群32が示す評価対象要素である。
要素評価値計算部21は、全ての対象の要素について処理が実行された場合には、処理をステップS15に進める。一方、要素評価値計算部21は、処理が実行されていない対象の要素が残っている場合には、変数iに1を加算し、変数jに1を設定した上で、処理をステップS11に戻す。
(Step S14: Element end determination process)
The element evaluation
When the processing is executed for all the target elements, the element evaluation
(ステップS15:結果記憶処理)
要素評価値計算部21は、各関数及び対象の各要素について、ステップS11で特定された直接使用カウント及び間接使用カウントと、ステップS12で計算された要素評価値とを要素関連度一覧表33としてメモリ12又はストレージ13に書き込む。
(Step S15: Result storage process)
The element evaluation
図11を参照して、実施の形態1に係る直接/間接カウント計算部211の処理を説明する。
直接/間接カウント計算部211は、図10のステップS11で呼び出される。
The processing of the direct / indirect
The direct / indirect
(ステップS21:直接使用カウント処理)
直接/間接カウント計算部211は、要素カウント計算部212を呼び出し、対象の関数及び対象の要素について、要素使用カウントを特定する。直接/間接カウント計算部211は、特定された要素使用カウントを、対象の関数及び対象の要素についての直接使用カウントとしてメモリ12に書き込む。対象の関数及び対象の要素とは、図10のステップS11で指定されている変数jが示す関数及び変数iが示す要素である。
(Step S21: Direct use count processing)
The direct / indirect
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS22:間接使用カウント処理)
直接/間接カウント計算部211は、要素カウント計算部212を呼び出し、対象の関数においてi番目に呼び出される関数と、対象の要素とについて、要素使用カウントを特定する。
(Step S22: Indirect use count processing)
The direct / indirect
(ステップS23:カウント加算処理)
直接/間接カウント計算部211は、ステップS22で特定された要素使用カウントを、対象の関数及び対象の要素についての間接使用カウントに加算する。なお、図11に示す処理における間接使用カウントは、初期値として0が設定されメモリ12に記憶されている。
(Step S23: Count addition process)
The direct / indirect
(ステップS24:呼出し関数終了判定処理)
直接/間接カウント計算部211は、対象の関数において呼び出される全ての呼出し関数についてステップS22及びステップS23の処理が実行されたか否かを判定する。
直接/間接カウント計算部211は、全ての呼出し関数について処理が実行された場合には、処理を終了する。一方、直接/間接カウント計算部211は、処理が実行されていない呼出し関数が残っている場合には、変数iに1を加算した上で、処理をステップS22に戻す。
(Step S24: Call function end determination process)
The direct / indirect
The direct / indirect
図12を参照して、実施の形態1に係る要素カウント計算部212の処理を説明する。
要素カウント計算部212は、図11のステップS21及びステップS22で呼び出される。
With reference to FIG. 12, the processing of the element
The element
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS31:要素一致判定処理)
要素カウント計算部212は、対象の関数におけるi番目の要素が、対象の要素と一致するか否かを判定する。対象の関数及び対象の要素は、要素カウント計算部212の呼出し元である図11のステップS21で直接使用カウントの特定対象となっている関数及び要素、又は、ステップS22で間接使用カウントの特定対象となっている関数及び要素である。
要素カウント計算部212は、一致する場合には、処理をステップS32に進める。一方、要素カウント計算部212は、一致しない場合には、処理をステップS33に進める。
(Step S31: Element match determination process)
The element
If they match, the element
(ステップS32:カウント処理)
要素カウント計算部212は、要素使用カウントに1を加算する。なお、図12に示す処理における要素使用カウントは、初期値として0が設定されメモリ12に記憶されている。
(Step S32: Count processing)
The element
(ステップS33:要素終了判定処理)
要素カウント計算部212は、対象の関数で使用される全ての要素について、ステップS31で処理が実行されたか否かを判定する。
要素カウント計算部212は、全ての要素について処理が実行された場合には、処理を終了する。一方、要素カウント計算部212は、処理が実行されていない要素が残っている場合には、変数iに1を加算した上で、処理をステップS31に戻す。
(Step S33: Element end determination process)
The element
The element
図11から図17を参照して、要素評価値計算部21の処理の具体的な例を説明する。
図10のステップS11が対象の関数をRefreshProductとし、対象の要素をptrProduct−>ProductNameとして処理が実行されたとする。
すると、図13に示すように、図11のステップS21で実行される図12のステップ31からステップS33で、対象の関数をRefreshProductにおいて使用される各要素について順に、対象の要素であるptrProduct−>ProductNameと一致するか否かが判定される。図13では、対象の関数をRefreshProductにおいて1箇所でptrProduct−>ProductNameが使用されている。そのため、図14に示すように、対象の関数がRefreshProductであり、対象の要素がptrProduct−>ProductNameである場合の要素使用カウントは1になる。つまり、直接使用カウントは1になる。
また、図15に示すように、図11のステップS22からステップS24で、対象の関数をRefreshProductで呼び出される呼出し関数について順に要素使用カウントがカウントされる。すると、呼出し関数であるFindProductにおいて、ptrProduct−>ProductNameが1度使用されており、要素使用カウントは1になる。つまり間接使用カウントは1になる。
つまり、図16に示すように、対象の関数がRefreshProductであり、対象の要素がptrProduct−>ProductNameである場合には、直接使用カウントは1であり、間接使用カウントは1である。そして、図10のステップS12で直接使用カウント(xi,j,0)に1、間接使用カウント(xi,j,1)に1が代入されて、要素評価値が計算される。ここでは、要素評価値は1.155と計算されたとする。すると、図17に示すように、図10のステップS15で、要素関連度一覧表33における対象の関数がRefreshProductであり、対象の要素がptrProduct−>ProductNameである場合の欄に値が書き込まれる。
A specific example of the processing of the element evaluation
It is assumed that step S11 in FIG. 10 sets the target function as RefreshProduct and the target element as ptrProduct-> ProductName.
Then, as shown in FIG. 13, from
Further, as shown in FIG. 15, from step S22 to step S24 of FIG. 11, the element usage count is sequentially counted for the calling function in which the target function is called by RefreshProduct. Then, in FindProduct, which is a calling function, ptrProduct-> ProductName is used once, and the element usage count becomes 1. That is, the indirect use count becomes 1.
That is, as shown in FIG. 16, when the target function is RefreshProduct and the target element is ptrProduct-> ProductName, the direct use count is 1 and the indirect use count is 1. Then, in step S12 of FIG. 10 , 1 is assigned to the direct use count (x i, j, 0 ) and 1 is assigned to the indirect use count (x i, j, 1 ), and the element evaluation value is calculated. Here, it is assumed that the element evaluation value is calculated as 1.155. Then, as shown in FIG. 17, in step S15 of FIG. 10, a value is written in the column when the target function in the
図18を参照して、実施の形態1に係る名称評価値計算部22の処理を説明する。
名称評価値計算部22は、ソースコードに含まれる各関数で、対象とする複数の要素それぞれの名称の一部であるワードを含む名称の要素が使用されるか否かに応じて、各関数について要素毎の名称評価値を計算する。具体的には、名称評価値計算部22は、評価対象要素群32が示す各評価対象要素を対象として、各関数で前記対象の要素の名称の一部を含む名称の要素が使用される名称使用回数に応じて、各関数についての対象の要素の名称評価値を計算する。
With reference to FIG. 18, the processing of the name evaluation
The name evaluation
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS41:ワード群取得処理)
名称評価値計算部22は、評価対象要素群32におけるi番目の要素を対象の要素として、ワード群抽出部221を呼び出し、対象の要素の名称の一部を含むワード群を取得する。
(Step S41: Word group acquisition process)
The name evaluation
(ステップS42:ワード重み取得処理)
名称評価値計算部22は、ステップS41で取得されたワード群を入力として、ワード重み群抽出部223を呼び出し、ワード群に含まれる各ワードについての重みを示すワード重み群を取得する。
(Step S42: Word weight acquisition process)
The name evaluation
変数j,kには初期値として1が設定される。 1 is set as an initial value for the variables j and k.
(ステップS43:ワード使用カウント処理)
名称評価値計算部22は、ソースコード構造分析情報31におけるj番目の関数を対象の関数とし、ワード群におけるk番目のワードを対象のワードとして、ワードカウント計算部224を呼び出し、ワード使用カウント(xi,j,k)を特定する。
(Step S43: Word usage count processing)
The name evaluation
(ステップS44:ワード終了判定処理)
名称評価値計算部22は、ワード群に含まれる全てのワードについてステップS43の処理が実行されたか否かを判定する。
名称評価値計算部22は、全てのワードについて処理が実行された場合には、処理をステップS45に進める。一方、名称評価値計算部22は、処理が実行されていないワードが残っている場合には、変数kに1を加算した上で、処理をステップS43に戻す。
(Step S44: Word end determination process)
The name evaluation
When the processing is executed for all the words, the name evaluation
(ステップS45:名称統合処理)
名称評価値計算部22は、ステップS42で取得されたワード重み群と、ステップS43で特定されたワード使用カウント(xi,j,k)とから、ワード評価値(ci,j,k)と、名称評価値(ui,j)とを計算する。
ここでは、名称評価値計算部22は、名称統合評価値計算部227により、数12に示すように、ワード評価値(ci,j,k)と、名称評価値(ui,j)とを計算する。
The name evaluation
Here, the name evaluation
(ステップS46:関数終了判定処理)
名称評価値計算部22は、全ての関数についてステップS43からステップS45の処理が実行されたか否かを判定する。関数とは、ソースコード構造分析情報31が示す関数314のことである。
名称評価値計算部22は、全ての関数について処理が実行された場合には、処理をステップS47に進める。一方、名称評価値計算部22は、処理が実行されていない関数が残っている場合には、変数jに1を加算し、変数kに1を設定した上で、処理をステップS43に戻す。
(Step S46: Function end determination process)
The name evaluation
When the processing is executed for all the functions, the name evaluation
(ステップS47:要素終了判定処理)
名称評価値計算部22は、全ての対象の要素についてステップS43からステップS45の処理が実行されたか否かを判定する。対象の要素とは、評価対象要素群32が示す評価対象要素である。
名称評価値計算部22は、全ての対象の要素について処理が実行された場合には、処理をステップS48に進める。一方、名称評価値計算部22は、処理が実行されていない対象の要素が残っている場合には、変数iに1を加算した上で、処理をステップS41に戻す。
(Step S47: Element end determination process)
The name evaluation
When the processing is executed for all the target elements, the name evaluation
(ステップS48:結果記憶処理)
名称評価値計算部22は、各関数及び対象の各要素について、ステップS45で特定されたワード評価値及び名称評価値を要素関連度一覧表33としてメモリ12又はストレージ13に書き込む。
(Step S48: Result storage process)
The name evaluation
図19を参照して、実施の形態1に係るワード群抽出部221の処理を説明する。
ワード群抽出部221は、図18のステップS41で呼び出される。また、ワード群抽出部221は、後述する図23のステップS91で呼び出される。
With reference to FIG. 19, the processing of the word
The word
(ステップS51:単独ワード群取得処理)
ワード群抽出部221は、対象の要素の名称の文字列に対して、単独ワード群抽出部222を呼び出し、対象の要素の名称に含まれる文字列である単独ワード群を取得する。対象の要素とは、図18のステップS41又は図23のステップS91で指定されている変数iが示す要素である。
(Step S51: Single word group acquisition process)
The word
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
ワード群抽出部221は、ステップS51で取得された単独ワード群において、連続するi個の単独ワードの全ての組合せに対してステップS52の処理を実行する。
The word
(ステップS52:単独ワード群追加処理)
ワード群抽出部221は、選択されたi個の単独ワードの組合せを連結してワードを生成する。ワード群抽出部221は、生成したワードをメモリ12に記憶されたワード群に追加する。
(Step S52: Single word group addition process)
The word
(ステップS53:ワード終了判定処理)
ワード群抽出部221は、変数iがステップS51で取得された単独ワード群に含まれる単独ワードの数未満であるか否かを判定する。
ワード群抽出部221は、変数iが単独ワードの数未満である場合には、変数iに1を加算した上で、処理をステップS52に戻す。一方、ワード群抽出部221は、変数iが単独ワードの数以上である場合には、処理を終了する。
(Step S53: Word end determination process)
The word
When the variable i is less than the number of single words, the word
図20を参照して、実施の形態1に係る単独ワード群抽出部222の処理を説明する。
単独ワード群抽出部222は、図19のステップS51で呼び出される。
With reference to FIG. 20, the processing of the single word
The single word
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS61:第1文字判定処理)
単独ワード群抽出部222は、対象の文字列のi番目の文字が大文字か否かを判定する。対象の文字列とは、対象の要素の名称の文字列である。
単独ワード群抽出部222は、i番目の文字が大文字である場合には、処理をステップS62に進める。一方、単独ワード群抽出部222は、i番目の文字が大文字でない場合には、処理をステップS63に進める。
(Step S61: First character determination process)
The single word
If the i-th character is uppercase, the single word
(ステップS62:第2文字判定処理)
単独ワード群抽出部222は、対象の文字列のi+1番目の文字が大文字か、又は、存在しない否かを判定する。
単独ワード群抽出部222は、i+1番目の文字が大文字である場合には、処理をステップS64に進める。一方、単独ワード群抽出部222は、i+1番目の文字が大文字でない場合には、処理をステップS66に進める。
(Step S62: Second character determination process)
The single word
If the i + 1th character is uppercase, the single word
(ステップS63:第3文字判定処理)
単独ワード群抽出部222は、対象の文字列のi+1番目の文字が大文字か否かを判定する。
単独ワード群抽出部222は、i+1番目の文字が大文字である場合には、処理をステップS65に進める。一方、単独ワード群抽出部222は、i+1番目の文字が大文字でない場合には、処理をステップS66に進める。
(Step S63: Third character determination process)
The single word
If the i + 1th character is uppercase, the single word
(ステップS64:第4文字判定処理)
単独ワード群抽出部222は、対象の文字列のi+2番目の文字が大文字又は存在しないか否かを判定する。
単独ワード群抽出部222は、i+2番目の文字が大文字である又は存在しない場合には、処理をステップS66に進める。一方、単独ワード群抽出部222は、i+2番目の文字が大文字でなく、かつ、存在する場合には、処理をステップS65に進める。
(Step S64: Fourth character determination process)
The single word
If the i + second character is uppercase or does not exist, the single word
(ステップS65:文字列分割処理)
単独ワード群抽出部222は、i番目の文字とi+1番目の文字との間で、対象の文字列を分割する。
(Step S65: Character string division process)
The single word
(ステップS66:文字列終了判定処理)
単独ワード群抽出部222は、対象の文字列のi+1番目の文字が対象の文字列の最後の文字であるか否かを判定する。
単独ワード群抽出部222は、i+1番目の文字が最後の文字である場合には、処理をステップS67に進める。一方、単独ワード群抽出部222は、i+1番目の文字が最後の文字でない場合には、変数iに1を加算した上で、処理をステップS61に戻す。
(Step S66: Character string end determination process)
The single word
If the i + 1th character is the last character, the single word
(ステップS67:ワード群出力処理)
単独ワード群抽出部222は、ステップS65で分割されて生成された文字列の集合を単独ワード群としてメモリ12に書き込む。
(Step S67: Word group output processing)
The single word
つまり、単独ワード群抽出部222は、小文字の次に大文字がある場合には、小文字と大文字との間で文字列を分割する。また、単独ワード群抽出部222は、大文字が2つ以上連続した後に小文字がある場合には、大文字と小文字との間で文字列を分割する。なお、ここでは、大文字と小文字との並びによって文字列を分割した。しかし、例えば、“_”といった記号等によって文字列を分割するといった他の分割方法も考えられる。
That is, the single word
図21を参照して、実施の形態1に係るワード重み群抽出部223の処理を説明する。
ワード重み群抽出部223は、図18のステップS42で呼び出される。
With reference to FIG. 21, the processing of the word weight
The word weight
変数j,kには初期値として1が設定される。 1 is set as an initial value for the variables j and k.
(ステップS71:ワード使用率取得処理)
ワード重み群抽出部223は、ソースコード構造分析情報31におけるj番目の関数を対象の関数とし、ステップS41で取得されたワード群のうちk番目のワードを対象のワードとして、ワードカウント計算部224を呼び出し、ワード使用カウント及びワード使用率(rj,k)を取得する。
(Step S71: Word usage rate acquisition process)
The word weight
(ステップS72:ワード使用カウント判定処理)
ワード重み群抽出部223は、ステップS71で取得されたワード使用カウントが1以上であるか否かを判定する。
ワード重み群抽出部223は、ワード使用カウントが1以上である場合には、処理をステップS73に進める。一方、ワード重み群抽出部223は、ワード使用カウントが0である場合には、処理をステップS74に進める。
(Step S72: Word usage count determination process)
The word weight
If the word usage count is 1 or more, the word weight
(ステップS73:ワード使用関数追加処理)
ワード重み群抽出部223は、ワード使用関数数(dk)に1を加算する。なお、ワード使用関数数(dk)は、初期値として0が設定されメモリ12に記憶されている。
(Step S73: Word use function addition process)
The word weight
(ステップS74:関数終了判定処理)
ワード重み群抽出部223は、全ての関数についてステップS71からステップS73の処理が実行されたか否かを判定する。関数とは、ソースコード構造分析情報31が示す関数314のことである。
ワード重み群抽出部223は、全ての関数について処理が実行された場合には、処理をステップS75に進める。一方、ワード重み群抽出部223は、処理が実行されていない関数が残っている場合には、変数jに1を加算した上で、処理をステップS71に戻す。
(Step S74: Function end determination process)
The word weight
When the processing is executed for all the functions, the word weight
(ステップS75:ワード重み計算処理)
ワード重み群抽出部223は、ステップS71で取得されたワード使用率(rj,k)と、ステップS73で特定されたワード使用関数数(dk)とに基づき、ワード重み(wj,k)を計算する。
ここでは、ワード重み群抽出部223は、ワード重み計算部226により、数13に示すように、ワード重み(wj,k)を計算する。
The word weight
Here, the word weight
(ステップS76:ワード終了判定処理)
ワード重み群抽出部223は、変数kがステップS41で取得されたワード群に含まれるワードの数未満であるか否かを判定する。
ワード重み群抽出部223は、変数kがワードの数未満である場合には、変数kに1を加算し、変数jに1を設定した上で、処理をステップS71に戻す。一方、ワード重み群抽出部223は、変数kがワードの数以上である場合には、処理を終了する。
(Step S76: Word end determination process)
The word weight
When the variable k is less than the number of words, the word weight
図22を参照して、実施の形態1に係るワードカウント計算部224の処理を説明する。
ワードカウント計算部224は、図18のステップS43及び図21のステップS71で呼び出される。
The processing of the word
The word
(ステップS81:ワード群取得処理)
ワードカウント計算部224は、対象の関数について、関数内ワード群抽出部225を呼び出し、関数内に存在するワードの集合である関数内ワード群を取得する。対象の関数とは、図18のステップS43又は図21のステップS71で指定されている変数jが示す関数である。
(Step S81: Word group acquisition process)
The word
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS82:ワード一致判定処理)
ワードカウント計算部224は、ステップS81で取得された関数内ワード群のうちi番目のワードが、対象のワードと一致するか否かを判定する。対象のワードとは、図18のステップS43又は図21のステップS71で指定されている変数kが示すワードである。
ワードカウント計算部224は、i番目のワードが対象のワードと一致する場合には、処理をステップS83に進める。一方、ワードカウント計算部224は、i番目のワードが対象のワードと一致しない場合には、処理をステップS84に進める。
(Step S82: Word match determination process)
The word
If the i-th word matches the target word, the word
(ステップS83:ワード使用カウント追加処理)
ワードカウント計算部224は、ワード使用カウントに1を加算する。ワード使用カウントは、初期値として0が設定されメモリ12に記憶されている。
(Step S83: Word usage count addition process)
The word
(ステップS84:ワード終了判定処理)
ワードカウント計算部224は、ステップS81で取得された関数内ワード群の全てのワードについてステップS82の処理が実行されたか否かを判定する。
ワードカウント計算部224は、全てのワードについて処理が実行された場合には、処理をステップS85に進める。一方、ワードカウント計算部224は、処理が実行されていないワードが残っている場合には、変数iに1を加算した上で、処理をステップS82に戻す。
(Step S84: Word end determination process)
The word
When the processing is executed for all the words, the word
(ステップS85:ワード使用率計算処理)
ワードカウント計算部224は、ステップS83で特定されたワード使用カウントを、ステップS81で取得された関数内ワード群に含まれるワード数で除して、ワード使用率(rj,k)を計算する。ワードカウント計算部224は、計算されたワード使用率(rj,k)をメモリ12に書き込む。
(Step S85: Word usage rate calculation process)
The word count calculation unit 224 calculates the word usage rate (rj, k ) by dividing the word usage count specified in step S83 by the number of words included in the word group in the function acquired in step S81. .. The word count calculation unit 224 writes the calculated word usage rate (rj, k ) to the
図23を参照して、実施の形態1に係る関数内ワード群抽出部225の処理を説明する。
関数内ワード群抽出部225は、図22のステップS81で呼び出される。
With reference to FIG. 23, the processing of the in-function word
The word
変数iには初期値として1が設定される。 The variable i is set to 1 as an initial value.
(ステップS91:ワード群取得処理)
関数内ワード群抽出部225は、対象の関数におけるi番目の要素を対象の要素として、ワード群抽出部221を呼び出し、対象の要素の名称の一部を含むワード群を取得する。対象の関数とは、図21のステップS71で指定されている変数jが示す関数である。
(Step S91: Word group acquisition process)
The word
(ステップS92:ワード群追加処理)
関数内ワード群抽出部225は、ステップS91で取得されたワード群を、メモリ12に記憶された関数内ワード群に追加する。
(Step S92: Word group addition process)
The in-function word
(ステップS93:要素終了判定処理)
関数内ワード群抽出部225は、対象の関数における全ての要素についてステップS91及びステップS92の処理が実行されたか否かを判定する。
関数内ワード群抽出部225は、全ての要素について処理が実行された場合には、処理を終了する。一方、関数内ワード群抽出部225は、処理が実行されていない要素が残っている場合には、変数iに1を加算した上で、処理をステップS91に戻す。
(Step S93: Element end determination process)
The in-function word
The word
図24から図31を参照して、名称評価値計算部22の処理の具体的な例を説明する。
図18のステップS41が対象の要素をProductNameとして実行されたとする。
すると、図19のステップS51で実行される図20のステップS61からステップS67で、ProductNameが分割され、図24に示すようにProductとNameとを単独ワードとして含む単独ワード群が特定される。そして、図19のステップS52で単独ワード群の組合せとして、図25に示すように、ProductとNameとProductNameとをワードとして含むワード群が特定される。
A specific example of the processing of the name evaluation
It is assumed that step S41 in FIG. 18 is executed with the target element as ProductName.
Then, in steps S61 to S67 of FIG. 20 executed in step S51 of FIG. 19, the ProductName is divided, and as shown in FIG. 24, a single word group including the Product and the Name as a single word is specified. Then, in step S52 of FIG. 19, as a combination of a single word group, as shown in FIG. 25, a word group including Product, Name, and ProductName as words is specified.
図23のステップS91からステップS93で関数内ワード群を特定する場合には、対象の関数における各要素を対象の要素として、ワード群が特定される。図26に示すように、対象の関数がRefreshProductである場合には、関数RefreshProductに含まれる各要素の名称から、ワード群が特定される。例えば、inProductIDという要素からは、inと、Productと、IDと、inProductと、ProductIDと、inProductIDというワードが特定される。各要素の名称についてワード群が特定された結果、図27に示すように、関数RefreshProductについての関数内ワード群が特定される。 When the word group in the function is specified in steps S91 to S93 of FIG. 23, the word group is specified with each element in the target function as the target element. As shown in FIG. 26, when the target function is RefreshProduct, a word group is specified from the name of each element included in the function RefreshProduct. For example, from the element called inProductID, the words in, Product, ID, inProduct, ProductID, and inProductID are specified. As a result of specifying the word group for the name of each element, as shown in FIG. 27, the in-function word group for the function RefreshProduct is specified.
図21のステップS71が対象のワードがProductであるとして実行されたとする。そして、図21のステップS71で実行される図22のステップS81で、図27に示すように関数内ワード群が特定されたとする。
すると、図22のステップS82からステップS84で、図28に示すように関数内ワード群における対象ワードProductが特定され、図29に示すように対象ワードProductの数がカウントされる。そして、図22のステップS85で、図30に示すように関数RefreshProductにおける対象ワードProductのワード使用率が特定される。
It is assumed that step S71 in FIG. 21 is executed assuming that the target word is Product. Then, it is assumed that the word group in the function is specified in step S81 of FIG. 22 executed in step S71 of FIG. 21 as shown in FIG. 27.
Then, in steps S82 to S84 of FIG. 22, the target word Product in the word group in the function is specified as shown in FIG. 28, and the number of the target word Products is counted as shown in FIG. 29. Then, in step S85 of FIG. 22, as shown in FIG. 30, the word usage rate of the target word Product in the function RefreshProduct is specified.
各関数及び各ワードを対象として、ワード使用率が特定され、合わせてワード使用関数数が特定される。そして、特定されたワード使用率及びワード使用関数数に基づき、図31に示すように各関数及び各ワードについてのワード重みが特定される。
図18のステップS45で、ワード重み及びワード使用カウントから、ワード評価値及び名称評価値が計算され、名称関連度一覧表34が生成される。
The word usage rate is specified for each function and each word, and the number of word usage functions is specified in total. Then, based on the specified word usage rate and the number of word usage functions, the word weight for each function and each word is specified as shown in FIG. 31.
In step S45 of FIG. 18, the word evaluation value and the name evaluation value are calculated from the word weight and the word usage count, and the name
図32を参照して、実施の形態1に係る結果統合部23の処理を説明する。
結果統合部23は、要素評価値計算部21によって計算された要素評価値と、名称評価値計算部22によって計算された名称評価値とに基づき、複数の要素間の類似度を計算する。具体的には、結果統合部23は、複数の要素の間の各関数についての要素評価値の類似度合い及び名称評価値の類似度合いに応じて、複数の要素間の類似度を計算する。
With reference to FIG. 32, the processing of the
The
(ステップS101:評価値取得処理)
結果統合部23は、対象の要素群と、対象の関数群と、対象の要素評価値群と、対象の名称評価値群とについて、要素関連性評価値群計算部231を呼び出し、各要素について関数毎の要素関連性評価値を取得する。
対象の要素群とは、評価対象要素群32が示す全ての評価対象要素である。対象の関数群とは、ソースコード構造分析情報31が示す全ての関数314である。対象の要素評価値群とは、要素関連度一覧表33が示す全ての要素評価値である。対象の名称評価値群とは、名称関連度一覧表34が示す全ての名称評価値である。
(Step S101: Evaluation value acquisition process)
The
The target element group is all the evaluation target elements indicated by the evaluation
結果統合部23は、対象の要素群から選択可能な2つの要素の全ての組合せに対してステップS102の処理を実行する。ここで、並び順の異なる2つの要素は同じ組合せとする。
The
(ステップS102:類似度計算処理)
結果統合部23は、対象とする2つの要素それぞれについての関数毎の要素関連性評価値に基づき、対象とする2つの要素の類似度を計算する。
ここでは、結果統合部23は、ベクトル類似度計算部233により、数14に示すように、対象とする2つの要素の類似度を計算する。
The
Here, the
(ステップS103:結果記憶処理)
結果統合部23は、各組合せについて計算された類似度を、評価一覧表35としてメモリ12又はストレージ13に書き込む。
(Step S103: Result storage process)
The
図33を参照して、実施の形態1に係る要素関連性評価値群計算部231の処理を説明する。
要素関連性評価値群計算部231は、図32のステップS101で呼び出される。
With reference to FIG. 33, the processing of the element relevance evaluation value
The element relevance evaluation value
変数i,jには初期値として1が設定される。 1 is set as an initial value for the variables i and j.
(ステップS111:要素関連性評価値計算処理)
要素関連性評価値群計算部231は、評価対象要素群32におけるi番目の要素を対象の要素とし、ソースコード構造分析情報31におけるj番目の関数を対象の関数として、要素評価値と名称評価値とに基づき、要素関連性評価値を計算する。
ここでは、要素関連性評価値群計算部231は、関連性評価値計算部232により、数15に示すように、要素関連性評価値を計算する。
The element relevance evaluation value
Here, the element relevance evaluation value
(ステップS112:関数終了判定処理)
要素関連性評価値群計算部231は、全ての関数について処理が実行されたか否かを判定する。関数とは、ソースコード構造分析情報31が示す関数314のことである。
要素関連性評価値群計算部231は、全ての関数について処理が実行された場合には、処理をステップS113に進める。一方、要素関連性評価値群計算部231は、処理が実行されていない関数が残っている場合には、変数jに1を加算した上で、処理をステップS111に戻す。
(Step S112: Function end determination process)
The element relevance evaluation value
When the processing is executed for all the functions, the element relevance evaluation value
(ステップS113:要素終了判定処理)
要素関連性評価値群計算部231は、全ての対象の要素についてステップS111の処理が実行されたか否かを判定する。対象の要素とは、評価対象要素群32が示す評価対象要素である。
要素関連性評価値群計算部231は、全ての対象の要素について処理が実行された場合には、処理を終了する。一方、要素関連性評価値群計算部231は、処理が実行されていない対象の要素が残っている場合には、変数iに1を加算し、変数jに1を設定した上で、処理をステップS111に戻す。
(Step S113: Element end determination process)
The element relevance evaluation value
The element relevance evaluation value
***実施の形態1の効果***
以上のように、実施の形態1に係る要素類似判定装置10は、ソースコードに含まれる各関数における要素の使用と、各関数における要素の名称の使用とに基づき、要素間の類似度を計算する。
これにより、ソースコードにおける要素の類似性を適切に評価することが可能である。その結果、類似する要素を適切に特定することが可能になり、ソースコードの冗長性を減らすことができる。そして、ソースコードの修正工数の削減、及び、メモリ使用量の削減に繋がる。
*** Effect of
As described above, the element
This makes it possible to appropriately evaluate the similarity of elements in the source code. As a result, it becomes possible to appropriately identify similar elements and reduce the redundancy of the source code. This leads to a reduction in man-hours for modifying the source code and a reduction in the amount of memory used.
図34に示すソースコードにおいて、要素recA.ElemFooと、要素recB.ElemBarとは、同じ関数で使用される傾向があり、類似性がある。そのため、要素recA.ElemFooと、要素recB.ElemBarとを1つの要素にまとめることにより、冗長性の削減に繋がる可能性が高い。
しかし、要素recA.ElemFooと、要素recB.ElemBarとは、各関数でそのまま使用されず、媒介要素を介して使用される場合がある。例えば、要素recA.ElemFooは、媒介要素FooOfElemを介して使用される場合がある。そのため、単純に要素recA.ElemFooと、要素recB.ElemBarとが各関数で使用される回数に基づき要素の類似性を評価しようとしても、類似性を適切に評価できない可能性がある。
ここで、媒介要素は、元の要素と類似する名称を用いる可能性が高い。そのため、要素recA.ElemFooの名称の一部の文字列を含む名称の要素と、要素recB.ElemBarの名称の一部の文字列を含む名称の要素とが各関数で使用される回数に基づき要素の類似性を評価することが考えられる。この方法では、同じような名称を多く使用するソースコードでは適切に要素の類似性を評価できない可能性がある。
In the source code shown in FIG. 34, the element recA. ElemFoo and element recB. It tends to be used in the same function with ElemBar and has similarities. Therefore, the element recA. ElemFoo and element recB. Combining ElemBar into one element is likely to lead to a reduction in redundancy.
However, the element recA. ElemFoo and element recB. ElemBar is not used as it is in each function, but may be used via an intermediary element. For example, the element recA. ElemFoo may be used via the mediator FooOfElem. Therefore, simply the element recA. ElemFoo and element recB. Even if ElemBar tries to evaluate the similarity of elements based on the number of times each function is used, it may not be possible to properly evaluate the similarity.
Here, the mediator element is likely to use a name similar to the original element. Therefore, the element recA. The element of the name including a part of the character string of the name of ElemFoo, and the element recB. It is conceivable to evaluate the similarity of the elements based on the number of times each function uses the elements of the name including a part of the character string of the name of ElemBar. With this method, it may not be possible to properly evaluate the similarity of elements in source code that uses many similar names.
そこで、実施の形態1に係る要素類似判定装置10は、この2つの評価方法を組み合わせて要素の類似性を評価している。つまり、対象とする要素が各関数で使用される回数に基づく類似性の評価と、対象とする要素の名称の一部の文字列を含む名称の要素が各関数で使用される回数に基づく類似性の評価とを組み合わせて、対象とする要素の類似性を評価している。
これにより、対象とする要素が関数において媒介変数を介して使用される場合にも、一定の類似性を見出すことが可能となる。また、同じような名称を多く使用するソースコードであっても、媒介変数を介して使用されていない限り一定の類似性を見出すことが可能となる。
Therefore, the element
This makes it possible to find certain similarities even when the element of interest is used in a function via parameters. Moreover, even if the source code uses many similar names, it is possible to find a certain similarity unless it is used via a parameter.
図34に示すソースコードにおいて、要素recA.ElemFooと、要素recB.ElemBarとの類似性を評価した場合には、図35に示すようになる。
対象とする要素が各関数で使用される回数に基づき類似性を評価した場合には、関数f4と関数f5との間では、使用回数が一致しており、類似していると判断できる。しかし、関数f6と関数f7との間では、使用回数が一致せず、類似していると判断できない。
一方、対象とする要素の名称の一部の文字列を含む名称の要素が各関数で使用される回数に基づく類似性を評価した場合には、関数f4と関数f5との間と、関数f6と関数f7との間との両方で回数が概ね一致しており、類似していると判断できる。但し、他の関数でも同様の名称が使用されている可能性があり、評価精度は高くない可能性がある。
これらの判断結果が統合され、要素recA.ElemFooと、要素recB.ElemBarとの類似性が評価される。
In the source code shown in FIG. 34, the element recA. ElemFoo and element recB. When the similarity with ElemBar is evaluated, it becomes as shown in FIG. 35.
When the similarity is evaluated based on the number of times the target element is used in each function, the number of times of use is the same between the function f4 and the function f5, and it can be determined that they are similar. However, the number of times of use does not match between the function f6 and the function f7, and it cannot be determined that they are similar.
On the other hand, when the similarity based on the number of times that the element of the name including a part of the character string of the name of the target element is used in each function is evaluated, the function f6 is used between the function f4 and the function f5. The number of times is almost the same between and the function f7, and it can be judged that they are similar. However, the same name may be used in other functions, and the evaluation accuracy may not be high.
These judgment results are integrated, and the element recA. ElemFoo and element recB. Similarity with ElemBar is evaluated.
***他の構成***
<変形例1>
実施の形態1では、各機能構成要素がソフトウェアで実現された。しかし、変形例1として、各機能構成要素はハードウェアで実現されてもよい。この変形例1について、実施の形態1と異なる点を説明する。
*** Other configurations ***
<
In the first embodiment, each functional component is realized by software. However, as a
図36を参照して、変形例1に係る要素類似判定装置10の構成を説明する。
各機能構成要素がハードウェアで実現される場合には、要素類似判定装置10は、プロセッサ11とメモリ12とストレージ13とに代えて、電子回路15を備える。電子回路15は、各機能構成要素と、メモリ12と、ストレージ13との機能とを実現する専用の回路である。
With reference to FIG. 36, the configuration of the element
When each functional component is realized by hardware, the element
電子回路15としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、ASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)が想定される。
各機能構成要素を1つの電子回路15で実現してもよいし、各機能構成要素を複数の電子回路15に分散させて実現してもよい。
Examples of the
Each functional component may be realized by one
<変形例2>
変形例2として、一部の各機能構成要素がハードウェアで実現され、他の各機能構成要素がソフトウェアで実現されてもよい。
<
As a
プロセッサ11とメモリ12とストレージ13と電子回路15とを処理回路という。つまり、各機能構成要素の機能は、処理回路により実現される。
The
10 要素類似判定装置、11 プロセッサ、12 メモリ、13 ストレージ、14 通信インタフェース、15 電子回路、21 要素評価値計算部、211 直接/間接カウント計算部、212 要素カウント計算部、213 要素統合評価計算部、22 名称評価値計算部、221 ワード群抽出部、222 単独ワード群抽出部、223 ワード重み群抽出部、224 ワードカウント計算部、225 関数内ワード群抽出部、226 ワード重み計算部、227 名称統合評価値計算部、23 結果統合部、231 要素関連性評価値群計算部、232 関連性評価値計算部、233 ベクトル類似度計算部、31 ソースコード構造分析情報、311 要素、312 構造名称、313 名称、314 関数、315 構造名称、316 名称、317 使用要素、318 呼出し関数、32 評価対象要素群、33 要素関連度一覧表、34 名称関連度一覧表、35 評価一覧表。 10 element similarity determination device, 11 processor, 12 memory, 13 storage, 14 communication interface, 15 electronic circuit, 21 element evaluation value calculation unit, 211 direct / indirect count calculation unit, 212 element count calculation unit, 213 element integrated evaluation calculation unit , 22 name evaluation value calculation unit, 221 word group extraction unit, 222 single word group extraction unit, 223 word weight group extraction unit, 224 word count calculation unit, 225 word group extraction unit in function, 226 word weight calculation unit, 227 names. Integrated evaluation value calculation unit, 23 result integration unit, 231 element relevance evaluation value group calculation unit, 232 relevance evaluation value calculation unit, 233 vector similarity calculation unit, 31 source code structure analysis information, 311 element, 312 structure name, 313 name, 314 function, 315 structure name, 316 name, 317 used element, 318 calling function, 32 evaluation target element group, 33 element relevance list, 34 name relevance list, 35 evaluation list.
Claims (8)
前記各関数で、対象とする複数の要素それぞれの名称の一部を含む名称の要素が使用されるか否かに応じて、前記各関数について要素毎の名称評価値を計算する名称評価値計算部と、
前記要素評価値計算部によって計算された前記要素評価値と、前記名称評価値計算部によって計算された前記名称評価値とに基づき、前記複数の要素間の類似度を計算する結果統合部と
を備える要素類似判定装置。 An element evaluation value calculation unit that calculates an element evaluation value for each element for each function according to whether or not each of a plurality of target elements is used in each function included in the source code.
Name evaluation value calculation that calculates the name evaluation value for each element for each function depending on whether or not an element with a name that includes a part of the name of each of the plurality of target elements is used in each of the functions. Department and
The result integration unit that calculates the similarity between the plurality of elements based on the element evaluation value calculated by the element evaluation value calculation unit and the name evaluation value calculated by the name evaluation value calculation unit. An element similarity determination device provided.
請求項1に記載の要素類似判定装置。 The element evaluation value calculation unit sets each element as a target element, and determines the element evaluation value of the target element for each function according to the number of times the element is used in each function. The element similarity determination device according to claim 1 for calculation.
請求項2に記載の要素類似判定装置。 The element evaluation value calculation unit uses each function as a target function, sets each element as a target element, and is called from the target function and the number of times the target element is used in the target function. The element similarity determination device according to claim 2, wherein the element evaluation value is calculated by integrating with the number of indirect uses in which the target element is used in the function.
請求項1から3までのいずれか1項に記載の要素類似判定装置。 The name evaluation value calculation unit targets each element, and the target for each function according to the number of times the element having a name including a part of the name of the target element is used in each function. The element similarity determination device according to any one of claims 1 to 3, which calculates the name evaluation value of the element of.
請求項4に記載の要素類似判定装置。 The name evaluation value calculation unit uses each function as a target function, each element as a target element, and a weight obtained by dividing the number of times the name is used by the number of names included in the target function. The element similarity determination device according to claim 4, wherein the name evaluation value is calculated by weighting the number of times the name is used.
コンピュータによって実現される名称評価値計算部が、前記各関数で、対象とする複数の要素それぞれの名称の一部を含む名称の要素が使用されるか否かに応じて、前記各関数について要素毎の名称評価値を計算し、
コンピュータによって実現される結果統合部が、前記要素評価値と前記名称評価値とに基づき、前記複数の要素間の類似度を計算する要素類似判定方法。 The element evaluation value calculation unit realized by the computer determines the element evaluation value for each element for each function depending on whether or not each of the plurality of target elements is used in each function included in the source code. Calculate and
The name evaluation value calculation unit realized by the computer is an element for each function depending on whether or not an element having a name including a part of the name of each of the plurality of target elements is used in each function. Calculate the name evaluation value for each
An element similarity determination method in which a result integration unit realized by a computer calculates the degree of similarity between the plurality of elements based on the element evaluation value and the name evaluation value.
前記各関数で、対象とする複数の要素それぞれの名称の一部を含む名称の要素が使用されるか否かに応じて、前記各関数について要素毎の名称評価値を計算する名称評価値計算処理と、
前記要素評価値計算処理によって計算された前記要素評価値と、前記名称評価値計算処理によって計算された前記名称評価値とに基づき、前記複数の要素間の類似度を計算する結果統合処理と
をコンピュータに実行させる要素類似判定プログラム。 Element evaluation value calculation processing that calculates the element evaluation value for each element for each function according to whether or not each of the plurality of target elements is used in each function included in the source code.
Name evaluation value calculation that calculates the name evaluation value for each element for each function depending on whether or not an element with a name that includes a part of the name of each of the plurality of target elements is used in each of the functions. Processing and
The result integration process of calculating the similarity between the plurality of elements based on the element evaluation value calculated by the element evaluation value calculation process and the name evaluation value calculated by the name evaluation value calculation process. Element similarity judgment program to be executed by a computer.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017248674A JP6971835B2 (en) | 2017-12-26 | 2017-12-26 | Element similarity determination device, element similarity determination method and element similarity determination program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017248674A JP6971835B2 (en) | 2017-12-26 | 2017-12-26 | Element similarity determination device, element similarity determination method and element similarity determination program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019114154A JP2019114154A (en) | 2019-07-11 |
JP6971835B2 true JP6971835B2 (en) | 2021-11-24 |
Family
ID=67223262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017248674A Active JP6971835B2 (en) | 2017-12-26 | 2017-12-26 | Element similarity determination device, element similarity determination method and element similarity determination program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6971835B2 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5826099B2 (en) * | 2012-04-04 | 2015-12-02 | 三菱電機株式会社 | Software evaluation support apparatus and program |
JP2016040707A (en) * | 2014-08-13 | 2016-03-24 | 富士通株式会社 | Software verification program, software verification method and software verification system |
JP6369269B2 (en) * | 2014-10-01 | 2018-08-08 | 日本電気株式会社 | Verification support apparatus, verification support method, and computer program |
JP2018124901A (en) * | 2017-02-03 | 2018-08-09 | 富士通株式会社 | Program analyzing apparatus, program analyzing method, and program analyzing program |
-
2017
- 2017-12-26 JP JP2017248674A patent/JP6971835B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019114154A (en) | 2019-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063055B (en) | Method and device for searching homologous binary files | |
KR102376117B1 (en) | Parallel decision tree processor architecture | |
KR101840905B1 (en) | Counter operation in a state machine lattice | |
TW201737115A (en) | Method and system for training machine learning system | |
US9176732B2 (en) | Method and apparatus for minimum cost cycle removal from a directed graph | |
WO2020063524A1 (en) | Method and system for determining legal instrument | |
CN111045670A (en) | Method and device for identifying multiplexing relationship between binary code and source code | |
WO2019102786A1 (en) | Source-code dividing device, source-code analyzing device, source-code dividing method, and source-code dividing program | |
CN113886237A (en) | Analysis report generation method and device, electronic equipment and storage medium | |
CN111062034A (en) | Webshell file detection method and device, electronic device and storage medium | |
US20200012250A1 (en) | Program editing device, program editing method, and computer readable medium | |
CN107832271B (en) | Function image drawing method, device, equipment and computer storage medium | |
JP6971835B2 (en) | Element similarity determination device, element similarity determination method and element similarity determination program | |
CN116628600A (en) | Unbalanced data sampling method and device based on random forest | |
CN115862653A (en) | Audio denoising method and device, computer equipment and storage medium | |
CN114462381A (en) | Data processing method, device, equipment and storage medium | |
CN106971117B (en) | Investigation apparatus and investigation method | |
CN114792007A (en) | Code detection method, device, equipment, storage medium and computer program product | |
GB2573417A (en) | Scale calculation device and scale calculation program | |
JP7003435B2 (en) | Information processing equipment, programs, information processing methods and data structures | |
US20150371033A1 (en) | String and Password Generation from Regular Expressions | |
US20170132278A1 (en) | Systems and Methods for Inferring Landmark Delimiters for Log Analysis | |
CN113778839B (en) | Regression testing method and device and electronic equipment | |
US11790984B1 (en) | Clustering for read thresholds history table compression in NAND storage systems | |
US8176407B2 (en) | Comparing values of a bounded domain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210831 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210907 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210927 |
|
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: 20211005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211102 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6971835 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |