有许多重复的代码,包括:
Duplicates within file
Duplicates within package
Duplicates around multiple packages
Duplicates around separate Maven Modules
是否有任何方法可以使用Netbeans、8+、Netbeans插件或Maven插件或类似Intellij的独立工具查找重复代码?
我找不到同样的文件。
我在Maven中找到了PMD,但无法与Netbeans 8.2连接,我们只能使用Netbeans
发布于 2018-02-15 22:29:33
您可以使用NetBeans找到Apache插件项目的重复代码。只需将以下内容添加到项目的pom.xml中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<executions>
<execution>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
</plugin>
</plugins>
</reporting>
构建项目时,将运行项目PMD的复制粘贴检测器,并将其结果写入{project目录}\target\cpd.xml文件。如果没有找到复制,则该文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<pmd-cpd>
</pmd-cpd>
但是,如果发现重复,则文件看起来类似于以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<pmd-cpd>
<duplication lines="162" tokens="608">
<file line="95" path="D:\NetBeansProjectsJava9\checkduplication\src\main\java\com\unthreading\checkduplication\ParseJavadoc.java"/>
<file line="258" path="D:\NetBeansProjectsJava9\checkduplication\src\main\java\com\unthreading\checkduplication\ParseJavadoc.java"/>
<codefragment>
<![CDATA[
...details of the duplicated code....
]]>
</codefragment>
</duplication>
</pmd-cpd>
如上文所述,在更新POM之后,验证重复检测是否有效的一个非常简单的方法是在某个类中复制/粘贴一个大型方法,然后再给粘贴方法另一个名称,以便代码仍然编译。我试了一下,并在Output窗口中获得了以下结果:
maven-pmd插件:2.7.1:cpd 构建失败 完成时间: 2018-02-15T17:06:23-05:00最终记忆: 20M/70M 未能对项目检查复制执行目标org.apache.maven.plugins:maven-pmd-plugin:2.7.1:cpd-check (默认):您有一个CPD复制。有关更多详细信息,see:D:\NetBeansProjectsJava9\checkduplication\target\cpd.xml ->帮助1
最后几点:
<goal>cpd-check</goal>
(正如我所做的那样)将导致当检测到重复时生成失败,但是可以指定其他目标。。https://stackoverflow.com/questions/48761065
复制相似问题