SonarQube使用说明

Sonar是一个开放平台,用于代码质量管理,支持多种编程语言,提供代码分析、质量评级、技术债务评估等功能,集成IDE和持续集成工具,实现代码质量管理自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持

特色功能:
1、使用Quality Gate对项目的代码质量评级;
2、使用Technical Debt描述代码质量问题带来的技术债务;
3、提供直观方便的web操作界面,支持任务的指派和跟踪,可以发表评论;
4、提供强大的代码规范规则,可手工开启或关闭;
5、提供多维度的各种统计和分析,包括像代码注释占比、重复代码分析等。
官网
https://www.sonarqube.org/
使用流程图
在这里插入图片描述
1、开发负责人获取最新代码到本地;
2、开发负责人执行sonar-runner开始代码分析工作;
3、开发负责人将分析出来的issue指派给开发人员;
4、开发人员修复issue;
5、开发负责人重新获取最新源码,重新执行sonar-runner,检查issue的修复情况。

二、安装

参考
https://www.cnblogs.com/qiaoyeye/p/5249786.html
SonarQube是服务器端,它主要有两个功能:1.分析源代码;2.因为它内嵌了Apache模块,所以提供Web端的界面访问。
SonarQube Runner是一个利用SonarQube服务端分析代码的命令行工具,可以把它简单理解为客户端。

三、使用说明

1.获取最新源码

Sonar的工作空间在D:\sonar-workspace,可以按项目在该目录下新建目录。
将svn上最新的项目源码下载下来,如下图
在这里插入图片描述

2.启动源码分析

(1)配置sonar-project.properties文件,将sonar-project.properties放到项目根目录下。

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=safecampus
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=src/com/gzzm/safecampus
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar.java.source=1.7
sonar.java.target=1.7

sonar.projectKey 唯一
sonar.projectName为项目名称,唯一。
sonar.sources指明源码位置,指明为src则会扫描整个src目录。
src/com/gzzm/safecampus声明仅需要扫描src/com/gzzm/safecampus目录。
sonar.java.source和sonar.java.target按实际情况配置。

(2)在命令行下切换到项目根目录下,执行sonar-runner命令启动源码分析
在这里插入图片描述
在这里插入图片描述
执行成功
在这里插入图片描述

3.登录Sonar查看issue
http://192.168.1.204:9000/
点击项目名称 → Issue

在这里插入图片描述
在这里插入图片描述
页面左侧提供了多种维度的筛选条件供选择
在这里插入图片描述

4.将Issue指派给开发人员

在这里插入图片描述

5.处理Issue

在这里插入图片描述

6.写评论

在这里插入图片描述
评论支持通过标记代码对评论的文字进行加粗等操作,可以点击Markdown Help超链接打开标记代码帮助页面。

四、系统配置

1.创建用户

使用管理员登录。
Administration → Security → User
在这里插入图片描述
点击右上角的create,输入登录名、姓名、邮箱(用于接收通知)、登录密码。
在这里插入图片描述

2.Rules配置

可以在此设置Rule的开关,如某些规则不适用的可以将其Deactivate。
在这里插入图片描述
在这里插入图片描述

3.发送邮件

(1)系统邮箱配置
Administration → Configuration → General Settings → Email
以163邮箱为例,需要注意SMTP password中需要输入的不是163邮箱登录账号的密码,而是163邮箱的授权客户端密码。获取方法参考文章末尾的“获取163邮箱授权客户端”。
Email prefix配置的是邮件标题前缀。
在这里插入图片描述
填写完毕后点击Save Email Settings。
发送测试邮件
在这里插入图片描述
收到的测试邮件
在这里插入图片描述

(2)邮件连接url配置
Administration → Configuration → General Settings → General → Server base URL
输入系统的访问地址,如http://192.168.1.204:9000/,该url用于系统发送消息通知时将该url作为访问相关消息的一部分,方便用户可以直接点击邮件中的链接直接链接到消息目标。
(3)用户邮箱配置
用户的邮箱由系统管理员统一配置。用户可以配置那些消息需要发送邮件通知。
配置步骤:
登录后点击用户名右下角的箭头 → My profile
在这里插入图片描述
上面5项为全局配置(与项目无关),需要为特定项目配置消息通知,在Add project里输入项目名称,选择需要添加的项目。
在这里插入图片描述
勾选需要通知的消息,点击Save changes保存修改即可。
在这里插入图片描述

4.Quality Gate配置
5.Rules配置

五、常见问题

1.忘记密码

执行以下sql将密码还原为admin

update users 
set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', 
salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d' 
where login = 'admin' 
2.版本
SonarSonar-ScannerSonarLintJDK
5.32.5不支持1.7
5.6.73.2.0.12272.41.8
3.源码乱码

在Issue中查看源码,中文变成了乱码。需要设置项目的sonar-project.properties文件。
增加红色加粗字体的内容,设置源码的编码为UTF-8。需要重新执行sonar-runner生效。

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
4.获取163邮箱授权客户端

(1)登录163邮箱
(2)设置 → 常规设置
在这里插入图片描述
(3)客户端授权密码 → 开启,会提示需要手机验证码验证,按提示操作即可。
在这里插入图片描述
(4)短信验证码验证成功后,可以输入授权码。将该授权码记录下来,方便后续使用。
在这里插入图片描述
在这里插入图片描述

5.指定JDK版本

当sonar-scanner所在机器上安装了多个JDK的时候,需要为sonar-scanner的运行指定JDK版本。修改sonar-scanner_home/bin/sonar-runner.bat
设置JAVA_HOME
在这里插入图片描述

<think>我们正在讨论如何使用SonarQube进行代码质量分析。根据用户的问题和之前的引用,我们需要提供一个清晰的步骤指南。引用[1]到[5]提供了关于SonarQube的背景信息:它是一个开源的代码质量管理平台,支持多种语言,能够进行静态代码分析,检测错误、漏洞和代码异味。它还可以与CI/CD工具(如Jenkins)集成。使用SonarQube进行代码质量分析的步骤通常包括:1.安装和配置SonarQube服务器2.配置项目并运行扫描(使用SonarScanner或相应的构建工具插件)3.查看分析报告并解决问题根据引用[4],安装SonarQube需要先安装JavaJDK。然后安装SonarQube,并配置数据库(默认使用内嵌数据库,生产环境建议使用外置数据库如MySQL、PostgreSQL等)。具体步骤:一、安装与启动SonarQube服务器1.确保系统满足要求:安装Java(推荐JDK11或以上版本)2.下载SonarQube(社区版)并解压:https://www.sonarqube.org/downloads/3.启动SonarQube服务器(根据操作系统执行相应的启动脚本):在Linux/macOS中,进入解压目录的bin目录,执行:./sonar.shstart在Windows中,执行:StartSonar.bat4.访问SonarQube的Web界面:http://localhost:9000(默认管理员账号:admin/admin)二、配置数据库(可选,但生产环境推荐)根据引用[1]和[4],如果需要使用外置数据库:1.安装并启动数据库(如MySQL、PostgreSQL等)2.修改SonarQube的配置文件`conf/sonar.properties`,配置数据库连接信息,例如:对于MySQL:sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformancesonar.jdbc.username=sonarsonar.jdbc.password=sonar3.重启SonarQube三、配置项目并运行扫描1.SonarQube的Web界面中,生成一个项目令牌(Token)用于扫描时的认证。2.在要分析的项目根目录下,创建配置文件`sonar-project.properties`(或者使用命令行参数指定)。示例配置文件内容:sonar.projectKey=my-projectsonar.projectName=MyProjectsonar.projectVersion=1.0sonar.sources=srcsonar.sourceEncoding=UTF-83.运行SonarScanner扫描项目:下载SonarScanner并配置环境变量,然后在项目根目录运行:sonar-scanner-Dsonar.projectKey=my-project-Dsonar.sources=.-Dsonar.host.url=http://localhost:9000-Dsonar.login=生成的token四、查看分析报告扫描完成后,在SonarQube的Web界面上会显示项目的代码质量报告,包括:-错误(Bugs)-漏洞(Vulnerabilities)-代码异味(CodeSmells)-覆盖率(Coverage,需要先运行测试并生成覆盖率报告)-重复代码(Duplications)-技术债务(TechnicalDebt)五、集成到CI/CD(如Jenkins)根据引用[2]和[5],可以将SonarQube集成到Jenkins流水线中:1.在Jenkins中安装SonarQube插件。2.在Jenkins系统配置中配置SonarQube服务器地址和令牌。3.在Jenkinsfile中,添加一个步骤来运行SonarScanner,例如:steps{withSonarQubeEnv('SonarQube'){sh'mvnsonar:sonar'}}4.配置质量门禁(QualityGate),当代码质量不符合要求时,构建失败。注意:对于不同语言的项目,可能需要额外的配置。例如,对于Vue项目,需要确保SonarQube安装了相应的插件(如JavaScript插件)。六、解决分析出的问题在SonarQube的界面上,可以查看每个问题的详细信息,包括问题位置、严重程度和修复建议。根据建议修改代码,然后重新扫描。以上是使用SonarQube进行代码质量分析的基本步骤。具体细节可参考官方文档:https://docs.sonarqube.org/latest/根据引用[1]和[4],SonarQube能够检测的问题包括但不限于:-代码缺陷(可能导致bug)-安全漏洞-代码规范问题(可读性、可维护性)-复杂度(如循环复杂度过高,可能暗示代码难以维护,甚至可能包含无限递归的风险)-重复代码对于无限递归,SonarQube通过静态分析检测代码中的递归调用,并评估递归的终止条件是否可靠。如果发现递归没有明显的终止条件或者终止条件可能永远无法满足,就会报告为一个问题。下面生成相关问题:</think>### 如何使用SonarQube进行代码质量分析 SonarQube是一个开源的代码质量管理平台,通过静态代码分析检测代码缺陷、安全漏洞、代码异味等问题。以下是使用SonarQube进行代码质量分析的完整步骤: --- ### 一、环境准备 1. **安装Java JDK** SonarQube需要Java运行环境(推荐JDK 11+): ```bash # Ubuntu示例 sudo apt update sudo apt install openjdk-11-jdk ``` 2. **安装数据库**(可选) 生产环境建议使用外置数据库: ```bash # 安装PostgreSQL sudo apt install postgresql sudo -u postgres createdb sonarqube ``` 3. **下载SonarQube** 从官网下载社区版: [https://www.sonarqube.org/downloads/](https://www.sonarqube.org/downloads/) --- ### 二、配置与启动 1. **修改配置文件** (`conf/sonar.properties`) ```properties # 数据库配置(使用PostgreSQL示例) sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube sonar.jdbc.username=sonarqube sonar.jdbc.password=your_password # Web服务端口 sonar.web.port=9000 ``` 2. **启动SonarQube** ```bash # Linux/macOS ./bin/linux-x86-64/sonar.sh start # Windows StartSonar.bat ``` 访问 `http://localhost:9000`(默认账号:`admin/admin`) --- ### 三、项目分析配置 1. **生成项目令牌** 在SonarQube网页端: `Projects → Create Project → Generate Token` 2. **配置扫描器** **方式1:使用SonarScanner** ```bash # 安装SonarScanner npm install -g sonarqube-scanner # 在项目根目录创建配置文件 sonar-project.properties sonar.projectKey=your_project_key sonar.projectName=Your Project sonar.sources=src sonar.exclusions=**/node_modules/**,**/dist/** sonar.javascript.lcov.reportPaths=coverage/lcov.info # 覆盖率报告路径 ``` **方式2:通过构建工具**(Vue项目示例) 在 `vue.config.js` 中配置: ```javascript module.exports = { chainWebpack: config => { config.plugin('sonar').use(require('sonar-webpack-plugin'), [{ key: 'your_project_key', name: 'Vue Project', sources: './src' }]) } } ``` --- ### 四、执行代码分析 运行扫描命令: ```bash # 使用SonarScanner sonar-scanner -Dsonar.login=your_token # 或通过npm(Vue项目) npm run sonar ``` --- ### 五、查看分析结果 在SonarQube网页端查看报告: 1. **质量门禁**:检查是否通过预设质量标准 2. **问题分类**: - **Bug**:可能导致故障的代码 - **漏洞**:安全风险 - **异味**:可维护性问题 - **覆盖率**:测试代码覆盖情况 3. **热点问题**: - 无限递归(通过"循环复杂度"指标识别) - 内存泄漏(检测未释放资源) - 空指针风险 ![SonarQube报告示例](https://docs.sonarqube.org/latest/images/server-tutorial/project-home-page.png) *SonarQube分析报告界面[^2]* --- ### 六、高级功能 1. **质量门禁自定义** 在 `Quality Gates → Create` 中设置: - 最大循环复杂度(检测递归风险) - 最低测试覆盖率 - 允许的最大Bug数量 2. **CI/CD集成** 在Jenkins/GitLab CI中添加阶段: ```yaml # GitLab CI示例 sonar: image: sonarsource/sonar-scanner-cli script: - sonar-scanner -Dsonar.login=$SONAR_TOKEN ``` 3. **规则自定义** `Rules → Activate/Deactivate` 中启用/禁用特定检测规则。 --- ### 关键检测能力说明 | 检测类型 | 实现原理 | Vue示例问题 | |----------------|----------------------------------|---------------------------| | **无限递归** | 分析循环复杂度和递归终止条件 | `watch`未设深度限制[^4] | | **代码覆盖率** | 解析LCOV/JaCoCo报告 | 未测试的组件方法 | | **内存泄漏** | 检测未关闭的资源句柄 | 未销毁的事件监听器 | | **安全漏洞** | 匹配OWASP漏洞模式 | XSS风险(v-html未过滤) | > **提示**:对于Vue项目,需安装 [SonarJS插件](https://docs.sonarqube.org/latest/analyzing-source-code/test-coverage/javascript-typescript-test-coverage/) 以优化`.vue`文件分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值