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