Почему мои добавленные NewIssues не передаются сонару? (Пользовательский плагин сонара)

Хей-хо,

Мой сонар-котлин-плагин запущен и работает. Мои определения RuleDefinitions отображаются на странице правил, но при анализе некоторых проектов kotlin обнаруженные проблемы не сохраняются.

Мой код добавления проблемы датчика выглядит следующим образом:

private fun projectIssues(detektion: Detektion, context: SensorContext) {
    val fileSystem = context.fileSystem()
    val baseDir = fileSystem.baseDir()
    val predicates = fileSystem.predicates()
    detektion.findings.forEach { _, findings ->
        findings.forEach { issue ->
            val inputFile = fileSystem.inputFile(predicates.`is`(baseDir.resolve(issue.location.file)))
            if (inputFile != null) {
                val newIssue = context.newIssue()
                        .forRule(findKey(issue.id))
                        .gap(2.0) // TODO what to write here?
                        .primaryLocation(issue, inputFile)
                println(newIssue)
                newIssue.save()
            } else {
                println("No file found for ${issue.location.file}")
            }
        }
    }
}

private fun NewIssue.primaryLocation(issue: Finding, inputFile: InputFile): NewIssue {
    val (line, _) = issue.startPosition
    val newIssueLocation = newLocation()
            .on(inputFile)
            .at(inputFile.selectLine(line))
            .message("TODO needs PR!")
    return this.at(newIssueLocation)
}

Даже println(newIssue) показывает, что он был создан.

я использую sonar-plugin-api version 5.6, org.sonar-gradle-plugin in version 2.5, мой сонар дистрибутив находится в версии 5.6.6 и я использую embedded database,

Весь мой код в этом пиаре https://github.com/arturbosch/detekt/pull/81,

Спасибо за вашу помощь заранее.

1 ответ

Я решил свою проблему, активировав свои правила в файле RulesProfile:

override fun createProfile(validation: ValidationMessages): RulesProfile {
    val profile = RulesProfile.create(DETEKT_WAY, KOTLIN_KEY)
    RULE_KEYS.forEach {
        profile.activateRule(Rule.create(it.repository(), it.rule()), null)
    }
    return profile
} 
Другие вопросы по тегам