适用于 Android 的多模块项目的 SonarQube

Posted

技术标签:

【中文标题】适用于 Android 的多模块项目的 SonarQube【英文标题】:SonarQube for multi module project for Android 【发布时间】:2021-05-03 22:05:58 【问题描述】:

我浏览过很多文章和帖子,但遗憾的是,我似乎没有一篇清楚。我想为我的 android 项目集成 sonarqube。我的项目结构如下:

最初,我按照此处提到的方式设置了一个 sonarqube.gradle:What is the correct way to configure an Android project with submodules for use with the sonarqube gradle plugin?

但它为我做的是用它处理的最后一个模块覆盖数据。这意味着我在 sonarqube 登录中仅看到域的代码行。如果我不添加 apply from: '../sonarqube.gradle' 在域中然后我可以看到数据库的代码。如果我没有在数据库和域中添加 apply from: '../sonarqube.gradle' ,那么我会看到它的数据。所以我认为它会覆盖日志。

谁能帮我理解在 Android 中为多模块项目设置 sonarqube 的正确方法是什么?

 apply plugin: "org.sonarqube"

sonarqube 
  properties 
      property "sonar.projectName", "my-app"
      property "sonar.projectKey", "my-app"
      property "sonar.host.url", "URL"
      property "sonar.sources", "./src/main/"
      property "sonar.sourceEncoding", "UTF-8"
      property "sonar.language", "kotlin"
      property "sonar.login", "token"
      property "sonar.projectVersion", "1.0"
      property "sonar.analysis.mode", "publish"
      property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"
      property "sonar.exclusions", "**/BuildConfig.class,**/R.java,**/R\$*.java,src/main/gen/**/*,src/main/assets/**/*"
  

【问题讨论】:

【参考方案1】:

移除 projectKey 属性并仅在根 build.gradle 中声明它:

 apply plugin: "org.sonarqube"

sonarqube 
  properties 
      property "sonar.projectName", "my-app"
      property "sonar.host.url", "URL"
      property "sonar.sources", "./src/main/"
      property "sonar.sourceEncoding", "UTF-8"
      property "sonar.language", "kotlin"
      property "sonar.login", "token"
      property "sonar.projectVersion", "1.0"
      property "sonar.analysis.mode", "publish"
      property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"
      property "sonar.exclusions", "**/BuildConfig.class,**/R.java,**/R\$*.java,src/main/gen/**/*,src/main/assets/**/*"
  

【讨论】:

以上是关于适用于 Android 的多模块项目的 SonarQube的主要内容,如果未能解决你的问题,请参考以下文章

sonar-maven-plugin:如何在包含模式中使用项目相对路径?

适用于Android开发者的多线程总结

基于Python的多线程与多进程

适用于 Android 和 iOS 设备的 Titanium Appcelerator 蓝牙模块 [关闭]

源和测试类在不同模块中时的 JaCoCo 配置

如何在 iOS 项目中添加两个或多个 kotlin 原生模块