diff --git a/gradle/plugins/build.gradle.kts b/gradle/plugins/build.gradle.kts index 3611bcbd..daf09c84 100644 --- a/gradle/plugins/build.gradle.kts +++ b/gradle/plugins/build.gradle.kts @@ -13,7 +13,7 @@ repositories { dependencies { // android gradle plugin, required by custom plugin - implementation("com.android.tools.build:gradle:4.0.1") + implementation("com.android.tools.build:gradle:7.1.3") implementation("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.10.0") implementation("de.aaschmid:gradle-cpd-plugin:3.1") diff --git a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt index fa6ff5b3..d211215b 100644 --- a/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt +++ b/gradle/plugins/src/main/java/static_analysis/linters/AndroidLinter.kt @@ -1,9 +1,7 @@ package static_analysis.linters -import com.android.build.gradle.AppExtension import com.android.build.gradle.AppPlugin import org.gradle.api.Project -import org.gradle.kotlin.dsl.findByType import static_analysis.errors.AndroidLintError import static_analysis.errors.StaticAnalysisError import static_analysis.plugins.StaticAnalysisExtension @@ -33,22 +31,10 @@ class AndroidLinter : Linter { .flatten() override fun setupForProject(project: Project, extension: StaticAnalysisExtension) { - project.beforeEvaluate { - subprojects - .mapNotNull { it.extensions.findByType() } - .first() - .lintOptions.apply { - isAbortOnError = false - isCheckAllWarnings = true - isWarningsAsErrors = false - xmlReport = true - htmlReport = false - isCheckDependencies = true - disable("MissingConstraints", "VectorRaster") - xmlOutput = getLintReportFile() - lintConfig = file("${extension.buildScriptDir}/static_analysis_configs/lint.xml") - } - } + // Make sure to set lint options manually in modules gradle file + // Otherwise you will get java.io.FileNotFoundException + + // See issue: https://github.com/TouchInstinct/BuildScripts/issues/310 } override fun getTaskNames(project: Project, buildType: String?): List { @@ -62,11 +48,14 @@ class AndroidLinter : Linter { .mapNotNull { subproject: Project -> subproject .tasks - .find { task -> task.name.contains(buildType, ignoreCase = true) && task.name.contains("lint") } - ?.path + .filter { task -> + task.name.equals("lint${buildType}", ignoreCase = true) + || task.name.equals("copy${buildType}AndroidLintReports", ignoreCase = true) + } + .map { it.path } } + .flatten() } private fun Project.getLintReportFile() = file("${rootProject.buildDir}/reports/lint-report.xml") - } diff --git a/gradle/scripts/lintOptions.gradle b/gradle/scripts/lintOptions.gradle new file mode 100644 index 00000000..e1fd0326 --- /dev/null +++ b/gradle/scripts/lintOptions.gradle @@ -0,0 +1,13 @@ +android { + lint { + abortOnError false + checkAllWarnings true + warningsAsErrors false + checkDependencies true + htmlReport false + textReport false + xmlReport true + xmlOutput file("${rootProject.buildDir}/reports/lint-report.xml") + lintConfig file("${rootProject.ext["buildScriptsDir"]}/static_analysis_configs/lint.xml") + } +} diff --git a/static_analysis_configs/lint.xml b/static_analysis_configs/lint.xml index 98227d48..511e843d 100644 --- a/static_analysis_configs/lint.xml +++ b/static_analysis_configs/lint.xml @@ -16,6 +16,9 @@ + + +