代码之家  ›  专栏  ›  技术社区  ›  Allain Lalonde

我可以为不推荐使用的方法和类禁用CheckStyle投诉吗?

  •  5
  • Allain Lalonde  · 技术社区  · 15 年前

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

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

    具体来说,库中有用于枚举的常量(public static final),但它们没有标记为final。支票样式会抱怨他们,但我不能不违反合同就把他们改成决赛。

    我的计划是将它们标记为已弃用,然后稍后删除它们。但将它们标记为已弃用不会将它们从checkstyle报告中移除。

    1 回复  |  直到 15 年前
        1
  •  8
  •   Christian Strempfer    15 年前

    我有两种选择:

    1. 手动取消每条线的警告

      这种方法不太灵活,因为每次换行时都必须保持抑制配置。但您可以单独处理每一个事件。

      <suppress checks="YOURCHECK" files=".*YOURCLASS\.java" lines="YOURLINES"/>
      

      我不知道哪张支票是你的问题,所以你必须用正确的名字替换你的支票。YouC类将Java文件命名为Java文件,其中包含未编码的代码,但可以插入 .* 把它应用到每个文件。您的行是以逗号分隔的值列表,其中每个值都是一个整数或由整数表示的整数范围。

    2. 使用注释通知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,这将导致忽略这些检查。

    注意:EclipseCheckStyle插件删除了 文件内容文件夹 模块,当您用它的用户界面更改配置时,不能使用它。