Retrieving Similar Code Fragments Based on Synonymous Word Identification

ソースコード中に類似した部分(類似コード片)が散在していると,ソースコード の一部分を修正したときにその類似部分に対しても同様の修正をする必要が生じるこ とがあるため,保守作業が困難になるという問題がある.一般に,ソフトウェア開発者 は類似コード片を調査する際には,grepなどのキーワード検索ツールを用いる.しか し,類似コード片には様々な差異が存在するため,修正の必要がある類似コード片の 多くを列挙できるキーワードを与えることは困難である.本研究では,入力したコー ド片の類似コード片を,コード片に含まれる識別子の類似性に基づいて検索する手法 を提案する.本手法は,まず,共起関係に基づいて語(識別子を分割・正規化した後 の文字列)をクラスタリングすることで類義語を求める.その後,入力コード片に含 まれるすべての語について,同一もしくは類義語である語を含むコード片を検出し, 類似コード片として提示する.適用実験として,提案手法を用いて類似した欠陥を含 むコード片の検索を行ったところ,類似した欠陥の多くを提示できることを確認した. また,提案手法と既存ツール(grepおよびコードクローン検出ツール CCFinder)と の比較実験を行い,それぞれの検索結果が持つ特徴を確認した.

[1]  Zhendong Su,et al.  DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones , 2007, 29th International Conference on Software Engineering (ICSE'07).

[2]  Kumiko Tanaka-Ishii Clustering Co-occurrence Graph based on Transitivity , 1997, VLC.

[3]  Susan Horwitz,et al.  Using Slicing to Identify Duplication in Source Code , 2001, SAS.

[4]  David Evans,et al.  Improving Security Using Extensible Lightweight Static Analysis , 2002, IEEE Softw..

[5]  David Hovemeyer,et al.  Finding bugs is easy , 2004, SIGP.

[6]  Jianhua Lin,et al.  Divergence measures based on the Shannon entropy , 1991, IEEE Trans. Inf. Theory.

[7]  Ido Dagan,et al.  Similarity-Based Models of Word Cooccurrence Probabilities , 1998, Machine Learning.

[8]  Yuanyuan Zhou,et al.  CP-Miner: finding copy-paste and related bugs in large-scale software code , 2006, IEEE Transactions on Software Engineering.

[9]  Shinji Kusumoto,et al.  Simultaneous Modification Support based on Code Clone Analysis , 2007, 14th Asia-Pacific Software Engineering Conference (APSEC'07).

[10]  Richard Levins,et al.  Why Programs Fail , 2010 .

[11]  Ettore Merlo,et al.  Assessing the benefits of incorporating function clone detection in a development process , 1997, 1997 Proceedings International Conference on Software Maintenance.

[12]  Evgueni A. Haroutunian,et al.  Information Theory and Statistics , 2011, International Encyclopedia of Statistical Science.

[13]  Miryung Kim,et al.  An ethnographic study of copy and paste programming practices in OOPL , 2004, Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE '04..

[14]  Zhenmin Li,et al.  PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code , 2005, ESEC/FSE-13.

[15]  Brenda S. Baker,et al.  Finding Clones with Dup: Analysis of an Experiment , 2007, IEEE Transactions on Software Engineering.

[16]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..