gpt4 book ai didi

deprecated - 我可以禁用对已弃用的方法和类的 CheckStyle 投诉吗?

转载 作者:行者123 更新时间:2023-12-04 17:59:29 26 4
gpt4 key购买 nike

我正在维护一个已弃用一些公共(public)静态字段的 API。

CheckStyle 大声提示这些,但我宁愿让它完全忽略它们,因为我已经通过将字段标记为已弃用来处理这个问题。

具体来说,该库具有用于枚举的常量(公共(public)静态最终),但它们未标记为最终的。 CheckStyle 会提示它们,但我不能在不违反契约(Contract)的情况下将它们更改为 final。

我的计划是将它们标记为已弃用,然后再删除它们。但是将它们标记为已弃用不会将它们从 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 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模块,当您使用其用户界面更改配置时,您不得使用它。

    关于deprecated - 我可以禁用对已弃用的方法和类的 CheckStyle 投诉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1546685/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com