update static plugin #11

Open
bogdan.terehov wants to merge 2 commits from feature/update_static into master
5 changed files with 41 additions and 12 deletions

View File

@ -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<Linter> = listOf(
DetektLinter(),
CpdLinter(),
AndroidLinter()
)
override fun createLinters(extension: StaticAnalysisExtension): List<Linter> = mutableListOf<Linter>().apply {
add(DetektLinter())
if (extension.needCpdLinterEnabled) {
add(CpdLinter())
}
if (extension.needAndroidLinterEnabled) {
add(AndroidLinter())
}
}
}

View File

@ -13,7 +13,7 @@ class StaticAnalysisBackendPlugin : StaticAnalysisPlugin() {
}
}
override fun createLinters(): List<Linter> = listOf(
override fun createLinters(extension: StaticAnalysisExtension): List<Linter> = listOf(
CpdLinter(),
DetektLinter()
)

View File

@ -2,5 +2,7 @@ package static_analysis.plugins
open class StaticAnalysisExtension(
var excludes: String = "",
var buildScriptDir: String? = null
var buildScriptDir: String? = null,
var needCpdLinterEnabled: Boolean = true,
var needAndroidLinterEnabled: Boolean = false,
)

View File

@ -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<Project> {
extensions.create<StaticAnalysisExtension>(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,26 @@ abstract class StaticAnalysisPlugin : Plugin<Project> {
dependsOn(*(linters.map { it.getTaskNames(project, buildVariant) }.flatten().toTypedArray()))
}
abstract fun createLinters(): List<Linter>
abstract fun createLinters(extension: StaticAnalysisExtension): List<Linter>
abstract fun createStaticAnalysisTasks(project: Project, linters: List<Linter>)
/**
* Project level
*
* В gradle.kts используйте этот extension.
*
* В классическом gradle, синтаксис ровно тот, же, но без использования extension.
* ```
* staticAnalysis {
* excludes = ":name_example"
* buildScriptDir = buildScriptsDirectory
* needCpdLinterEnabled = false
* needAndroidLinterEnabled = false
* }
* ```
*/
fun Project.staticAnalysis(configure: Action<StaticAnalysisExtension>): Unit =
(this as org.gradle.api.plugins.ExtensionAware).extensions.configure(STATIC_ANALYSIS_EXT_NAME, configure)
}

View File

@ -64,7 +64,7 @@ complexity:
ignoreSingleWhenExpression: true
ignoreSimpleWhenEntries: true
LabeledExpression:
active: true
active: false
Review

Иначе ругается на код типа return@map

Т.е.

list.map{
	...
	...
	...

	return@map it
}
Иначе ругается на код типа `return@map` Т.е. ```kt list.map{ ... ... ... return@map it } ```
LargeClass:
active: true
threshold: 800