SonarQube 在本地执行分析及自动化运行示例(.NET Core/.NET Framework /JS等)

SonarQube 在本地执行分析

分析方案

一、.NET Core 项目

(一)环境准备

  1. 安装 .NET SDK:确保系统已配置 .NET SDK,可通过 dotnet --version 命令验证。
  2. 安装 SonarScanner 全局工具
    dotnet tool install --global dotnet-sonarscanner
    

(二)本地执行分析

在项目目录下,依次执行以下命令:

  1. 开始分析

    dotnet sonarscanner begin /k:"项目标识" ^
    /d:sonar.host.url="sonarqube服务Url" ^
    /d:sonar.token="分析令牌" ^
    /d:sonar.verbose=true
    
    • /k:指定项目的唯一标识。
    • /d:sonar.host.url:SonarQube 服务器的地址。
    • /d:sonar.token:用于认证的分析令牌。
    • /d:sonar.verbose:开启详细日志输出。
  2. 构建项目

    dotnet build 解决方案名称.sln --no-incremental
    
    • --no-incremental:确保完全重新构建项目。
  3. 收集测试覆盖率(可选)

    dotnet-coverage collect "dotnet test" -f xml -o "coverage.xml"
    
    • 使用 dotnet-coverage 收集测试覆盖率数据,并输出为 XML 格式。
  4. 结束分析

    dotnet sonarscanner end /d:sonar.token="分析令牌"
    
    • 提交分析结果到 SonarQube 服务器。

二、.NET Framework 项目

(一)环境准备

  1. 安装 .NET SDK:确保系统已配置 .NET SDK。
  2. 安装 MSBuild:确保 MSBuild 可通过命令行访问,若无法访问,需将 MSBuild 的 Bin 目录添加到环境变量中。
  3. 下载 SonarScanner for .NET
    • SonarScanner for .NET releases 下载并解压。
    • 配置环境变量:将SonarScanner for .NET程序的路径添加到系统的环境变量中。具体操作为:在系统环境变量设置中,找到“Path”变量,点击“编辑”,然后添加SonarScanner for .NET程序的 解压 目录。
    • 验证安装:打开命令提示符,输入SonarScanner.MSBuild.exe -h,如果显示帮助信息,则说明安装成功。

(二)本地执行分析

在项目目录下,依次执行以下命令:

  1. 开始分析

    SonarScanner.MSBuild.exe begin /k:"项目标识" ^
    /d:sonar.host.url="SonarQube服务Url" ^
    /d:sonar.token="分析令牌"
    
  2. 构建项目

    MsBuild.exe BTSClient.sln /t:Rebuild
    
    • /t:Rebuild:强制重新构建解决方案。
  3. 结束分析

    SonarScanner.MSBuild.exe end /d:sonar.token="分析令牌"
    

三、其他语言项目(比如JS、TS、GO等)

(一)环境准备

  1. 下载并解压 SonarScanner(Windows)
    • SonarScanner releases 下载对应平台的扫描器并解压。
    • 配置环境变量:将SonarScanner扫描器的路径添加到系统的环境变量中。具体操作为:在系统环境变量设置中,找到“Path”变量,点击“编辑”,然后添加SonarScanner扫描器的 bin 目录。
    • 验证安装:打开终端或命令提示符,运行以下命令:sonar-scanner -v,如果安装成功,将显示 SonarScanner 的版本信息。

(二)本地执行分析

在项目目录下,执行以下命令:

sonar-scanner.bat -D"sonar.projectKey=项目标识" \
-D"sonar.sources=." \
-D"sonar.host.url=SonarQube服务Url" \
-D"sonar.token=分析令牌"
  • -D"sonar.projectKey":指定项目的唯一标识。
  • -D"sonar.sources":指定源代码目录。
  • -D"sonar.host.url":SonarQube 服务器的地址。
  • -D"sonar.token":用于认证的分析令牌。

注意事项

  • 确保 SonarQube 服务器已启动且可访问。
  • 在开始分析前,需在 SonarQube 服务器上创建项目并获取对应的项目标识和分析令牌。
  • 若项目有特殊配置需求,可在命令中添加相应的参数,如指定代码覆盖率报告路径等。
  • 分析完成后,可在 SonarQube 服务器上查看详细的分析结果。
  • 当前版本SonarQube 服务不支持分支功能,需使用主分支扫描

自动化分析脚本

操作步骤

1、选择方案:根据项目需求,选择合适的分析方案。
2、执行本地分析:在本地执行分析并确保成功。
3、创建批处理文件:参考以下示例代码,将内容复制到文本编辑器中,保存为 .bat 文件(使用 ANSI 编码),例如 sonar_analysis.bat。
4、替换脚本路径:将 执行的脚本 替换为实际的脚本路径。
5、运行批处理文件:通过双击运行该文件,或将其设置为定时任务以自动执行。

示例代码

@echo off
setlocal enabledelayedexpansion

REM 切换到解决方案文件所在的目录
cd /d D:\master
if %ERRORLEVEL% neq 0 (
    echo 无法切换到目标目录
    pause
    exit /b 1
)
REM 开始分析
echo 开始分析...
dotnet sonarscanner begin /k:"项目标识" ^
/d:sonar.host.url="sonarqube服务Url" ^
/d:sonar.token="分析令牌" ^
/d:sonar.verbose=true
if %ERRORLEVEL% neq 0 (
    echo 开始分析失败,错误代码:%ERRORLEVEL% 
    goto end
)

REM 构建项目
echo 构建项目...
dotnet build 解决方案名称.sln --no-incremental
if %ERRORLEVEL% neq 0 (
    echo 构建项目失败,错误代码:%ERRORLEVEL% 
    goto end
)

REM 结束分析
echo 结束分析...
dotnet sonarscanner end /d:sonar.token="分析令牌"
if %ERRORLEVEL% neq 0 (
    echo 结束分析失败,错误代码:%ERRORLEVEL% 
)

:end
REM 输出最终结果
echo 分析完成...
pause

注意事项

  • 确保脚本中的目标目录、分析语句 正确无误。
  • 检查文件编码,确保批处理文件保存为 ANSI 编码。
  • 在命令提示符中手动运行命令,确认命令本身没有问题。
posted @ 2025-11-27 09:44  黑棠会长  阅读(7)  评论(0)    收藏  举报