java - 用于多项目设置的 Spotbugs 配置

标签 java gradle spotbugs

我有一个多项目 Gradle 设置,如下所示:

RootProject
    |
    ---- ProjectA
    |
    ---- ProjectB
    |
    ---- ProjectC

我想将 SpotBugs 应用于我的所有项目。

在每个项目中执行以下操作都明确有效。

例如,ProjectAbuild.gradle 中的以下内容:

plugins {
  id 'com.github.spotbugs' version '1.6.9'
}

spotbugs {
    ignoreFailures = true
    effort = 'min'
    showProgress = true
    reportLevel = 'medium'
    // Only run spotbugs directly as too slow to run as CI.  
    // Will still run spotbugs when called like "gradlew spotbugsMain"
    sourceSets = []
}

tasks.withType(com.github.spotbugs.SpotBugsTask) {
  reports {
    xml.enabled = false
    html.enabled = true
  }
}

但是,我不想在所有项目的 build.gradle 文件中复制此代码。

如何将其提取到 RootProject 的构建文件中。

示例,在以下 block 内:

configure(subprojects.findAll {it.name != 'SomeProjectToIgnore'}) {
   // how to configure spotbugs here ?
}

按原样移动 block 是行不通的。

最佳答案

您可以通过以下方式在根项目的 build.gradle 中配置 Spotbug:

buildscript {
    repositories {
        maven { url 'maven repository url' }
    }

    dependencies {
        classpath group: 'gradle.plugin.com.github.spotbugs', name: 'spotbugs-gradle-plugin', version: '1.6.5'
    }
}

allprojects {

    apply plugin: 'com.github.spotbugs'

    dependencies {
        compileOnly group: 'com.github.spotbugs', name: 'spotbugs-annotations', version: '3.1.8'
        spotbugsPlugins group: 'com.h3xstream.findsecbugs', name: 'findsecbugs-plugin', version: '1.8.0'
    }

    spotbugs {
        toolVersion = '3.1.8'
        sourceSets = [ sourceSets.main ]
    }

}

关于java - 用于多项目设置的 Spotbugs 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585340/

相关文章:

java - 方法声明无效;需要返回类型吗?

java - Android InputStream 无法接收来自蓝牙 HC-05 的完整消息

java - 使用springboot和Caffeine缓存可以存储多少缓存?

java - 修复局部错误 - HRS_REQUEST_PARAMETER_TO_HTTP_HEADER

http - Servlet 反射跨站脚本漏洞

java - 存储数据的变量,可以被任何类访问

android - Gradle:为什么加运算符会导致欺骗字符串连接?

gradle - 如何排除资源文件使其不包含在.war中?

android - 在Android Studio中,如何配置gradle在创建签名发布APK时自动替换AdMob的AdUnitId

java - SpotBugs 是否报告了未在此处关闭资源的误报?