我配置了一个jenkins项目,在Gradle构建和测试后,它称为"执行Sonarqube Scanner",其规格:
sonar.projectKey=my_project_key
sonar.projectName=my_Android
sonar.projectVersion=1.0
sonar.sources=app/src
sonar.java.binaries=app/build/intermediates/classes/debug
sonar.coverage.exclusions=app/src/test/**,app/src/androidTest/**,app/src/main/res/**
这成功运行了Sonarqube,并向iPaddress生成了一份报告:9000衡量的:错误,漏洞,债务,代码气味和重复,就像应该一样。但是,本报告中没有任何位置定义测试所涵盖的代码。Sonarqube成功运行了Kotlin插件,并看到了代码库本身,但没有确定覆盖范围。使用Kotlin Android时,可以使用Sonarqube收集此信息?
我确实尝试过安装jacoco,但没有在Sonarqube结果上看到任何新数据。
您可以在此处安装第三方的声纳插件,该插件将测量Kotlin项目的代码质量。不幸的是,在此发布时,Sonarqube没有自己的插件。
设置后,请在此处查看以设置Gradle和Sonar-Project.properties。该帖子有点过时,但包含指向更新版本的链接,仍然是一个很好的起点。
tl; dr for#2:Sonarqube的信息Sonarqube需求位于2个位置。一个已经由OP确定。另一个位于app/build/tmp/kotlin-classes
。
如果您使用的是gradle和jacoco。您可以使用xmlReportPaths
使用Jacoco进行代码覆盖。使用该声纳将信任Jacoco的输出。
sonarqube {
properties {
property("sonar.java.coveragePlugin", "jacoco")
property("sonar.coverage.jacoco.xmlReportPaths", "./build/reports/jacoco/test/jacocoTestReport.xml")
}
}
Sonar Jacoco插件的文档。它还可以与混合源代码(Java,Kotlin)一起使用。
我放弃了在发布问题后不久用声纳获得Kotlin代码覆盖范围。
但是,,我有很多项目可以与Java和Jacoco一起工作。
回顾性回顾一下我的sonar.properties
文件,我可能能够通过将以下行添加到Sonar.properties文件:
sonar.jacoco.reportPath=build/jacoco/test.exec
我不确定这是否与Kotlin一起使用,但是它可以帮助使用Java覆盖范围并解决了我的用例。
Sonarqube(6 )的新版本现在支持Kotlin,并且不需要项目中的任何自定义配置。
只需确保安装Kotlin和Jacoco插件,它应该只适合您。
---旧答案----------------------------------------------------
我的项目正在使用jacoco生成覆盖范围报告。要让Sonarqube接收结果,请尝试设置以下内容:
sonar.java.binaries={$buildDir}/classes/kotlin
换句话说,让Sonarqube知道Kotlin类文件在哪里。
此配置假定 100% Kotlin项目。如果您的项目是Java和Kotlin的组合,则必须确定如何配置两个目录。