有很多重复的代码,包括:
Duplicates within file
Duplicates within package
Duplicates around multiple packages
Duplicates around separate Maven Modules
有没有办法使用 Netbeans 8+ 或 Netbeans 插件或 Maven 插件与 Netbeans 或类似于 Intellij 的独立工具来查找重复代码?
我找不到相同的文档。
我在 Maven 中找到了 PMD,但无法与 Netbeans 8.2 链接,我们只能使用 Netbeans
最佳答案
您可以使用 Apache Maven PMD Plugin 查找 NetBeans Maven 项目的重复代码。 。只需将以下内容添加到项目的 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 的复制粘贴检测器 (CPD) 将运行,并将其结果写入文件{项目目录}\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 后,验证重复检测是否正常工作的一个非常简单的方法是在某个类中复制/粘贴一个大方法,然后为粘贴的方法指定另一个名称,以便代码仍然可以编译。我尝试了这一点,并在输出窗口中得到了以下结果:
maven-pmd-plugin:2.7.1:cpd-check (default) @ checkduplication ---
BUILD FAILURE
Total time: 2.689 s Finished at: 2018-02-15T17:06:23-05:00 Final Memory: 20M/70M
Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:2.7.1:cpd-check (default) on project checkduplication: You have 1 CPD duplication. For more details see:D:\NetBeansProjectsJava9\checkduplication\target\cpd.xml -> [Help 1]
最后几点:
指定
<goal>cpd-check</goal>
(正如我所做的那样)在检测到重复时会导致构建失败,但是 alternative goals can be specified .maven-pmd-plugin 的版本比 2.7.1 更新,但这是可以进行复制/粘贴检测的最新版本盒子的。更新的版本可能在使用配置后可以工作,但我没有尝试过。
关于java - 我们如何使用类似于 Intellij 的 Netbeans 来查找重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48761065/