[英]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.