我正在维护一个已弃用某些公共静态字段的 API。
CheckStyle 大声抱怨这些,但我宁愿让它完全忽略它们,因为我已经通过将字段标记为已弃用来处理问题。
具体来说,该库具有用于枚举的常量(公共静态最终),但它们没有标记为最终的。 CheckStyle 会抱怨它们,但我不能在不违反合同的情况下将它们更改为最终版本。
我的计划是将它们标记为已弃用,然后删除它们。但将它们标记为已弃用并不会将它们从 CheckStyle 报告中删除。
我有两个选择给你:
-
手动抑制每行的警告
这种方法不太灵活,因为每次转移线路时都必须维护抑制配置。但您可以单独处理每个事件。
<suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/>
我不知道哪个检查导致了您的问题,因此您必须将 YOURCHECK 替换为正确的名称。 YOURCLASS 命名 java 文件,其中包含已弃用的代码,但您可以插入.*
将其应用到每个文件。 YOURLINES 是一个以逗号分隔的值列表,其中每个值都是一个整数或由整数-整数表示的整数范围。
-
使用注释建议 checkstyle 忽略警告
此解决方案允许您立即停用对所有已弃用成员的检查。但你必须遵循严格的约定。你必须添加一个@deprecated
在最后一个位置对这些成员进行评论(您可能已经做了什么),因为此过滤器具有严格的行范围。
/**
* @deprecated I don't like this anymore.
*/
public static String EXAMPLE = "example";
此解决方案需要更改您的配置文件。首先你必须添加FileContentsHolder
作为一个孩子TreeWalker
.
<module name="TreeWalker">
...
<module name="FileContentsHolder"/>
...
</module>
现在您可以配置SuppressWithNearbyCommentFilter
这是Checker
module.
<module name="Checker">
...
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value=".*deprecated.*"/>
<property name="checkFormat" value=".*"/>
<property name="influenceFormat" value="2"/>
</module>
...
</module>
如果您决定仅忽略特定检查,请调整checkFormat
属性。或者,如果您想使用其他注释,请更改commentFormat
属性。但这非常重要,你要设置influenceFormat
到正确的值。它告诉 checkstyle 在注释后的多少行内将忽略这些检查。
P.S.:请注意,Eclipse CheckStyle 插件删除了FileContentsHolder
模块,当您更改其用户界面的配置时,因此不得使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)