我有一個(gè)多模塊Maven項(xiàng)目,當(dāng)前正在運(yùn)行Checkstyle,PMD和Findbugs。在某些類中,我有帶有注釋的方法。這些注釋具有一個(gè)參數(shù),該參數(shù)的值需要遵循某個(gè)正則表達(dá)式。有沒有一種簡單的方法來查找此參數(shù)值并使用前面提到的任何工具來驗(yàn)證它是否遵循該模式。我嘗試為Checkstyle編寫自定義檢查。但是,由于Checkstyle僅逐行顯示,因此無法驗(yàn)證使用最終字符串設(shè)置的參數(shù)。我環(huán)顧四周,但找不到任何東西。非常感謝你。
1 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
就在這里。對于PMD的XPath規(guī)則來說,這似乎是一個(gè)很好的例子。
您可以在AST上編寫XPath表達(dá)式,以匹配不符合您的定義的注釋。另外,設(shè)計(jì)器對于幫助您開發(fā)和測試規(guī)則非常有用。
因此,您可能可以編寫如下內(nèi)容:
//Annotation[pmd-java:typeIs('java.lang.SuppressWarnings') and .//MemberValue//Literal[not(matches(@Image, '[0-9]+'))]]
將匹配所有@SuppressWarnings
具有不匹配值的注釋[0-9]+
。如果需要,您可以進(jìn)一步優(yōu)化它以查找特定鍵的值。
一旦可以使用XPath,您只需將其寫入規(guī)則集,即可開始在您的代碼庫上運(yùn)行它。
請注意,示例中給出的XPath是XPath 2.0,因?yàn)樗褂昧?code>matches舊版本中不提供的功能。PMD支持XPath 1.0、1.0兼容模式和2.0,默認(rèn)為1.0,但在規(guī)則定義中可以覆蓋
添加回答
舉報(bào)
0/150
提交
取消