添加 .gitea/workflows/sonar-scan.yml

This commit is contained in:
2025-12-02 03:41:03 +08:00
parent d8e4f77b82
commit 24e9e53818

View File

@@ -0,0 +1,55 @@
name: SonarQube Code Quality Scan
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
scan:
runs-on: windows-latest
steps:
# 步骤1拉取仓库代码完整历史
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
# 步骤2配置 Sonar Scanner 路径(必做,替换为你的实际路径)
- name: Add Sonar Scanner to PATH
run: |
$scannerPath = "D:\Paths\sonar-scanner-cli\bin" # 替换为你的 Scanner bin 目录
echo "$scannerPath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8
# 步骤3安装 .NET SDKC# 项目编译依赖,根据你的项目版本调整)
- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
dotnet-version: 6.0.x # 替换为你的项目对应的 .NET 版本(如 3.1.x、5.0.x、7.0.x
# 步骤4编译 C# 项目(生成 SonarQube 所需的二进制文件和覆盖率报告)
- name: Build .NET Project
run: |
dotnet restore # 还原依赖包
dotnet build --configuration Release # 编译项目Release 模式,确保生成完整二进制文件)
# 步骤5执行 SonarQube 扫描C# 专属配置)
- name: Run SonarQube Scan
run: |
sonar-scanner `
-Dsonar.projectKey=sqp_4bae541a7a6ccfd4ebae43150ce5b8b5c1c34c50 ` # 你的 SonarQube 项目密钥
-Dsonar.sources=./ ` # 代码根目录C# 项目通常无需修改)
-Dsonar.host.url=http://127.0.0.1:9000 ` # SonarQube 地址(非本地需改局域网 IP
-Dsonar.login=${{ secrets.SONAR_TOKEN }} ` # 引用 Gitea Secrets 令牌
-Dsonar.language=csharp ` # 强制指定语言为 C#(避免自动识别错误)
-Dsonar.dotnet.build.directory=./**/bin/Release ` # 指定 .NET 编译输出目录匹配步骤4的 Release 模式)
-Dsonar.exclusions=**/obj/**,**/bin/Debug/** ` # 排除无需扫描的目录编译临时文件、Debug 目录)
-Dsonar.coverage.exclusions=**/Test/**,**/*.Tests.cs # 排除测试代码目录(按需调整)
sonar-scanner `
-Dsonar.projectKey=sqp_4bae541a7a6ccfd4ebae43150ce5b8b5c1c34c50 ` # 你的 SonarQube 项目密钥
-Dsonar.sources=./ ` # 代码根目录C# 项目通常无需修改)
-Dsonar.host.url=http://127.0.0.1:9000 ` # SonarQube 地址(非本地需改局域网 IP
-Dsonar.login=${{ secrets.SONAR_TOKEN }} ` # 引用 Gitea Secrets 令牌
-Dsonar.language=csharp ` # 强制指定语言为 C#(避免自动识别错误)
-Dsonar.dotnet.build.directory=./**/bin/Release ` # 指定 .NET 编译输出目录匹配步骤4的 Release 模式)
-Dsonar.exclusions=**/obj/**,**/bin/Debug/** ` # 排除无需扫描的目录编译临时文件、Debug 目录)
-Dsonar.coverage.exclusions=**/Test/**,**/*.Tests.cs # 排除测试代码目录(按需调整)