【问题标题】:PMD - Eclipse plugin - Not testing against any rulesPMD - Eclipse 插件 - 不针对任何规则进行测试
【发布时间】:2013-02-09 16:44:32
【问题描述】:

我正在使用 Eclipse Juno(Service Release 1)并从http://sourceforge.net/projects/pmd/files/pmd-eclipse/update-site/ 安装了最新版本的 PMD 插件 我可以配置插件并选择应该执行哪些规则,但不幸的是,没有检查任何规则。如果我在 PMD 子菜单中单击“检查代码”,会弹出一个对话框,显示“检查 0 条 xxx 规则”

必须配置什么以及在哪里启用该功能?在控制台上 PMD 运行良好。

【问题讨论】:

    标签: eclipse eclipse-plugin code-analysis pmd


    【解决方案1】:
    1. Preferences -> PMD(请不要在搜索栏上搜索 PMD,然后您将无法找到规则配置,尝试通过滚动每个首选项来查找)。
    2. 选择所需的规则。
    3. 点击应用&确定(会重新构建规则)
    4. 现在右击代码并选择PMD->代码检查

    【讨论】:

    • 我在带有 JDK1.8 的 Mac 上使用 Eclipse Oxygen。从市场安装了最新的 PMD。我没有从 Preferences-->PMD 中看到 PMD。虽然我可以右键单击并启用 PMD(但不工作)。
    【解决方案2】:

    检查是否在项目属性上启用了 PMD。

    【讨论】:

    • 同时检查是否在窗口/首选项/PMD/规则配置上启用了规则
    • 感谢您的回答。如前所述,我取消检查并再次检查了所有规则,但没有任何成功。此外,在项目属性中启用了 PMD。
    • 您还应该注意通过右键单击 main/java 文件夹而不是项目来运行 PMD。
    • 我右键单击 src/main/java 文件夹并选择 PMD -> 检查代码 - 结果是一个进度文件夹,其中“检查 0 个 xxx 规则”....跨度>
    【解决方案3】:

    如果您转到 Eclipse Preferences -> PMD -> Rule Configuration 并取消选中并重新选中所有 Rule Checkboxes 并单击“Apply”框,Eclipse 是否会弹出对话框“Rules settings has changed. Do you want to do a完全重建?”

    如果是这样,请尝试使用 PMD 检查此代码

    public class BadClass {
        public void badMethod() {
            try {
                String bad = "";            
            } catch (Exception e) {
    
            }
        }    
    }
    

    这应该会显示很多 PMD 错误。如果没有,能否在 Eclipse 目录下找到名为 pmd-eclipse.log 的文件并贴出内容?

    【讨论】:

    • 我尝试了您的方法,但没有任何成功。它仍然说检查 xxx 规则中的 0 条。你提到的文件在我的机器上没有。
    • 我想帮忙,因为我过去一直在使用 PMD Eclipse 插件。您可以发布您的 Eclipse 插件配置的屏幕截图吗?我知道过去 PMS 插件不会解析代码,因为它的规则访问者中有 NullPointerException。
    • 感谢您的截图。我的设置看起来完全一样。但是我更改了日志文件的路径,所以现在我可以找到它。非源文件(例如属性文件或 .DS_Store)有一些例外,但我怀疑这是问题的原因。此(大型)日志文件中包含的其他哪些信息可能令人感兴趣?
    • 对我来说,我删除了日志以重新开始。然后我从 Eclipse 执行 PMD。在我的具体情况下,它是我的 JavaDoc 上的一条评论规则。 java.lang.StringIndexOutOfBoundsException:在 net.sourceforge.pmd.lang.java.rule.cmets.AbstractCommentRule.multiLinesIn(AbstractCommentRule.java:98)。所以我取消了评论规则和PMD插件再次工作。您是否看到任何异常?
    • 不,我没有看到这样的例外。我只看到 net.sourceforge.pmd.lang.ast.TokenMgrError: Lexical error in file .DS_Store at line 1, column 1. Encountered: "" (0), after : "" 之类的例外情况,但仅适用于 4-5 个没有源文件的文件。对于源文件,我只看到 DEBUG ResourceVisitor Visiting resource Block.java - DEBUG BaseVisitor Derived files included: true - DEBUG BaseVisitor file Block.java is derived: false - DEBUG BaseVisitor file checked: true - DEBUG BaseVisitor Adding markerSet to accumulator for file Block.java 之类的东西,仅此而已。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多