我正在维护一个已弃用某些公共静态字段的API。
CheckStyle大声抱怨这些,但我宁愿让它完全忽略它们,因为我已经通过将字段标记为已弃用来处理这个问题。
具体来说,库中有用于枚举的常量(public static final),但它们没有标记为final。支票样式会抱怨他们,但我不能不违反合同就把他们改成决赛。
我的计划是将它们标记为已弃用,然后稍后删除它们。但将它们标记为已弃用不会将它们从checkstyle报告中移除。
我有两种选择:
手动取消每条线的警告
这种方法不太灵活,因为每次换行时都必须保持抑制配置。但您可以单独处理每一个事件。
<suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/>
我不知道哪张支票是你的问题,所以你必须用正确的名字替换你的支票。YouC类将Java文件命名为Java文件,其中包含未编码的代码,但可以插入 .* 把它应用到每个文件。您的行是以逗号分隔的值列表,其中每个值都是一个整数或由整数表示的整数范围。
.*
使用注释通知checkStyle忽略警告
此解决方案允许您一次停用对所有不推荐使用的成员的检查。但你必须遵守严格的惯例。您必须添加 @deprecated 在最后一个位置对这些成员(可能已经做了什么)进行注释,因为这个过滤器有严格的行范围。
@deprecated
/** * @deprecated I don't like this anymore. */ public static String EXAMPLE = "example";
此解决方案需要在配置文件中进行更改。首先你必须添加 FileContentsHolder 小时候 TreeWalker .
FileContentsHolder
TreeWalker
<module name="TreeWalker"> ... <module name="FileContentsHolder"/> ... </module>
现在您可以配置 SuppressWithNearbyCommentFilter 哪个是 Checker 模块。
SuppressWithNearbyCommentFilter
Checker
<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,这将导致忽略这些检查。
checkFormat
commentFormat
influenceFormat
注意:EclipseCheckStyle插件删除了 文件内容文件夹 模块,当您用它的用户界面更改配置时,不能使用它。
文件内容文件夹