具有测试注释的方法的java Ignore PMD规则
我将PMD用于包含^{Exception
class MockMvc {
public ResultActions perform(RequestBuilder requestBuilder) throws Exception {}
}
这种用法会导致PMD错误-SignatureDeclareThrowsException。我想取消对所有@Test
方法的检查。因此,我试图遵循Stackoverflow answer,但配置更改没有效果
<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException" >
<properties>
<!-- Ignore @Test methods -->
<property name="violationSuppressXPath" value="
//ClassOrInterfaceBodyDeclaration/Annotation/MarkerAnnotation//Name[@Image='Test']" />
</properties>
</rule>
我怎样才能做到呢
抽象语法树显示了测试方法的以下子树
> ClassOrInterfaceBodyDeclaration
> Annotation
> MarkerAnnotation
> Name:Test
> MethodDeclaration:(public)
> ResultType:(void)
...
# 1 楼答案
测试方法的具体问题可以在具有
IgnoreJUnitCompletely
属性的版本中解决在PMD 6之前,必须从
typeresolution.xml
获取规则,但不能从strictexception.xml
获取规则但它没有回答关于
violationSuppressXPath
问题的问题# 2 楼答案
从PMD documentation开始,JUnit4Test应该使用TestAnnotation部分
建议
Annotation//Name[pmd-java:typeIs('org.junit.Test')]
就足够了