首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用与Intellij相似的Netbeans找到重复代码?

如何使用与Intellij相似的Netbeans找到重复代码?
EN

Stack Overflow用户
提问于 2018-02-13 06:54:36
回答 1查看 1.4K关注 0票数 0

有许多重复的代码,包括:

代码语言:javascript
运行
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 22:29:33

您可以使用NetBeans找到Apache插件项目的重复代码。只需将以下内容添加到项目的pom.xml

代码语言:javascript
运行
复制
<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文件。如果没有找到复制,则该文件如下所示:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<pmd-cpd>
</pmd-cpd>

但是,如果发现重复,则文件看起来类似于以下内容:

代码语言:javascript
运行
复制
<?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> (正如我所做的那样)将导致当检测到重复时生成失败,但是可以指定其他目标。
  • maven-pmd-plugin有比2.7.1更新的版本,但这是复制/粘贴检测的最新版本。在使用配置之后,最近的版本可能会起作用,但我没有尝试。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48761065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档