You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle多模块项目Sonar仅扫描rootmodule问题求助

仅RootModule被Sonar扫描的原因分析

下面是几种常见的原因及对应的排查方向:

  • SonarQube插件仅在RootModule中应用,未覆盖子模块
    你只在rootmodule的build.gradle里声明了id 'org.sonarqube' version '4.4.1.3373',但subprojects块仅用于设置属性,并不会自动让子模块应用该插件。子模块必须显式应用SonarQube插件才能被纳入扫描范围,你需要把插件应用代码移到allprojects或subprojects块中,或者在每个子模块的build.gradle里单独声明插件。

  • Settings.gradle未正确包含所有子模块
    检查根目录的settings.gradle,确认是否添加了所有子模块的包含声明,示例如下:

    include ':rootmodule', ':module1', ':module2', ':module3'
    

    如果某个模块未被include,Gradle会忽略它,自然不会被Sonar扫描。

  • 子模块缺少基础语言插件
    SonarQube插件依赖Java/Android等基础插件来识别源代码目录,如果子模块是纯配置模块(无源代码),或者未应用java这类基础插件,Sonar会跳过该模块的扫描。确保需要扫描的子模块都应用了对应的语言插件。

  • 执行了错误的扫描任务
    如果你执行的是./gradlew :rootmodule:sonar,只会触发rootmodule的扫描任务。要扫描所有模块,需要执行根项目的Sonar任务:./gradlew sonar。

  • Subprojects块的属性配置存在冲突
    检查subprojects中的Sonar属性是否存在错误,比如sonar.projectKey重复,或者配置了sonar.skip=true这类排除属性,导致子模块被跳过扫描。确保每个子模块的Sonar配置唯一且正确。


内容的提问来源于stack exchange,提问作者mtnp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:53:12