All*_*nde 5 checkstyle deprecated
我正在维护一个已弃用某些公共静态字段的API.
CheckStyle大声抱怨这些,但我宁愿让它完全忽略它们,因为我通过将字段标记为已弃用来处理问题.
具体来说,库具有枚举常量(public static final),但它们没有标记为final.CheckStyle会抱怨他们,但我不能在不违反合同的情况下将其改为最终版.
我的计划是将它们标记为已弃用,然后再将其删除.但是将它们标记为已弃用并不会将它们从CheckStyle报告中删除.
我有两种选择:
手动抑制每一行的警告
这种方法不太灵活,因为每次换线时都必须保持抑制配置.但您可以单独处理每个事件.
<suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/>
Run Code Online (Sandbox Code Playgroud)
我不知道哪个检查导致您的问题,所以您必须用正确的名称替换YOURCHECK.YOURCLASS命名java文件,其中包含已弃用的代码,但您可以插入.*以将其应用于每个文件.YOURLINES是以逗号分隔的值列表,其中每个值都是整数或整数范围,用整数整数表示.
使用注释建议checkstyle忽略警告
此解决方案允许您一次停用对所有已弃用成员的检查.但你必须遵循严格的惯例.您必须@deprecated在最后一个位置向这些成员添加注释(您可能已经执行的操作),因为此过滤器具有严格的行范围.
/**
* @deprecated I don't like this anymore.
*/
public static String EXAMPLE = "example";
Run Code Online (Sandbox Code Playgroud)
此解决方案需要在配置文件中进行更改.首先,您必须添加FileContentsHolder为孩子TreeWalker.
<module name="TreeWalker">
...
<module name="FileContentsHolder"/>
...
</module>
Run Code Online (Sandbox Code Playgroud)
现在您可以配置SuppressWithNearbyCommentFilter哪个是Checker模块的一部分.
<module name="Checker">
...
<module name="SuppressWithNearbyCommentFilter">
<property name="commentFormat" value=".*deprecated.*"/>
<property name="checkFormat" value=".*"/>
<property name="influenceFormat" value="2"/>
</module>
...
</module>
Run Code Online (Sandbox Code Playgroud)
如果您决定仅忽略特定检查,请调整该checkFormat属性.或者,如果要使用其他注释,请更改commentFormat属性.但是,设置influenceFormat正确的值非常重要.它告诉checkstyle在评论之后的多少行中忽略这些检查.
PS:请注意FileContentsHolder,当您使用其用户界面更改配置时,Eclipse CheckStyle插件会删除该模块,因此您不能使用它.
| 归档时间: |
|
| 查看次数: |
3371 次 |
| 最近记录: |