嘿嘿,
我已经启动并运行了我的 sonar-kotlin-plugin。我的 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
.
我的整个代码都在这个 PRhttps://github.com/arturbosch/detekt/pull/81
中。
感谢您提前提供帮助。