繁体   English   中英

自定义PMD规则未由PMD Eclipse插件突出显示

[英]Custom PMD rule not being highlighted by PMD Eclipse plugin

我正在尝试创建一个自定义规则,以标记在void方法中使用return语句,例如:

public class MyClass
{
    public void myMethod(Object someObj)
    {
        if (someObj == null)
        {
            return;
        }
        ...
    }
}

我使用以下XPath创建了自定义XPath规则:

//MethodDeclaration[not(ResultType/Type) and (count(//ReturnStatement) > 0)]

它在RuleDesigner中返回ASTMethodDeclaration元素,但是,当我将此规则导入Eclipse并针对代码运行PMD时,它不会标记我期望它的方法,即与上述描述匹配的方法(包含return的无效方法) 。

任何人都知道这里可能有什么问题吗? 我的XPath出了点问题吗?

我正在使用插件的v3.2.6,其中包含pmd14-4.2.5.jar。

谢谢克里斯

那是您使用的确切XPath吗? 它的格式不正确。 (它缺少紧密的联系。)我建议编写一个测试工具来测试独立于PMD的xpath。 您可以在Eclipse中为某个类生成AST(或者我认为是独立的),以便您可以运行XML。

好的,解决了问题。 XPath逻辑是错误的,这是我在运行Ant任务后意识到的,它返回了超过2000条违反该规则的信息! 通常在完全没有return语句的void方法上。

这种XPath的工作原理比原始方法简单,并且突出显示了return语句本身,而不是方法,这可能比我最初强调方法的意图要好:

//MethodDeclaration[not(ResultType/Type)]//ReturnStatement

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM