我们正在使用一些第三方框架,它有一个抛出异常的方法。我们无法改变这种行为。 PMD正在为该代码提供SignatureDeclareThrowsException
警告。
如何配置PMD以忽略特定包中的SignatureDeclareThrowsException
警告?
我的班级签名就像这样
package my.company.ui.listeners;
public class XYZListner extends Composer<Component> {
@Override
public void onCompose(Component comp) throws Exception {
super.onCompose(comp);
// my code
}
}
我想忽略所有类my.company.ui.listeners
包中的PMD警告。
根据@HairyFotr建议,我修改了strictexception.xml文件,并在规则SignatureDeclareThrowsException
中添加了以下内容。
<properties>
<property name="violationSuppressXPath" value="//PackageDeclaration/Name[starts-with(@Image, 'my.company.ui.listeners')]" />
</properties>
但它仍然没有忽略这些类。
答案 0 :(得分:0)
在规则集中,您可以使用exclude-pattern
标记排除特定路径。
<exclude-pattern>.*/path/to/third/party/framework/.*</exclude-pattern>
这将禁用指定路径模式的所有PMD警告,而不只是SignatureDeclareThrowsException
,但由于您无法更改此代码,我猜您对此不感兴趣这个包裹的任何警告。
如果您只想抑制此警告,则可以使用violationSuppressXPath
属性来执行此操作,您可以在规则集中包含此规则。找到规则并在其中添加属性(将third.party.framework
更改为实际的包名称):
<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException">
<properties>
<property name="violationSuppressXPath" value="//PackageDeclaration/Name[starts-with(@Image, 'third.party.framework')]" />
</properties>
</rule>