簡體   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