java - PMD Gradle插件中的两层规则集

标签 java gradle pmd

我想在我的gradle项目中设置PMD,使其具有两个规则集,一个规则集是强制性的,可以中断构建,而另一个规则集只是报告但可以继续构建。这可能吗?

最佳答案

绝对有可能!
默认情况下,PMD插件将为每个源集设置要运行的1个任务。您可以将其配置为您的2条规则中的一项:

pmd {
  ignoreFailures = false
  ruleSets = [] // Remove defaults
  ruleSetFiles = files("path/to/mandaroty/ruleset.xml")
}
然后,我们需要为非强制性规则设置一组新的独立任务,大致遵循以下原则……
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
  }
}
我正在写这篇文章,所以可能需要一些调整…

关于java - PMD Gradle插件中的两层规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63620139/

相关文章:

java - 当 Android arrayadapter 滚动时如何收到通知?

java - 在Java中,如何创建一个像KeyListener这样的类,如果你扩展它,它会自动调用方法?

android - 带有Gradle的SVN和Android

gradle - 如何在 Gradle 中安装/运行监视任务

findbugs - 在增量构建中检查样式、PMD、FindBugs

java - 如何将我的旧 JFrame 转换为 JPanel,以及如何使其像我使用 JFrame 时一样实际工作

Java定时器和绘图动画

android - 升级build tools版本android studio有什么优缺点

java - Sonarqube 升级到 4.5.4 后 PMD 插件失败

java - PMD 工具是否可以选择显示违规计数的差异(代码更改之前和之后)?