@echo off chcp 65001 >nul echo ======================================== echo SLMS SonarQube 代码质量分析 echo ======================================== echo. REM 配置 SonarQube 服务器信息(已安装并运行) set SONAR_HOST_URL=http://localhost:9000 set SONAR_PROJECT_KEY=slms:smart-library-management-system set SONAR_TOKEN= REM 检查是否配置了 Token if "%SONAR_TOKEN%"=="" ( echo 警告: 未配置 SonarQube Token echo. echo 请按以下步骤配置: echo 1. 访问 %SONAR_HOST_URL% echo 2. 登录(默认: admin/admin) echo 3. 进入 My Account ^> Security echo 4. 生成 Token echo 5. 将 Token 填入本脚本的 SONAR_TOKEN 变量 echo. set /p SONAR_TOKEN=请输入 SonarQube Token(或按回车跳过): echo. ) echo 选择分析方式: echo 1. 快速分析(仅编译和分析) echo 2. 完整分析(清理、编译、测试、分析) echo 3. 仅查看配置 echo 4. 启动 SonarQube 服务器(Docker) echo 5. 打开 SonarQube 仪表板 echo 0. 退出 echo. set /p choice=请输入选项 (0-5): if "%choice%"=="1" goto quick if "%choice%"=="2" goto full if "%choice%"=="3" goto config if "%choice%"=="4" goto start_server if "%choice%"=="5" goto dashboard if "%choice%"=="0" goto end goto end :quick echo. echo ======================================== echo 快速分析 echo ======================================== echo. echo [1/2] 编译项目... call mvn clean compile -q if %errorlevel% neq 0 ( echo ✗ 编译失败! pause exit /b 1 ) echo ✓ 编译成功 echo. echo [2/2] 运行 SonarQube 分析... if "%SONAR_TOKEN%"=="" ( call mvn sonar:sonar -Dsonar.host.url=%SONAR_HOST_URL% ) else ( call mvn sonar:sonar -Dsonar.host.url=%SONAR_HOST_URL% -Dsonar.login=%SONAR_TOKEN% ) if %errorlevel% neq 0 ( echo ✗ 分析失败! echo. echo 可能的原因: echo 1. SonarQube 服务器未启动 echo 2. Token 不正确 echo 3. 网络连接问题 pause exit /b 1 ) echo ✓ 分析完成 goto success :full echo. echo ======================================== echo 完整分析 echo ======================================== echo. echo [1/4] 清理项目... call mvn clean -q echo ✓ 清理完成 echo. echo [2/4] 编译项目... call mvn compile -q if %errorlevel% neq 0 ( echo ✗ 编译失败! pause exit /b 1 ) echo ✓ 编译成功 echo. echo [3/4] 运行测试... call mvn test -q if %errorlevel% neq 0 ( echo ⚠ 测试失败,但继续分析... ) echo ✓ 测试完成 echo. echo [4/4] 运行 SonarQube 分析... if "%SONAR_TOKEN%"=="" ( call mvn sonar:sonar -Dsonar.host.url=%SONAR_HOST_URL% ) else ( call mvn sonar:sonar -Dsonar.host.url=%SONAR_HOST_URL% -Dsonar.login=%SONAR_TOKEN% ) if %errorlevel% neq 0 ( echo ✗ 分析失败! pause exit /b 1 ) echo ✓ 分析完成 goto success :config echo. echo ======================================== echo 当前配置 echo ======================================== echo. echo SonarQube 服务器: %SONAR_HOST_URL% echo Token 状态: %SONAR_TOKEN:~0,10%... echo. echo 项目配置文件: sonar-project.properties echo. type sonar-project.properties | findstr /B "sonar.projectKey sonar.projectName sonar.projectVersion sonar.sources" echo. goto end :start_server echo. echo ======================================== echo SonarQube 服务器状态 echo ======================================== echo. echo SonarQube 已安装并运行在: echo %SONAR_HOST_URL% echo. echo 如需访问 SonarQube: start %SONAR_HOST_URL% echo. goto end :dashboard echo. echo 正在打开 SonarQube 仪表板... start %SONAR_HOST_URL%/dashboard?id=%SONAR_PROJECT_KEY% goto end :success echo. echo ======================================== echo 分析成功! echo ======================================== echo. echo 查看报告: echo %SONAR_HOST_URL%/dashboard?id=%SONAR_PROJECT_KEY% echo. echo 主要指标: echo • 可靠性(Bugs) echo • 安全性(Vulnerabilities) echo • 可维护性(Code Smells) echo • 覆盖率(Coverage) echo • 重复代码(Duplications) echo. set /p open=是否打开仪表板?(Y/N): if /i "%open%"=="Y" ( start %SONAR_HOST_URL%/dashboard?id=%SONAR_PROJECT_KEY% ) :end echo. pause