xref: /aosp_15_r20/external/nullaway/build.gradle (revision f50c306653bc89b8210ce6c9e0b0b44fc134bc03)
1*f50c3066SAndroid Build Coastguard Worker/*
2*f50c3066SAndroid Build Coastguard Worker * Copyright (C) 2017. Uber Technologies
3*f50c3066SAndroid Build Coastguard Worker *
4*f50c3066SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*f50c3066SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*f50c3066SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*f50c3066SAndroid Build Coastguard Worker *
8*f50c3066SAndroid Build Coastguard Worker *    http://www.apache.org/licenses/LICENSE-2.0
9*f50c3066SAndroid Build Coastguard Worker *
10*f50c3066SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*f50c3066SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*f50c3066SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*f50c3066SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*f50c3066SAndroid Build Coastguard Worker * limitations under the License.
15*f50c3066SAndroid Build Coastguard Worker */
16*f50c3066SAndroid Build Coastguard Worker
17*f50c3066SAndroid Build Coastguard Workerimport net.ltgt.gradle.errorprone.CheckSeverity
18*f50c3066SAndroid Build Coastguard Workerbuildscript {
19*f50c3066SAndroid Build Coastguard Worker    repositories {
20*f50c3066SAndroid Build Coastguard Worker        mavenCentral()
21*f50c3066SAndroid Build Coastguard Worker        google() // For Gradle 4.0+
22*f50c3066SAndroid Build Coastguard Worker    }
23*f50c3066SAndroid Build Coastguard Worker
24*f50c3066SAndroid Build Coastguard Worker    dependencies {
25*f50c3066SAndroid Build Coastguard Worker        classpath 'com.android.tools.build:gradle:7.3.0'
26*f50c3066SAndroid Build Coastguard Worker        classpath 'com.vanniktech:gradle-maven-publish-plugin:0.25.3'
27*f50c3066SAndroid Build Coastguard Worker    }
28*f50c3066SAndroid Build Coastguard Worker}
29*f50c3066SAndroid Build Coastguard Workerplugins {
30*f50c3066SAndroid Build Coastguard Worker    id "com.diffplug.spotless" version "6.23.3"
31*f50c3066SAndroid Build Coastguard Worker    id "net.ltgt.errorprone" version "3.1.0" apply false
32*f50c3066SAndroid Build Coastguard Worker    id "com.github.johnrengelman.shadow" version "8.1.1" apply false
33*f50c3066SAndroid Build Coastguard Worker    id "me.champeau.jmh" version "0.7.1" apply false
34*f50c3066SAndroid Build Coastguard Worker    id "com.github.ben-manes.versions" version "0.50.0"
35*f50c3066SAndroid Build Coastguard Worker    id "com.felipefzdz.gradle.shellcheck" version "1.4.6"
36*f50c3066SAndroid Build Coastguard Worker}
37*f50c3066SAndroid Build Coastguard Worker
38*f50c3066SAndroid Build Coastguard Workerrepositories {
39*f50c3066SAndroid Build Coastguard Worker    // to get the google-java-format jar and dependencies
40*f50c3066SAndroid Build Coastguard Worker    mavenCentral()
41*f50c3066SAndroid Build Coastguard Worker}
42*f50c3066SAndroid Build Coastguard Worker
43*f50c3066SAndroid Build Coastguard Workerapply from: "gradle/dependencies.gradle"
44*f50c3066SAndroid Build Coastguard Worker
45*f50c3066SAndroid Build Coastguard Workersubprojects { project ->
46*f50c3066SAndroid Build Coastguard Worker    project.apply plugin: "net.ltgt.errorprone"
47*f50c3066SAndroid Build Coastguard Worker    project.dependencies {
48*f50c3066SAndroid Build Coastguard Worker        errorprone deps.build.errorProneCore
49*f50c3066SAndroid Build Coastguard Worker    }
50*f50c3066SAndroid Build Coastguard Worker    project.tasks.withType(JavaCompile) {
51*f50c3066SAndroid Build Coastguard Worker        dependsOn(installGitHooks)
52*f50c3066SAndroid Build Coastguard Worker        options.compilerArgs += [
53*f50c3066SAndroid Build Coastguard Worker            "-Xlint:deprecation",
54*f50c3066SAndroid Build Coastguard Worker            "-Xlint:rawtypes",
55*f50c3066SAndroid Build Coastguard Worker            "-Xlint:unchecked",
56*f50c3066SAndroid Build Coastguard Worker            "-Werror"
57*f50c3066SAndroid Build Coastguard Worker        ]
58*f50c3066SAndroid Build Coastguard Worker        options.errorprone {
59*f50c3066SAndroid Build Coastguard Worker            // disable warnings in generated code; AutoValue code fails UnnecessaryParentheses check
60*f50c3066SAndroid Build Coastguard Worker            disableWarningsInGeneratedCode = true
61*f50c3066SAndroid Build Coastguard Worker            // this check is too noisy
62*f50c3066SAndroid Build Coastguard Worker            check("StringSplitter", CheckSeverity.OFF)
63*f50c3066SAndroid Build Coastguard Worker            // https://github.com/google/error-prone/issues/3366
64*f50c3066SAndroid Build Coastguard Worker            check("CanIgnoreReturnValueSuggester", CheckSeverity.OFF)
65*f50c3066SAndroid Build Coastguard Worker            // turn up various checks
66*f50c3066SAndroid Build Coastguard Worker            check("WildcardImport", CheckSeverity.ERROR)
67*f50c3066SAndroid Build Coastguard Worker            check("MissingBraces", CheckSeverity.ERROR)
68*f50c3066SAndroid Build Coastguard Worker            check("TypeToString", CheckSeverity.ERROR)
69*f50c3066SAndroid Build Coastguard Worker            check("SymbolToString", CheckSeverity.ERROR)
70*f50c3066SAndroid Build Coastguard Worker            check("MultipleTopLevelClasses", CheckSeverity.ERROR)
71*f50c3066SAndroid Build Coastguard Worker            check("ClassName", CheckSeverity.ERROR)
72*f50c3066SAndroid Build Coastguard Worker            check("PackageLocation", CheckSeverity.ERROR)
73*f50c3066SAndroid Build Coastguard Worker            check("UnnecessaryAnonymousClass", CheckSeverity.ERROR)
74*f50c3066SAndroid Build Coastguard Worker            check("UnusedException", CheckSeverity.ERROR)
75*f50c3066SAndroid Build Coastguard Worker            // To enable auto-patching, uncomment the line below, replace [CheckerName] with
76*f50c3066SAndroid Build Coastguard Worker            // the checker(s) you want to apply patches for (comma-separated), and above, disable
77*f50c3066SAndroid Build Coastguard Worker            // "-Werror"
78*f50c3066SAndroid Build Coastguard Worker            // errorproneArgs.addAll("-XepPatchChecks:[CheckerName]", "-XepPatchLocation:IN_PLACE")
79*f50c3066SAndroid Build Coastguard Worker        }
80*f50c3066SAndroid Build Coastguard Worker    }
81*f50c3066SAndroid Build Coastguard Worker
82*f50c3066SAndroid Build Coastguard Worker    // Target JDK 8.  We need to use the older sourceCompatibility / targetCompatibility settings to get
83*f50c3066SAndroid Build Coastguard Worker    // the build to work on JDK 11+.  Once we stop supporting JDK 8, switch to using the javac "release" option
84*f50c3066SAndroid Build Coastguard Worker    tasks.withType(JavaCompile) {
85*f50c3066SAndroid Build Coastguard Worker        java.sourceCompatibility = "1.8"
86*f50c3066SAndroid Build Coastguard Worker        java.targetCompatibility = "1.8"
87*f50c3066SAndroid Build Coastguard Worker    }
88*f50c3066SAndroid Build Coastguard Worker
89*f50c3066SAndroid Build Coastguard Worker    tasks.withType(Test).configureEach {
90*f50c3066SAndroid Build Coastguard Worker        maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
91*f50c3066SAndroid Build Coastguard Worker    }
92*f50c3066SAndroid Build Coastguard Worker
93*f50c3066SAndroid Build Coastguard Worker    repositories {
94*f50c3066SAndroid Build Coastguard Worker        mavenCentral()
95*f50c3066SAndroid Build Coastguard Worker        google()
96*f50c3066SAndroid Build Coastguard Worker    }
97*f50c3066SAndroid Build Coastguard Worker
98*f50c3066SAndroid Build Coastguard Worker    // For some reason, spotless complains when applied to the jar-infer folder itself, even
99*f50c3066SAndroid Build Coastguard Worker    // though there is no top-level :jar-infer project
100*f50c3066SAndroid Build Coastguard Worker    if (project.name != "jar-infer") {
101*f50c3066SAndroid Build Coastguard Worker        project.apply plugin: "com.diffplug.spotless"
102*f50c3066SAndroid Build Coastguard Worker        spotless {
103*f50c3066SAndroid Build Coastguard Worker            java {
104*f50c3066SAndroid Build Coastguard Worker                googleJavaFormat()
105*f50c3066SAndroid Build Coastguard Worker            }
106*f50c3066SAndroid Build Coastguard Worker        }
107*f50c3066SAndroid Build Coastguard Worker    }
108*f50c3066SAndroid Build Coastguard Worker}
109*f50c3066SAndroid Build Coastguard Worker
110*f50c3066SAndroid Build Coastguard Workerspotless {
111*f50c3066SAndroid Build Coastguard Worker    predeclareDeps()
112*f50c3066SAndroid Build Coastguard Worker    groovyGradle {
113*f50c3066SAndroid Build Coastguard Worker        target '**/*.gradle'
114*f50c3066SAndroid Build Coastguard Worker        greclipse()
115*f50c3066SAndroid Build Coastguard Worker        indentWithSpaces(4)
116*f50c3066SAndroid Build Coastguard Worker        trimTrailingWhitespace()
117*f50c3066SAndroid Build Coastguard Worker        endWithNewline()
118*f50c3066SAndroid Build Coastguard Worker    }
119*f50c3066SAndroid Build Coastguard Worker}
120*f50c3066SAndroid Build Coastguard WorkerspotlessPredeclare {
121*f50c3066SAndroid Build Coastguard Worker    java { googleJavaFormat('1.18.1') }
122*f50c3066SAndroid Build Coastguard Worker    groovyGradle {
123*f50c3066SAndroid Build Coastguard Worker        greclipse()
124*f50c3066SAndroid Build Coastguard Worker    }
125*f50c3066SAndroid Build Coastguard Worker}
126*f50c3066SAndroid Build Coastguard Worker
127*f50c3066SAndroid Build Coastguard Workershellcheck {
128*f50c3066SAndroid Build Coastguard Worker    useDocker = false
129*f50c3066SAndroid Build Coastguard Worker    shellcheckBinary = "shellcheck"
130*f50c3066SAndroid Build Coastguard Worker    sourceFiles =
131*f50c3066SAndroid Build Coastguard Worker            fileTree(".") {
132*f50c3066SAndroid Build Coastguard Worker                include("**/*.sh")
133*f50c3066SAndroid Build Coastguard Worker            }
134*f50c3066SAndroid Build Coastguard Worker}
135*f50c3066SAndroid Build Coastguard Worker
136*f50c3066SAndroid Build Coastguard Worker////////////////////////////////////////////////////////////////////////
137*f50c3066SAndroid Build Coastguard Worker//
138*f50c3066SAndroid Build Coastguard Worker//  Google Java Format pre-commit hook installation
139*f50c3066SAndroid Build Coastguard Worker//
140*f50c3066SAndroid Build Coastguard Worker
141*f50c3066SAndroid Build Coastguard Workertasks.register('installGitHooks', Copy) {
142*f50c3066SAndroid Build Coastguard Worker    from(file('config/hooks/pre-commit-stub')) {
143*f50c3066SAndroid Build Coastguard Worker        rename 'pre-commit-stub', 'pre-commit'
144*f50c3066SAndroid Build Coastguard Worker    }
145*f50c3066SAndroid Build Coastguard Worker    into file('.git/hooks')
146*f50c3066SAndroid Build Coastguard Worker    fileMode 0777
147*f50c3066SAndroid Build Coastguard Worker}
148