CheckStyle IDEA使用抑制文件进行自定义检查

时间:2015-07-01 01:51:40

标签: checkstyle intellij-plugin

我有一个带有自定义检查的maven repo,我希望所有其他maven repos依赖。我想在我的一个repos中禁止检查某些生成的代码。我可以通过两种方式设置抑制文件:

  1. 在自定义检查仓库中有抑制文件,然后在自定义检查样式xml中指定SuppressionFilter:

    <module name="SuppressionFilter">
       <property name="file" value="${samedir}/checkstyle_suppressions.xml"
       default="src/main/resources/checkstyle_suppressions.xml"/>
    </module>
    
  2. 然后在repo的pom.xml文件的maven插件部分中,我要运行自定义checkstyle:

        <suppressionsLocation>checkstyle_suppressions.xml</suppressionsLocation>
        <suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
    
    1. 不要将SuppressionFilter部分放在自定义checkstyle xml中。为repo进行相同的pom.xml设置以进行检查。抑制文件可以放在要检查的仓库的本地。
    2. 这两种方法都可以使用命令行“mvn clean validate”。但是它们都不适用于Intellij的CheckStyle IDEA插件。 Intellij插件抱怨它找不到上面第一种方法的抑制文件。

      如果他们不需要,我不想强​​制每个repo都有一个抑制文件。我想知道是否有一种方法可以使CheckStyle IDEA的抑制工作,而不必拥有相同抑制文件的多个副本(自定义检查仓库中有1个,本地仓库中有1个)。

      谢谢!

1 个答案:

答案 0 :(得分:3)

插件使用的逻辑是

  • 文件路径是否已解决?
  • 文件路径是否相对于规则文件存在?
  • 文件路径是否相对于模块内容根,模块文件或项目基目录存在?

如果没有,它会放弃。所以有两种可能性:

  • 逻辑中存在错误。请在GitHub上提出一个问题。
  • 它不适合您的用例。在GitHub上提出一个功能特性,举例说明如何重现问题,以及如何根据需要改变分辨率。

如果您感兴趣,可以使用https://github.com/jshiell/checkstyle-idea/blob/master/src/main/java/org/infernus/idea/checkstyle/model/ConfigurationLocation.java resolveAssociatedFile方法中的代码。