【问题标题】:Checkstyle suppressions: what am I doing wrong?Checkstyle抑制:我做错了什么?
【发布时间】:2012-07-07 02:02:25
【问题描述】:

我在命令行上使用 checkstyle。不在 Maven 或 ANT 中。

我定义了一个suppressions.xml 文件并从我的-c CheckstyleConfig.xml 中引用它。

Checkstyle 运行(没有解析错误),但它没有抑制任何内容。

我正在尝试让 Checkstyle 忽略 .class 文件。这是我的suppression.xml 文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suppressions PUBLIC
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
 <suppress checks="." files="(.*\.class)"/>
</suppressions>

关于我做错了什么有什么想法吗? Checkstyle 仍在处理.class 文件。

谢谢。

【问题讨论】:

    标签: regex checkstyle


    【解决方案1】:

    Checkstyle 不适用于类文件,它无法解析它们。 Checkstyle 适用于 Java 源代码,即以“.java”结尾的文件。

    所以,问题在于你的正则表达式来抑制错误。压制应该是:

    <suppress checks="." files="(.*\.java)"/>
    

    【讨论】:

      【解决方案2】:

      Checkstyle 适用于您提供的任何内容。默认的 eclipse-cs 安装只会为其提供 Java 文件和属性文件,但由于您是从命令行运行的,因此您必须将 .class 文件排除在检查或抑制警告之外。

      最好将.class 文件排除在检查之外(这样Checkstyle 永远不会看到它们),因为这样可以节省您的时间。

      但如果你想抑制警告,你也可以这样做。 suppressions.xml 中的 files 正则表达式是贪婪的,因此 .* 已经涵盖了整个文件名,并且您示例中的模式永远不会匹配。试试这个语法(禁止所有 .class 文件):

      <suppressions>
          <suppress checks=".*" files="\.class$" />
      </suppressions>
      

      【讨论】:

      • 顺便说一句,在 checks 参数中使用 ..* 并不重要。两种变体都匹配所有检查,只是方式不同。
      • 感谢您抽出宝贵时间回答此问题。这个问题与之前工作的一个项目有关。那份工作 SUUUUUUUUUUUCKED(洛克希德马丁公司)。如果我记得,我解决问题的方法是,我包装了一个 PERL 脚本,只将 java 文件发送到 CS。
      • 是的,事实上 Checkstyle 会检查你给它的任何东西。因此,如果你给它类文件,你就可以为你的脚本选择正确的解决方案。不向 CS 提供错误的文件比让 CS 抑制警告要好。我会调整我的答案 - 到目前为止还没有,因为我认为这个问题已经死了。 :-)
      猜你喜欢
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2021-04-19
      • 2017-03-13
      相关资源
      最近更新 更多