Checkstyle用于不同文件的不同规则

问题描述 投票:10回答:1

我有一个文件,其中包含该项目的规则。我希望单元测试方法的名称中可以带有下划线。像myMethod_should_call_someClass_someMehod。目前,我有一种配置,该配置适用于项目中的所有文件。

我的问题是可以某种方式配置检查样式,所以,例如,我为所有以*Test.java结尾的文件指定特定规则。

当前,我发现的唯一解决方案是提供SuppressionFilter,并排除所有以*Test.java结尾的文件。但是有办法我可以为测试文件提供具有不同格式的MethodNameCheck模块吗?

checkstyle filefilter
1个回答
20
投票

您必须两次定义MethodName检查,一个实例检查常规方法,另一实例检查测试方法。注意id属性,我们将使用该属性将检查限制在它们各自的域中:

<module name="MethodName">
    <property name="id" value="MethodNameRegular"/>
    <property name="format" value="^[a-z][a-zA-Z0-9]*$"/>
</module>
<module name="MethodName">
    <property name="id" value="MethodNameTest"/>
    <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/>
</module>

接下来,必须取消对测试方法的常规检查,反之亦然。仅当您具有区分两种类的标准时,此方法才有效。我使用Maven directory convention,它将常规类放在src/main下,将测试类放在src/test下。这是抑制过滤器文件:

<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN"
    "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files="[\\/]src[\\/]test[\\/].*" id="MethodNameRegular" />
    <suppress files="[\\/]src[\\/]main[\\/].*" id="MethodNameTest" />
</suppressions>
© www.soinside.com 2019 - 2024. All rights reserved.