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

GitHub Actions集成SonarQube无法获取projectKey报错排查

问题根因分析

两个报错的关联逻辑很明确:

  • 日志里的Spring Bean依赖加载失败不是项目引入Spring框架导致的:SonarQube扫描器内部用Spring容器管理自身组件,必填配置缺失时容器初始化链路中断,就会抛出这类连锁错误,和业务项目的依赖没有关系。
  • sonar.projectKey读取失败是配置方式不匹配导致,核心错误有2处:
    • 使用的sonarsource/sonarqube-scan-action是独立的Sonar Scanner CLI扫描器,默认不会读取Gradle配置文件里定义的sonarqube参数,写在build.gradle中的sonar.projectKey根本没有被扫描器加载。
    • Gradle配置中把sonar.projectBaseDir设置为src属于错误配置,该参数默认应指向项目根目录,设置为src会导致扫描器路径解析异常。
修复方案

两种方案二选一即可:

方案1:保留sonarqube-scan-action,直接在工作流传入扫描参数

这种方式不需要依赖Gradle插件,直接给扫描action传入必填参数即可,修正后的build.yaml配置如下:

on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened]

name: NotificationApi Build
jobs:
  sonarqube:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: SonarQube Scan
        uses: sonarsource/sonarqube-scan-action@master
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
        with:
          args: >
            -Dsonar.projectKey=NotificationApi
            -Dsonar.projectBaseDir=.

注意:如果选择该方案,可以删除build.gradle里的sonarqube配置块,这部分配置不会被CLI扫描器读取。

方案2:通过Gradle SonarQube插件跑扫描,复用build.gradle中的配置

这种方式可以直接读取Gradle中定义的sonar参数,需要调整工作流,增加JDK、Gradle运行环境的准备步骤,修正后的build.yaml配置如下:

on:
  push:
    branches:
      - master
  pull_request:
    types: [opened, synchronize, reopened]

name: NotificationApi Build
jobs:
  sonarqube:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 11
        uses: actions/setup-java@v3
        with:
          java-version: '11'
          distribution: 'temurin'
      - name: Grant execute permission for gradlew
        run: chmod +x gradlew
      - name: Run SonarQube Scan via Gradle
        run: ./gradlew sonarqube
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
          SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}

同时修正build.gradle中错误的sonar.projectBaseDir配置:

sonarqube {
    properties {
        property("sonar.projectKey", "NotificationApi")
        property("sonar.projectBaseDir", ".")
    }
}
效果说明

配置修正后重新运行工作流,Spring依赖报错会随着sonar.projectKey参数正常加载自动消失,扫描流程可正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:45:41