java - PMD Gradle 插件中的两层规则集
问题描述
我想在我的 gradle 项目中设置 PMD 以具有两个规则集,一个是强制性的并且会破坏构建,另一个是只报告但让构建继续。这可能吗?
解决方案
绝对有可能!
默认情况下,PMD 插件将为每个源集设置 1 个任务来运行。您可以为您的 2 个规则之一进行配置:
pmd {
ignoreFailures = false
ruleSets = [] // Remove defaults
ruleSetFiles = files("path/to/mandaroty/ruleset.xml")
}
然后,我们需要为非强制性规则设置一组新的独立任务,类似于...</p>
def sourceSets = convention.getPlugin(org.gradle.api.plugins.JavaPluginConvention).sourceSets
sourceSets.all { ss ->
def taskName = ss.getTaskName('optionalPmd', null)
project.tasks.register(taskName) { task ->
task.description = "Run OPTIONAL PMD analysis for " + ss.name + " classes"
task.source = ss.allJava
task.conventionMapping.map("classpath", () -> ss.output.plus(ss.compileClasspath))
task.ignoreFailures = true // override the value previously set
task.ruleSetFiles = files("path/to/optional/ruleset.xml") // override the value previously set
}
// Have the optional analysis run during "check" phase
project.tasks.named(org.gradle.api.plugins.JavaBasePlugin.CHECK_TASK_NAME) { checkTask ->
checkTask.dependsOn taskName
}
}
我是认真写的,所以可能需要做一些调整……</p>
推荐阅读
- windows - 创建一个命令行参数 .bat 文件,该文件可以更改特定目录中的所有 .exe 文件兼容性设置
- r - 将函数应用于嵌套字段时,data.table 表现不佳
- spring-boot - 如何解决 springboot_2.2.6-RELEASE 和 jasypt-spring-boot-starter_3.0.2 之间的冲突
- git - 如何在 git repo 中插入重新发现的备份文件
- scala - 使用 MLlib 缩放数据集
- java - JProfiler9 无法执行 jpenable
- python - Python抓取编码excel公式
- php - 错误 - '试图访问 null 类型值的数组偏移量'
- java - 没有找到用于分隔符 text/html;charset=UTF-8 的插件!注册插件:[org.springframework.hateoas.mediatype.hal.HalLinkDiscoverer@
- java - JVM中操作数栈的作用是什么?