首页> 外文会议>International Workshop on Software Clones >Using compilation/decompilation to enhance clone detection
【24h】

Using compilation/decompilation to enhance clone detection

机译:使用编译/反编译来增强克隆检测

获取原文

摘要

We study effects of compilation and decompilation to code clone detection in Java. Compilation/decompilation canonicalise syntactic changes made to source code and can be used as source code normalisation. We used NiCad to detect clones before and after decompilation in three open source software systems, JUnit, JFreeChart, and Tomcat. We filtered and compared the clones in the original and decompiled clone set and found that 1,201 clone pairs (78.7%) are common between the two sets while 326 pairs (21.3%) are only in one of the sets. A manual investigation identified 325 out of the 326 pairs as true clones. The 252 original-only clone pairs contain a single false positive while the 74 decompiled-only clone pairs are all true positives. Many clones in the original source code that are detected only after decompilation are type-3 clones that are dicult to detect due to added or deleted statements, keywords, package names; flipped if-else statements; or changed loops. We suggest to use decompilation as normalisation to compliment clone detection. By combining clones found before and after decompilation, one can achieve higher recall without losing precision.
机译:我们研究编译和反编译对Java代码克隆检测的影响。编译/反编译可以规范化对源代码进行的语法更改,并且可以用作源代码规范化。我们使用NiCad在三个开源软件系统JUnit,JFreeChart和Tomcat进行反编译之前和之后检测克隆。我们过滤并比较了原始和反编译克隆集中的克隆,发现两组之间共有1,201个克隆对(78.7%),而其中只有326对(21.3%)。人工调查确定了326对中的325对为真正的克隆。 252个仅原始克隆对包含单个假阳性,而74个仅反编译克隆对均为真阳性。原始源代码中只有在反编译之后才检测到的许多克隆是类型3克隆,由于添加或删除了语句,关键字,程序包名称而难以检测到。翻转if-else语句;或更改的循环。我们建议使用反编译作为归一化来补充克隆检测。通过组合在反编译之前和之后发现的克隆,可以在不损失精度的情况下实现更高的查全率。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号