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