试图在 Detekt 自定义规则上创建一些游乐场,但它不起作用。甚至不尝试查找规则集文件。
毕业生去
plugins {
id 'com.android.application'
id 'kotlin-android'
id("io.gitlab.arturbosch.detekt").version("1.17.1")
}
...
detekt {
toolVersion = "$detekt_version" // 1.17.1
input = files("src/main/java")
config = files("../detekt/detekt-config.yml")
autoCorrect = true
reports { ... }
}
dependencies {
detektPlugins "io.gitlab.arturbosch.detekt:detekt-formatting:$detekt_version"
compileOnly "io.gitlab.arturbosch.detekt:detekt-api:$detekt_version"
detekt "io.gitlab.arturbosch.detekt:detekt-cli:$detekt_version"
...
}
规则去
class SomeCustomRule(config: Config) : Rule(config) {
override val issue: Issue
get() = Issue("Import thingy", Severity.Minor, "I don't like this string", Debt(10))
override fun visitImportDirective(importDirective: KtImportDirective) {
val import: String = importDirective.importPath?.pathStr ?: ""
if ("appcompat" in import) {
report(CodeSmell(
issue,
Entity.from(importDirective),
"Importing $import which is an internal import"))
}
}
}
提供者是
class CustomRuleSetProvider : RuleSetProvider {
override val ruleSetId: String = "detekt-custom-rules"
override fun instance(config: Config) = RuleSet(ruleSetId, listOf(SomeCustomRule(config)))
}
最后但并非最不重要
在
src/main/resources/META-INF/services/io.gitlab.arturbosch.detekt.api.RuleSetProvider
是
com.playgrounds.detekt.customrule.CustomRuleSetProvider
依然没有。我试图在提供商处添加胡言乱语 - 没有,没有错误。我什至试图破坏 META-INF 的声明。没有什么。
当然,我尝试将提供程序添加到我的配置文件中,或者在 gradle 中添加一个项目行。错误,无法识别。
我错过了什么?
谢谢