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

时间:2012-05-17 17:35:54

标签: java eclipse xpath pmd

我正在尝试创建一个自定义规则,用于标记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时,它不会标记我期望的方法,即符合上述描述的方法(void方法)包含回报)。

任何人都有任何想法,问题可能在这里?我的XPath有什么问题,还是其他什么东西?

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

谢谢, 克里斯

2 个答案:

答案 0 :(得分:0)

这是您使用的确切XPath吗?它没有很好地形成。 (它缺少一个紧密的paren。)我建议编写测试工具来测试独立于PMD的xpath。您可以在Eclipse中为类生成AST(或者我认为是独立的),因此您可以使用XML来运行它。

答案 1 :(得分:0)

好的,解决了这个问题。 XPath逻辑是错误的,我在运行Ant任务后意识到它返回> 2000违反此规则!主要是在void方法上,根本没有return语句。

这个XPath工作,比原来的更简单,并突出显示return语句本身,而不是方法,这可能比我突出显示方法的初衷更好:

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