环境准备
-  
Jenkins 服务器
- 确保 Jenkins 已安装并运行(推荐 LTS 版本)。
 - 安装插件: 
- SonarQube Scanner for Jenkins(用于集成 SonarQube 扫描)
 - NodeJS Plugin(可选,用于 JavaScript 项目)
 - Pipeline Utility Steps(Pipeline 项目可能需要)
 
 
 -  
SonarQube 服务器
- 安装 SonarQube 并启动(版本需兼容语言插件)。
 - 安装语言插件: 
- SonarJava(Java)
 - SonarPython(Python)
 - SonarJS(JavaScript/TypeScript)
 - SonarCFamily(C/C++,需企业版或社区版插件)| Sonar-cxx插件
 - SonarGroovy(Groovy)
 - SonarRust(Rust,需社区插件)
 
 - 生成 SonarQube Token:
登录 SonarQube → 用户头像 → My Account → Security → 生成 Token。 
 
1
Jenkins 全局配置
-  
配置 SonarQube 服务器
- 进入 Jenkins → Manage Jenkins → System Configuration → Configure System。
 - 找到 SonarQube servers → 点击 Add SonarQube: 
- Name: 自定义名称(如 
SonarQube-Prod) - Server URL: SonarQube 服务器地址(如 
http://sonar.example.com:9000) - Server authentication token: 选择预存的 SonarQube Token(需提前在 Jenkins Credentials 中配置)。
 
 - Name: 自定义名称(如 
 
 -  
配置 SonarScanner
- 进入 Jenkins → Manage Jenkins → Tools → SonarScanner installations。
 - 添加 SonarScanner 版本(自动下载或指定本地路径)。
 
 
三、项目配置(以 Pipeline 项目为例)
-  
Pipeline 脚本模板
pipeline {agent anyenvironment {SONAR_SCANNER_HOME = tool 'SonarScanner' // 与全局配置的名称一致}stages {stage('Checkout') {steps {git url: 'https://github.com/your-project.git', branch: 'main'}}stage('Build & Test') {steps {// 根据语言执行编译和测试(例如 Maven、Gradle、Make 等)sh 'mvn clean package' // Java 示例}}stage('SonarQube Analysis') {steps {withSonarQubeEnv('SonarQube-Prod') { // 与全局配置的名称一致sh """${SONAR_SCANNER_HOME}/bin/sonar-scanner \-Dsonar.projectKey=your-project-key \-Dsonar.sources=. \-Dsonar.host.url=http://sonar.example.com:9000 \-Dsonar.login=${SONARQUBE_TOKEN} \-Dsonar.language=java # 指定语言(可选)"""}}}} } -  
多语言项目配置
- 在 
sonar-scanner命令中指定语言相关参数,或通过sonar-project.properties文件配置。 - 示例 
sonar-project.properties:sonar.projectKey=your-project sonar.sources=src sonar.language=java # 或 cpp, python, js 等 sonar.java.binaries=target/classes # Java 编译目录 sonar.cfamily.build-wrapper-output=bw-output # C/C++ 编译输出 
 - 在 
 
各语言特殊配置
-  
Java
- 使用 Maven/Gradle 插件:
mvn sonar:sonar -Dsonar.login=<TOKEN> - 需生成单元测试覆盖率报告(如 Jacoco)。
 
 - 使用 Maven/Gradle 插件:
 -  
C/C++
- 安装 SonarBuildWrapper(生成编译数据库):
build-wrapper --out-dir bw-output make clean all - 扫描时指定编译输出目录:
sonar-scanner -Dsonar.cfamily.build-wrapper-output=bw-output 
 - 安装 SonarBuildWrapper(生成编译数据库):
 -  
Python
- 安装依赖:
pip install pytest coverage # 生成测试覆盖率 - 扫描时指定测试框架:
sonar.python.coverage.reportPaths=coverage.xml 
 - 安装依赖:
 -  
JavaScript
- 安装 Node.js 环境。
 - 生成 LCOV 覆盖率报告:
npm test -- --coverage 
 -  
Rust
- 使用社区插件(如 
sonar-rust),需手动配置规则。 - 扫描时指定源码路径:
sonar.rust.sources=src 
 - 使用社区插件(如 
 -  
Groovy
- 使用 
sonar.groovy.file.suffixes=.groovy指定文件后缀。 
 - 使用 
 
注意事项
- 权限问题 
- 确保 Jenkins 用户有权限访问代码仓库和 SonarQube 服务器。
 
 - 版本兼容性 
- 检查 SonarQube 插件与语言版本的兼容性(如 Python 3.10+ 需要最新插件)。
 
 - 代码覆盖率 
- 大多数语言需手动生成覆盖率报告(如 Jacoco、Coverage.py、LCOV)。
 
 - 增量分析 
- 使用 
sonar.scm.provider=git启用增量分析以加速扫描。 
 - 使用 
 
验证结果
- 在 Jenkins 控制台查看扫描日志,确认无报错。
 - 登录 SonarQube 控制台,查看项目分析结果。
 - 根据 SonarQube 提示修复代码质量问题。
 
通过以上步骤,可实现 Jenkins 与 SonarQube 的自动化代码质量检查,支持多种语言静态分析。