From 0748ec235b0391670fc8b914247e6a09e8e01e66 Mon Sep 17 00:00:00 2001 From: Bogdan Terehov Date: Fri, 8 Sep 2023 05:26:19 +0300 Subject: [PATCH 1/2] update static plugin --- .../plugins/StaticAnalysisAndroidPlugin.kt | 16 +++++++++++----- .../plugins/StaticAnalysisBackendPlugin.kt | 2 +- .../plugins/StaticAnalysisExtension.kt | 4 +++- .../plugins/StaticAnalysisPlugin.kt | 11 ++++++++--- static_analysis_configs/detekt-config.yml | 2 +- 5 files changed, 24 insertions(+), 11 deletions(-) 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 -- 2.40.1 From 9d0601699d24414a010260bf45d276407c14ff7c Mon Sep 17 00:00:00 2001 From: Bogdan Terehov Date: Fri, 8 Sep 2023 23:10:56 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5=20staticAna?= =?UTF-8?q?lysis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/StaticAnalysisAndroidPlugin.kt | 8 ++++---- .../plugins/StaticAnalysisExtension.kt | 4 ++-- .../plugins/StaticAnalysisPlugin.kt | 16 ++++++++++++++++ 3 files changed, 22 insertions(+), 6 deletions(-) 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 dc67501..b011515 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisAndroidPlugin.kt @@ -36,11 +36,11 @@ class StaticAnalysisAndroidPlugin : StaticAnalysisPlugin() { override fun createLinters(extension: StaticAnalysisExtension): List = mutableListOf().apply { add(DetektLinter()) - if (extension.isCpdLinterEnabled) { - CpdLinter() + if (extension.needCpdLinterEnabled) { + add(CpdLinter()) } - if (extension.isAndroidLinterEnabled) { - AndroidLinter() + if (extension.needAndroidLinterEnabled) { + add(AndroidLinter()) } } 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 cb5c2cc..8087b9d 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisExtension.kt @@ -3,6 +3,6 @@ package static_analysis.plugins open class StaticAnalysisExtension( var excludes: String = "", var buildScriptDir: String? = null, - var isCpdLinterEnabled: Boolean = true, - var isAndroidLinterEnabled: Boolean = false, + var needCpdLinterEnabled: Boolean = true, + var needAndroidLinterEnabled: 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 d95535b..c1b59b0 100644 --- a/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt +++ b/gradle/plugins/src/main/java/static_analysis/plugins/StaticAnalysisPlugin.kt @@ -42,8 +42,24 @@ abstract class StaticAnalysisPlugin : Plugin { } abstract fun createLinters(extension: StaticAnalysisExtension): List + abstract fun createStaticAnalysisTasks(project: Project, linters: List) + /** + * Project level + * + * В gradle.kts используйте этот extension. + * + * В классическом gradle, синтаксис ровно тот, же, но без использования extension. + * ``` + * staticAnalysis { + * excludes = ":name_example" + * buildScriptDir = buildScriptsDirectory + * needCpdLinterEnabled = false + * needAndroidLinterEnabled = false + * } + * ``` + */ fun Project.staticAnalysis(configure: Action): Unit = (this as org.gradle.api.plugins.ExtensionAware).extensions.configure(STATIC_ANALYSIS_EXT_NAME, configure) -- 2.40.1