【问题标题】:checkstyle disable specific checkcheckstyle 禁用特定检查
【发布时间】:2014-01-25 23:50:24
【问题描述】:

我正在使用 Ant 并希望为所有包、源等启用 checkstyle。理想情况下,它就像在我现有的构建目标上添加对 checkstyle 的依赖一样简单,但由于违规而破坏了构建。我不想禁用使用注释样式,因为这意味着更改源文件。

我想做的禁用是一种特定类型的检查(例如,由于现有代码库中数百万条违规行导致尾随空格)

有没有办法配置 checkstyle 来做到这一点?

【问题讨论】:

    标签: ant checkstyle


    【解决方案1】:

    您可以通过在运行Checkstyle Ant task 时指定的 Checkstyle 配置文件中添加或删除检查来启用和禁用检查。 Checkstyle 完全运行配置 XML 中存在的检查(例如 Sun Checks)。

    不可能禁用配置中存在的检查:

    <module name="EmptyBlock">
        <property name="enabled" value="false" />   <!-- won't work -->
    </module>
    

    也不可能告诉 Checkstyle 运行“除了 EmptyBlock 之外的所有检查”,因为没有“所有检查”之类的东西 - 可用检查的集合完全取决于配置 XML .但是,它可能是 Checkstyle 工具的一个很好的补充,可以支持禁用如上所示的检查,因为这将使不使用配置 GUI 的人的生活更轻松。

    如果您不希望 Checkstyle 违规导致构建失败,请将 Checkstyle Ant 任务的 failOnViolation 参数设置为 false。您还可以使用maxWarningsmaxErrors 参数来设置在构建中断之前可以容忍多少警告或错误的阈值。

    哪些违规被视为错误,哪些被视为警告取决于您指定的 Checkstyle 配置 (docs) 中单个检查的 severity 属性。默认严重性为“警告”。

    【讨论】:

    • 谢谢,我想那时我对配置的工作方式更加困惑。具体来说,将指定 `' 意味着 checkstyle 将只运行 3 个检查,还是意味着 checkstyle 将默认运行所有启用的检查,但对于列出的 3 个,如果它们被指定,使用 xml 中的任何配置值? (例如警告严重性)
    • 它只会运行您指定的检查,在您的示例中:三个检查。 “警告”是默认严重性。
    • 是的,我也这么认为。这真的很不幸,因为运行 alll 会很棒,但是通过说 &lt;module name="EmptyBlock"&gt;&lt;property name="enabled" value="false" /&gt;&lt;/module&gt; 进行一项测试
    • 嗯,Checkstyle 只是一个运行检查的框架,所以没有所谓的“所有检查”。但在您的情况下,您可以采用您正在运行的配置(例如Sun Checks),并从中删除 EmptyBlock。这会给你预期的效果。当您切换到另一个配置时,只需确保它也不包含 EmptyBlock
    • 感谢您签到。如果您将答案从 Sure 编辑为 简短的回答是否定的,因为没有所有检查 ,我会接受我的问题的答案。作为“运行检查的框架”不应成为无法通过可选的非崩溃配置结构禁用特定检查的理由。也就是说,您的回答将回答我的问题,并且 Checkstyle 无疑是一个很棒的框架 :)
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多