我已经配置了一个Jenkins项目,在gradle构建和测试之后调用" Execute 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结果的任何新数据。
答案 0 :(得分:1)
您可以安装第三方Sonar插件here来测量Kotlin项目的代码质量。不幸的是,截至发布时,SonarQube没有自己的插件。
设置完成后,请查看here以设置gradle和sonar-project.properties。该帖子有点过时,但包含更新版本的链接,仍然是一个很好的起点。
TL;#2的DR:SonarQube对Kotlin所需的信息位于2个地方。一个已经由OP确定。另一个位于app/build/tmp/kotlin-classes
。
答案 1 :(得分:0)
我的项目正在使用Jacoco生成报道报告。要让Sonarqube获取结果,请尝试设置以下内容:
sonar.java.binaries = {$ buildDir} / classes / kotlin
换句话说,让Sonarqube知道Kotlin类文件的位置。此配置假设100%Kotlin项目。如果您的项目是Java和Kotlin的混合,那么您将必须确定如何配置这两个目录。
答案 2 :(得分:0)
发布问题后不久,我放弃了尝试通过Sonar进行Kotlin代码覆盖的尝试。但是,我有很多项目可以与Java和JaCoCo一起使用。回顾一下我的sonar.properties文件,我可以通过将以下行添加到sonar.properties文件来引用JaCoCo任务的输出来解决此问题:
sonar.jacoco.reportPath=build/jacoco/test.exec
我不确定这是否可以与Kotlin一起使用,但是它有助于Java覆盖并解决了我的用例。
答案 3 :(得分:0)
如果您正在使用gradle和Jacoco。
您可以使用 db = await create_engine(**db_data)
session = DbSessionFactory(db)
async with session.acquire() as conn:
user_repo = UserRepository(conn) # pass connection to repository
user_workflow = UserWorkflow(user_repo)
await user_workflow.execute() # do some stuff...
使用Jacoco进行代码覆盖。这样,Sonar就会相信Jacoco的输出。
xmlReportPaths
Sonar + Jacoco Plugin中的文档。 它也可用于混合源代码(Java,Kotlin)。