diff --git a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt index 7b7b4ee..dc67501 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt @@ -24,7 +24,9 @@ class StaticAnalysisAndroidPlugin : StaticAnalysisPlugin() { project.tasks.register("staticAnalysis") { setupStaticAnalysisTask( linters = linters, - buildVariant = applicationVariants.first { it.name.contains("Debug") }.name + buildVariant = applicationVariants + .map { it.name.toLowerCase() } + .first { it.contains("debug") } ) } } @@ -32,10 +34,14 @@ class StaticAnalysisAndroidPlugin : StaticAnalysisPlugin() { } } - override fun createLinters(): List = listOf( - DetektLinter(), - CpdLinter(), + override fun createLinters(extension: StaticAnalysisExtension): List = mutableListOf().apply { + add(DetektLinter()) + if (extension.isCpdLinterEnabled) { + CpdLinter() + } + if (extension.isAndroidLinterEnabled) { AndroidLinter() - ) + } + } } diff --git a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisBackendPlugin.kt b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisBackendPlugin.kt index fa35f1d..f6bbee3 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisBackendPlugin.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisBackendPlugin.kt @@ -13,7 +13,7 @@ class StaticAnalysisBackendPlugin : StaticAnalysisPlugin() { } } - override fun createLinters(): List = listOf( + override fun createLinters(extension: StaticAnalysisExtension): List = listOf( CpdLinter(), DetektLinter() ) diff --git a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt index dfa698d..cb5c2cc 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt @@ -2,5 +2,7 @@ package static_analysis.plugins open class StaticAnalysisExtension( var excludes: String = "", - var buildScriptDir: String? = null + var buildScriptDir: String? = null, + var isCpdLinterEnabled: Boolean = true, + var isAndroidLinterEnabled: Boolean = false, ) diff --git a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt index 369fb90..d95535b 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt @@ -1,5 +1,6 @@ package static_analysis.plugins +import org.gradle.api.Action import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.Task @@ -24,9 +25,10 @@ abstract class StaticAnalysisPlugin : Plugin { extensions.create(STATIC_ANALYSIS_EXT_NAME) - val linters = createLinters() + val initData: StaticAnalysisExtension = extensions.getByType() + val linters = createLinters(initData) - linters.forEach { it.setupForProject(target, extensions.getByType()) } + linters.forEach { it.setupForProject(target, initData) } gradle.projectsEvaluated { createStaticAnalysisTasks(target, linters) @@ -39,7 +41,10 @@ abstract class StaticAnalysisPlugin : Plugin { dependsOn(*(linters.map { it.getTaskNames(project, buildVariant) }.flatten().toTypedArray())) } - abstract fun createLinters(): List + abstract fun createLinters(extension: StaticAnalysisExtension): List abstract fun createStaticAnalysisTasks(project: Project, linters: List) + fun Project.staticAnalysis(configure: Action): Unit = + (this as org.gradle.api.plugins.ExtensionAware).extensions.configure(STATIC_ANALYSIS_EXT_NAME, configure) + } diff --git a/static_analysis_configs/detekt-config.yml b/static_analysis_configs/detekt-config.yml index 8a6b3e4..f9c2420 100644 --- a/static_analysis_configs/detekt-config.yml +++ b/static_analysis_configs/detekt-config.yml @@ -64,7 +64,7 @@ complexity: ignoreSingleWhenExpression: true ignoreSimpleWhenEntries: true LabeledExpression: - active: true + active: false LargeClass: active: true threshold: 800