使用GitHub Actions执行Java仓库SonarQube扫描失败求助
Java项目GitHub Actions SonarQube扫描失败解决方案
问题核心
你碰到的报错本质是:SonarQube扫描Java项目时,必须读取编译后的.class二进制文件才能完成代码分析;要么就得明确排除Java文件(但会丢失Java代码的质量检测结果)。
解决方案一:修改现有Windows扫描Action配置
基于你当前使用的jimseiwert/sonarqube-scanner-windowsAction,只需补充编译步骤和指定编译输出路径即可:
- name: 编译Java项目(Maven) if: ${{ inputs.runsonar =='true' }} run: mvn clean compile -DskipTests - name: SonarQube Scanner-Windows if: ${{ inputs.runsonar =='true' }} uses: jimseiwert/sonarqube-scanner-windows@v1.0 with: host-url: http://sonar-rm.mybank.com:9000/ token: ${{ secrets.SONAR_TOKEN }} project-key: 'MY_WEB' project-name: ${{ inputs.repo }} # 指定Maven默认的编译输出路径,Gradle项目可改为build/classes/java/main extra-args: '-Dsonar.java.binaries=target/classes'
解决方案二:用Maven原生SonarQube扫描(推荐)
既然你支持Maven,直接用Maven的Sonar插件更省心,无需额外扫描器Action,插件会自动处理编译与扫描的依赖:
- name: Maven SonarQube扫描 if: ${{ inputs.runsonar =='true' }} run: | mvn sonar:sonar \ -Dsonar.host.url=http://sonar-rm.mybank.com:9000/ \ -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ -Dsonar.projectKey=MY_WEB \ -Dsonar.projectName=${{ inputs.repo }}
自托管Runner扫描方案(无合适市场Action时用)
如果市场Action不符合需求,在自托管Windows Runner上手动部署扫描:
- 在Runner机器上下载解压SonarScanner for Windows,路径比如
D:\sonar-scanner - 将
D:\sonar-scanner\bin添加到系统环境变量PATH - GitHub Actions配置如下:
- name: 编译Java项目 if: ${{ inputs.runsonar =='true' }} run: mvn clean compile -DskipTests - name: 执行SonarQube扫描 if: ${{ inputs.runsonar =='true' }} run: | sonar-scanner.bat \ -Dsonar.host.url=http://sonar-rm.mybank.com:9000/ \ -Dsonar.login=${{ secrets.SONAR_TOKEN }} \ -Dsonar.projectKey=MY_WEB \ -Dsonar.projectName=${{ inputs.repo }} \ -Dsonar.java.binaries=target/classes
扫描报告查看位置
不管用哪种方案,扫描完成后直接访问你的SonarQube服务器地址http://sonar-rm.mybank.com:9000/,登录后在项目列表找到MY_WEB项目,点击进入就能查看完整的代码质量报告,涵盖漏洞、代码异味、覆盖率等信息。
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

