Почему мои добавленные 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
}