Merge pull request #7241 from vector-im/feature/bma/gradle_doctor

Set up Gradle doctor
This commit is contained in:
Benoit Marty 2022-09-27 18:48:05 +02:00 committed by GitHub
commit 0c4510250b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 97 additions and 0 deletions

View file

@ -47,6 +47,8 @@ plugins {
// Dependency Analysis // Dependency Analysis
id 'com.autonomousapps.dependency-analysis' version "1.13.1" id 'com.autonomousapps.dependency-analysis' version "1.13.1"
// Gradle doctor
id "com.osacky.doctor" version "0.8.1"
} }
// https://github.com/jeremylong/DependencyCheck // https://github.com/jeremylong/DependencyCheck
@ -59,6 +61,9 @@ dependencyCheck {
] ]
} }
// Gradle doctor configuration
apply from: './tools/gradle/doctor.gradle'
allprojects { allprojects {
apply plugin: "org.jlleitschuh.gradle.ktlint" apply plugin: "org.jlleitschuh.gradle.ktlint"
apply plugin: "io.gitlab.arturbosch.detekt" apply plugin: "io.gitlab.arturbosch.detekt"

View file

@ -0,0 +1,92 @@
// Default configuration copied from https://runningcode.github.io/gradle-doctor/configuration/
def isCiBuild = System.env.BUILDKITE == "true" || System.env.GITHUB_ACTIONS == "true"
println "Is CI build: $isCiBuild"
doctor {
/**
* Throw an exception when multiple Gradle Daemons are running.
*
* Windows is not supported yet, see https://github.com/runningcode/gradle-doctor/issues/84
*/
disallowMultipleDaemons = false
/**
* Show a message if the download speed is less than this many megabytes / sec.
*/
downloadSpeedWarningThreshold = 0.5f
/**
* The level at which to warn when a build spends more than this percent garbage collecting.
*/
GCWarningThreshold = 0.10f
/**
* The level at which to fail when a build spends more than this percent garbage collecting.
*/
GCFailThreshold = 0.9f
/**
* Print a warning to the console if we spend more than this amount of time with Dagger annotation processors.
*/
daggerThreshold = 5000
/**
* By default, Gradle caches test results. This can be dangerous if tests rely on timestamps, dates, or other files
* which are not declared as inputs.
*/
enableTestCaching = true
/**
* By default, Gradle treats empty directories as inputs to compilation tasks. This can cause cache misses.
*/
failOnEmptyDirectories = true
/**
* Do not allow building all apps simultaneously. This is likely not what the user intended.
*/
allowBuildingAllAndroidAppsSimultaneously = false
/**
* Warn if using Android Jetifier. It slows down builds.
*/
warnWhenJetifierEnabled = true
/**
* Negative Avoidance Savings Threshold
* By default the Gradle Doctor will print out a warning when a task is slower to pull from the cache than to
* re-execute. There is some variance in the amount of time a task can take when several tasks are running
* concurrently. In order to account for this there is a threshold you can set. When the difference is above the
* threshold, a warning is displayed.
*/
negativeAvoidanceThreshold = 500
/**
* Warn when not using parallel GC. Parallel GC is faster for build type tasks and is no longer the default in Java 9+.
*/
warnWhenNotUsingParallelGC = !isCiBuild
/**
* Throws an error when the `Delete` or `clean` task has dependencies.
* If a clean task depends on other tasks, clean can be reordered and made to run after the tasks that would produce
* output. This can lead to build failures or just strangeness with seemingly straightforward builds
* (e.g., gradle clean build).
* http://github.com/gradle/gradle/issues/2488
*/
disallowCleanTaskDependencies = true
/**
* Warn if using the Kotlin Compiler Daemon Fallback. The fallback is incredibly slow and should be avoided.
* https://youtrack.jetbrains.com/issue/KT-48843
*/
warnIfKotlinCompileDaemonFallback = true
/** Configuration properties relating to JAVA_HOME */
javaHome {
/**
* Ensure that we are using JAVA_HOME to build with this Gradle.
*/
ensureJavaHomeMatches = true
/**
* Ensure we have JAVA_HOME set.
*/
ensureJavaHomeIsSet = true
/**
* Fail on any `JAVA_HOME` issues.
*/
failOnError.set(!isCiBuild)
/**
* Extra message text, if any, to show with the Gradle Doctor message. This is useful if you have a wiki page or
* other instructions that you want to link for developers on your team if they encounter an issue.
*/
extraMessage.set("Here's an extra message to show.")
}
}