| /* |
| * Copyright (C) 2017. Uber Technologies |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| import net.ltgt.gradle.errorprone.CheckSeverity |
| buildscript { |
| repositories { |
| mavenCentral() |
| google() // For Gradle 4.0+ |
| } |
| |
| dependencies { |
| classpath 'com.android.tools.build:gradle:7.3.0' |
| classpath 'com.vanniktech:gradle-maven-publish-plugin:0.25.3' |
| } |
| } |
| plugins { |
| id "com.diffplug.spotless" version "6.23.3" |
| id "net.ltgt.errorprone" version "3.1.0" apply false |
| id "com.github.johnrengelman.shadow" version "8.1.1" apply false |
| id "me.champeau.jmh" version "0.7.1" apply false |
| id "com.github.ben-manes.versions" version "0.50.0" |
| id "com.felipefzdz.gradle.shellcheck" version "1.4.6" |
| } |
| |
| repositories { |
| // to get the google-java-format jar and dependencies |
| mavenCentral() |
| } |
| |
| apply from: "gradle/dependencies.gradle" |
| |
| subprojects { project -> |
| project.apply plugin: "net.ltgt.errorprone" |
| project.dependencies { |
| errorprone deps.build.errorProneCore |
| } |
| project.tasks.withType(JavaCompile) { |
| dependsOn(installGitHooks) |
| options.compilerArgs += [ |
| "-Xlint:deprecation", |
| "-Xlint:rawtypes", |
| "-Xlint:unchecked", |
| "-Werror" |
| ] |
| options.errorprone { |
| // disable warnings in generated code; AutoValue code fails UnnecessaryParentheses check |
| disableWarningsInGeneratedCode = true |
| // this check is too noisy |
| check("StringSplitter", CheckSeverity.OFF) |
| // https://github.com/google/error-prone/issues/3366 |
| check("CanIgnoreReturnValueSuggester", CheckSeverity.OFF) |
| // turn up various checks |
| check("WildcardImport", CheckSeverity.ERROR) |
| check("MissingBraces", CheckSeverity.ERROR) |
| check("TypeToString", CheckSeverity.ERROR) |
| check("SymbolToString", CheckSeverity.ERROR) |
| check("MultipleTopLevelClasses", CheckSeverity.ERROR) |
| check("ClassName", CheckSeverity.ERROR) |
| check("PackageLocation", CheckSeverity.ERROR) |
| check("UnnecessaryAnonymousClass", CheckSeverity.ERROR) |
| check("UnusedException", CheckSeverity.ERROR) |
| // To enable auto-patching, uncomment the line below, replace [CheckerName] with |
| // the checker(s) you want to apply patches for (comma-separated), and above, disable |
| // "-Werror" |
| // errorproneArgs.addAll("-XepPatchChecks:[CheckerName]", "-XepPatchLocation:IN_PLACE") |
| } |
| } |
| |
| // Target JDK 8. We need to use the older sourceCompatibility / targetCompatibility settings to get |
| // the build to work on JDK 11+. Once we stop supporting JDK 8, switch to using the javac "release" option |
| tasks.withType(JavaCompile) { |
| java.sourceCompatibility = "1.8" |
| java.targetCompatibility = "1.8" |
| } |
| |
| tasks.withType(Test).configureEach { |
| maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 |
| } |
| |
| repositories { |
| mavenCentral() |
| google() |
| } |
| |
| // For some reason, spotless complains when applied to the jar-infer folder itself, even |
| // though there is no top-level :jar-infer project |
| if (project.name != "jar-infer") { |
| project.apply plugin: "com.diffplug.spotless" |
| spotless { |
| java { |
| googleJavaFormat() |
| } |
| } |
| } |
| } |
| |
| spotless { |
| predeclareDeps() |
| groovyGradle { |
| target '**/*.gradle' |
| greclipse() |
| indentWithSpaces(4) |
| trimTrailingWhitespace() |
| endWithNewline() |
| } |
| } |
| spotlessPredeclare { |
| java { googleJavaFormat('1.18.1') } |
| groovyGradle { |
| greclipse() |
| } |
| } |
| |
| shellcheck { |
| useDocker = false |
| shellcheckBinary = "shellcheck" |
| sourceFiles = |
| fileTree(".") { |
| include("**/*.sh") |
| } |
| } |
| |
| //////////////////////////////////////////////////////////////////////// |
| // |
| // Google Java Format pre-commit hook installation |
| // |
| |
| tasks.register('installGitHooks', Copy) { |
| from(file('config/hooks/pre-commit-stub')) { |
| rename 'pre-commit-stub', 'pre-commit' |
| } |
| into file('.git/hooks') |
| fileMode 0777 |
| } |