如何在 IDEA 中从 Gradle 设置 checkstyle 配置

How to set checkstyle configuration from Gradle in IDEA

我在 IDEA 中使用 Checkstyle 插件。我想为我的不同模块设置不同的 checkstyle 配置。我正在使用 gradle 作为构建工具版本 4- 我想编写一个任务来修改模块的相应 .iml 文件。 知道怎么做吗?

我第一次尝试修改iml文件查看here

apply plugin: 'idea'


task setCheckStylePluginSettings {
    group = "Idea"
    description = "Copies CheckStyle plugin settings to Idea workspace."

    println "Step 1."
    idea.module.iml {
    withXml {xmlProvider ->
        // Get root node.
        println "Step 2."
        def project = xmlProvider.asNode()
        }
    }
 }

但是,我一开始就卡住了,我什至看不到打印在控制台上的 步骤 2

IntelliJ 中的 "module" 是到 Gradle 中 SourceSet 的一对一映射,假设您在导入项目时选中了 "Create separate modules per source set" 选项。

默认情况下,Checkstyle 插件会为添加到构建中的每个源集添加任务。因此,当您应用 java 插件时,您应该已经拥有任务 checkstyleMaincheckstyleTest。这些任务正是您要找的。

现在,要自定义它们,请在您的 build.gradle 中像这样配置它们:

checkstyleMain {
    configFile = file("${rootDir}/checkstyle/main.xml")
}

checkstyleTest {
    configFile = file("${rootDir}/checkstyle/test.xml")
}

这假设您在 ${rootDir}/checkstyle/ 的项目中有不同的 Checkstyle 配置文件。

这样问题就解决了。我已经尝试了 Thomas Jansen 在这个 .

中提出的解决方案

但我会提供更多有关如何操作的信息。

为了给不同的源集提供不同的checkstyle模块,你需要在模块中定义id标签。如下所示:

  <module name="ConstantName">
     <property name="id" value="ConstantNameMain"/>
     <property name="severity" value="error"/>
     <property name="applyToPrivate" value="false"/>
     <property name="format" value="^[A-Z][A-Za-z0-9]*(_[A-Za-z0-9]+)*$"/>
  </module>
  <module name="ConstantName">
     <property name="id" value="ConstantNameTest"/>
     <property name="severity" value="error"/>
     <property name="applyToPrivate" value="false"/>
     <property name="format" value="^[A-Z][A-Za-z0-9]*(_[A-Z0-9]+)*$"/>
  </module>

然后我们为 suppression.xml 定义 SuppressionFilter 模块,它可以与您的 checkstyle.xml。一件重要的事情是将 SuppressionFilter 模块定位为 Checker 模块。

<module name="Checker">
  <property name="severity" value="warning"/>
   <module name="SuppressionFilter">
       <property name="file" value="./suppressions.xml"/>
   </module>
  <module name="TreeWalker">
  .
  .
  .
  </module>
</module>

然后,我们定义suppression.xml文件如下:

<suppressions>
    <!-- >Test sources suppressions</!-->
    <suppress files="[\/]src[\/]test[\/].*" id="ConstantNameMain" />

    <!-- >Main sources suppressions</!-->
    <suppress files="[\/]src[\/]main[\/].*" id="ConstantNameTest" />
</suppressions> 

Aaaaa 最后,配置您的 Checkstyle-IDEA 插件,从 Settings>Editor>Inspections>Checkstyle 激活实时扫描,您就完成了。