如何禁用特定代码行的特定checkstyle规则?

我在项目中配置了一个checkstyle验证规则,该规则禁止使用超过3个输入参数来定义类方法。该规则适用于我的类,但有时我必须扩展第三方类,而第三方类则不遵守此特定规则。

是否有可能指示“ checkstyle”某种方法应以静默方式忽略?

回答:

在http://checkstyle.sourceforge.net/config_filters.html#SuppressionCommentFilter上检查supressionCommentFilter的使用。你需要将模块添加到你的checkstyle.xml中

<module name="SuppressionCommentFilter"/>

它是可配置的。因此,你可以在代码中添加注释以关闭checkstyle(在各个级别),然后通过在代码中使用注释再次将其重新打开。例如

//CHECKSTYLE:OFF

public void someMethod(String arg1, String arg2, String arg3, String arg4) {

//CHECKSTYLE:ON

甚至更好,请使用以下经过调整的版本:

<module name="SuppressionCommentFilter">

<property name="offCommentFormat" value="CHECKSTYLE.OFF\: ([\w\|]+)"/>

<property name="onCommentFormat" value="CHECKSTYLE.ON\: ([\w\|]+)"/>

<property name="checkFormat" value="$1"/>

</module>

它允许你关闭对特定代码行的特定检查:

//CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions

catch (Exception e)

//CHECKSTYLE.ON: IllegalCatch

注意:你还必须添加FileContentsHolder

<module name="FileContentsHolder"/>

也可以看看

<module name="SuppressionFilter">

<property name="file" value="docs/suppressions.xml"/>

</module>

在SuppressionFilter同一页面上的部分下,你可以关闭对模式匹配资源的单独检查。

因此,如果你在checkstyle.xml中:

<module name="ParameterNumber">

<property name="id" value="maxParameterNumber"/>

<property name="max" value="3"/>

<property name="tokens" value="METHOD_DEF"/>

</module>

你可以使用以下命令在抑制XML文件中将其关闭:

<suppress id="maxParameterNumber" files="YourCode.java"/>

现在,Checkstyle 5.7中可用的另一种方法是通过@SuppressWarningsjava注释抑制冲突。为此,你将需要在配置文件中添加两个新模块(SuppressWarningsFilterSuppressWarningsHolder):

<module name="Checker">

...

<module name="SuppressWarningsFilter" />

<module name="TreeWalker">

...

<module name="SuppressWarningsHolder" />

</module>

</module>

然后,在你的代码中,你可以执行以下操作:

@SuppressWarnings("checkstyle:methodlength")

public void someLongMethod() throws Exception {

或者,对于多重抑制:

@SuppressWarnings({"checkstyle:executablestatementcount", "checkstyle:methodlength"})

public void someLongMethod() throws Exception {

注意: “ checkstyle:”前缀是可选的(但建议使用)。根据文档,参数名称必须全部小写,但实践表明任何大小写都可行。

以上是 如何禁用特定代码行的特定checkstyle规则? 的全部内容, 来源链接: utcz.com/qa/431658.html

回到顶部