楠本研究室

業績一覧

ホーム業績一覧

Type-3 Code Clone Detection Using The Smith-Waterman Algorithm

Type-3 Code Clone Detection Using The Smith-Waterman Algorithm
修士論文, 大阪大学
概要: Recently, code clones have received much attention. Code clones are defined as source code fragments that are identical or similar to each other. Code clones are introduced into source code by various reasons such as copy-and-paste operations. It is generally said that the presence of code clones makes software maintenance more difficult. This is because if we modify a code fragment, it is necessary to check its correspondents and verify whether they need the same modifications simultaneously or not. In this thesis, we focus on code clones that is generated by copy-and-paste operations and then made modifications such as adding, deleting and changing statements. In order to detect such code clones, AST-based technique, PDG-based technique, metric-based technique and tokenbased technique using LCS can be used. However, each of these detection techniques has limitations. For example, existing AST-based techniques and PDG-based techniques require additional costs for transforming source files into intermediate representations such as ASTs or PDGs, and existing metric-based techniques and token-based techniques using LCS cannot detect code clones that locate in a part of modules. In this thesis, we propose a new detection method using the Smith-Waterman algorithm to resolve these limitations. The Smith-Waterman algorithm is an algorithm for identifying similar alignments between two sequences even if they include some gaps. We developed the proposed method as a software tool and confirmed that the proposed method could resolve the limitations by conducting a quantitative evaluation of our tool with Bellon’s benchmark. タグ: algorithm, clone, code, detection, smith-waterman, type-3
@mastersthesis{HiroakiMURAKAMI2013,
  author = {Hiroaki MURAKAMI},
  title = {Type-3 Code Clone Detection Using The Smith-Waterman Algorithm},
  school = {大阪大学},
  year = {2013},
  month = {feb}
}