Sonarqube:使用自定义 gradle 任务扫描子项目而不是整个项目

Posted

技术标签:

【中文标题】Sonarqube:使用自定义 gradle 任务扫描子项目而不是整个项目【英文标题】:Sonarqube: scan subproject instead of whole project with custom gradle task 【发布时间】:2020-06-04 17:28:10 【问题描述】:

我必须为一个 Java 项目运行 Sonarqube 分析,该项目是其他 4 个子项目中的一个,如下所示:

  Parent-project
    -> serviceA
       -> src/main/java/...
    -> serviceB
       -> src/main/java/...
    -> serviceC
       -> src/main/java/...
    -> serviceD
       -> src/main/java/...
  -> gradle.properties
  -> sonar.gradle

我知道我可以排除不需要的服务,如下所示:

project(":serviceB") 
        sonarqube 
            skipProject = true
        
    

但问题是我不拥有父项目,因此无法在全局 sonar.gradle 文件中进行更改,因为它也被其他服务共享。

有没有办法让 sonar.gradle 只用于我的项目 (serviceA),以及只为我的服务运行分析的 gradle 任务? 我在这里完全迷失了,因为文档似乎没有说明这一点。

任何帮助将不胜感激!

【问题讨论】:

寻找相同的答案.. 嘿@AasthaJain,我刚刚发布了一个对我有用的解决方案。让我知道这是否有帮助。谢谢! 【参考方案1】:

我找到了解决这个问题的方法。您实际上可以使用 sonar.gradle 中的以下设置排除父项目下不需要的项目:

project(":project-1") 
    sonarqube 
        skipProject = true
    

 
project(":project-2") 
    sonarqube 
        skipProject = true
    

如果您想要对某个级别进行更多控制,而您不想排除整个子项目但只想包含子项目的一部分(例如,多个团队贡献的公共共享库,而您只想分析您团队的代码),您可以执行以下操作:

project(":common-project") 
    sonarqube 
        properties 
            property "sonar.inclusions", "src/main/java/**/common/**"
        
    

【讨论】:

以上是关于Sonarqube:使用自定义 gradle 任务扫描子项目而不是整个项目的主要内容,如果未能解决你的问题,请参考以下文章

使用android productFlavors时,sonarqube gradle插件异常

Android Gradle 插件自定义 Gradle 任务 ⑪ ( Gradle 任务分组 | 为自定义 Gradle 任务指定分组 | 为自定义 Gradle任务指定任务描述 | 代码示例 )

使用脚本执行自定义 Gradle 任务

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑮ ( Gradle 自带 Zip 任务使用 | Zip 任务简介 | 代码示例 )