Detection of Software Clones Written in Multiple Programming Languages

概要:複数のプログラミング言語 (以降,言語)で記述されたソフトウェアでは,異なる言語を組合わせて 1つの機能を実装するため,各言語で記述されたソースコードは互いに呼出し関係を持つ.異なる言語で 記述されたソフトウェアから検出されたコードクローンは呼出し関係を持つことが多く,呼出し関係で結 合された,より大きなコード片に対して新しくコードクローンを定義することができる.このコードク ローンは呼出し関係の前後で実装している機能は同じだと考えられるため,互いに一致もしくは類似した 機能を実装していると考えられる.このようなコードクローンを開発者に提示することにより,ライブラ リ作成支援やリファクタリングなどが機能単位で行え,コードクローンの保守作業がより効率的になると 期待できる.しかし,既存のコードクローン検出手法では呼出し関係を考慮していないため,複数のコー ドクローン検出結果を見比べて呼出し関係を把握するという作業が必要である.そこで本研究では,この コードクローンを InterLanguage Clone (ILC)として定義し,その自動検出手法について提案する.さら に,実際のオープンソースの複数言語ソフトウェアに対してケーススタディを実施し,検出される ILCが 同一もしくは類似した機能を実装しているかどうか調査した.その結果,そのようなケースがいくつか存 在することを確認できた.

[1]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[2]  Jianjun Zhao,et al.  Mining revision histories to detect cross-language clones without intermediates , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[3]  Katsuro Inoue,et al.  Towards Detection and Analysis of Interlanguage Clones for Multilingual Web Applications , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[4]  Christian Kästner,et al.  Cross-language program slicing for dynamic web applications , 2015, ESEC/SIGSOFT FSE.

[5]  Premkumar T. Devanbu,et al.  A large scale study of programming languages and code quality in github , 2014, SIGSOFT FSE.

[6]  Chanchal Kumar Roy,et al.  Near-miss clone patterns in web applications: An empirical study with industrial systems , 2013, 2013 26th IEEE Canadian Conference on Electrical and Computer Engineering (CCECE).

[7]  Chanchal Kumar Roy,et al.  NICAD: Accurate Detection of Near-Miss Intentional Clones Using Flexible Pretty-Printing and Code Normalization , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[8]  Nicholas A. Kraft,et al.  Cross-language Clone Detection , 2008, SEKE.

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

[10]  Stan Jarzabek,et al.  Using Server Pages to Unify Clones in Web Applications: A Trade-Off Analysis , 2007, 29th International Conference on Software Engineering (ICSE'07).

[11]  Stan Jarzabek,et al.  An investigation of cloning in web applications , 2005, WWW '05.

[12]  Kevin A. Schneider,et al.  Agile Parsing in TXL , 2004, Automated Software Engineering.

[13]  James R. Cordy,et al.  Robust multilingual parsing using island grammars , 2003, CASCON.

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

[15]  L. D. Moura,et al.  Clone detection using abstract syntax trees , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[16]  Vladimir I. Levenshtein,et al.  Binary codes capable of correcting deletions, insertions, and reversals , 1965 .