マリウス:
私が持っているViewState
多くのパラメータを持つコンストラクタを持つPOJOクラスを。問題は、PMDが投げされていることであるExcessiveParameterList
彼らに違反し。
今、私はで終わるすべてのクラスのためにこの違反を抑止しようとしているViewState.java
(例えば中DashboardViewState.java
)。私は自分にこれを追加しましたrules-pmd.xml
:
<rule ref="category/java/design.xml/ExcessiveParameterList">
<properties>
<!--Ignore ExcessiveParameterList on ViewState classes -->
<property name="violationSuppressXPath" value="//ClassOrInterfaceDeclaration['*ViewState.java']"/>
</properties>
</rule>
問題は、これがに対するすべての違反を抑制していないということですExcessiveParameterList
どのクラスに関係なく。何が私が間違っているのでしょうか?
oowekyala:
これは、の複製であるこの質問誰もが私の答えをupvotedないので、私は重複としてこれにフラグをすることはできませんが、。
参照https://stackoverflow.com/a/56460327/6245827をあなたの表現は、ルールのすべての違反を抑制する理由の詳細については。
ここでの解決策をテストすることです@Image
ClassOrInterfaceDeclarationの属性を、およびない使用//
ではなく、ancestor
チェック:
./ancestor::ClassOrInterfaceDeclaration[contains(@Image, 'ViewState')]
あなたがやってに限られているので、XPath 1.0のは、正規表現をサポートしていないcontains
ようにここにチェックを、または模倣ends-with
で関数をsubstring
で説明のように、この答え