当前位置:  开发笔记 > 编程语言 > 正文

如何在开发过程中检测代码重复?

如何解决《如何在开发过程中检测代码重复?》经验,为你挑选了3个好方法。

我们有一个相当大的代码库,400K LOC的C++,代码重复是一个问题.有没有可以有效检测重复代码块的工具?

理想情况下,这将是开发人员在开发过程中可以使用的东西,而不是偶尔运行以查看问题所在.如果我们可以将这样的工具与CruiseControl集成在每次签入后提供报告,那也很好.

我前段时间看过Duploc,它显示了一个漂亮的图形,但需要一个小型的环境来使用它,这使得自动运行它相当困难.

免费工具会很好,但如果有一些好的商业工具我也会感兴趣.



1> Simon Steele..:

Simian在C++项目中检测到重复的代码.

更新:还适用于Java,C#,C,COBOL,Ruby,JSP,ASP,HTML,XML,Visual Basic,Groovy源代码甚至纯文本文件


请注意,它不是免费的商业用途.

2> user39039..:

我使用了PMD的Copy-and-Paste-Detector,并使用以下包装脚本将其集成到CruiseControl中(确保在类路径中有pmd jar).

我们的检查每晚运行.如果您希望将输出限制为仅列出当前更改集中的文件,则可能需要一些自定义编程(想法:检查所有并仅列出其中包含其中一个已更改文件的重复项.您必须检查所有文件,因为更改可能会使用来自未更改文件的一些代码).应该可以通过使用XML输出和解析结果来实现.不要忘记在完成后发布该脚本;)

对于初学者来说,"文本"输出应该没问题,但是你需要以用户友好的方式显示结果,为此我使用perl脚本从CPD的"xml"输出生成HTML文件.可以通过将它们发布到巡航报告jsp所在的tomcat来访问它们.开发人员可以从那里查看它们并查看他们的脏黑客的结果:)

它在150个KLoc代码上运行得非常快,不到2秒(空行和注释不计入该数字).

duplicatecheck.xml:







    
    
        
            
            
                
            
            
        
    



3> benno..:

duplo似乎是Duploc中使用的算法的C实现.编译和安装很简单,虽然选项有限,但它似乎或多或少都是开箱即用的.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有