0

试图在 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 中添加一个项目行。错误,无法识别。

我错过了什么?

谢谢

4

0 回答 0