SonarQube 是一个开源的代码质量管理平台,用于检测代码中的漏洞、代码异味和技术债务。覆盖率(Coverage)是指代码被测试覆盖的比例,通常用于衡量测试的质量。
GitHub 是一个流行的代码托管平台,支持通过插件和集成来扩展其功能。
将 SonarQube 的覆盖率作为图标嵌入到 GitHub 项目中,有以下优势:
这种集成通常通过以下几种方式实现:
适用于需要持续监控和提高代码质量的团队,特别是在敏捷开发和持续交付的环境中。
以下是通过 GitHub Actions 实现将 SonarQube 覆盖率嵌入到 GitHub 项目的步骤:
确保你已经有一个 SonarQube 实例,并且项目已经配置好。
在项目根目录下创建 .github/workflows
目录,并创建一个新的 YAML 文件,例如 sonar.yml
。
name: SonarQube Analysis
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0 # Required to get file history for all branches
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Cache SonarQube packages
uses: actions/cache@v2
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: |
${{ runner.os }}-
- name: Install SonarQube Scanner
run: |
curl -sSLo sonar-scanner-cli-linux.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.5.0.2216-linux.zip
unzip sonar-scanner-cli-linux.zip
sudo mv sonar-scanner-4.5.0.2216-linux /usr/local/bin/sonar-scanner
rm sonar-scanner-cli-linux.zip
- name: Run SonarQube Analysis
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONARQUBE_TOKEN: ${{ secrets.SONARQUBE_TOKEN }}
run: |
sonar-scanner -Dsonar.projectKey=my_project_key -Dsonar.organization=my_organization -Dsonar.host.url=https://sonarcloud.io -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.sources=. -Dsonar.tests=. -Dsonar.coverage.jacoco.xmlReportPaths=**/target/site/jacoco/jacoco.xml
在 SonarQube 中创建一个新项目,并获取项目的 projectKey
和 organization
。
在 GitHub 项目设置中,添加两个 Secrets:
SONARQUBE_TOKEN
:你的 SonarQube 访问令牌。GITHUB_TOKEN
:GitHub 自动提供的令牌,用于访问仓库数据。完成上述步骤后,每次推送代码或创建 Pull Request 时,GitHub Actions 会自动运行 SonarQube 分析,并将结果发布到 GitHub 页面。你可以在项目的 README 文件中添加以下 Markdown 代码来显示覆盖率图标:
![SonarQube Coverage](https://sonarcloud.io/api/project_badges/measure?project=my_organization%3Amy_project_key&metric=coverage)
sonar.projectKey
和 sonar.organization
。通过以上步骤,你可以将 SonarQube 的覆盖率作为图标嵌入到 GitHub 项目中,从而更好地监控和提高代码质量。
领取专属 10元无门槛券
手把手带您无忧上云