如何在 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
插件时,您应该已经拥有任务 checkstyleMain
和 checkstyleTest
。这些任务正是您要找的。
现在,要自定义它们,请在您的 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 激活实时扫描,您就完成了。
我在 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
插件时,您应该已经拥有任务 checkstyleMain
和 checkstyleTest
。这些任务正是您要找的。
现在,要自定义它们,请在您的 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 激活实时扫描,您就完成了。