代码扫描:SonarQube
代码扫描:SonarQube
静态代码扫描是CI/CD中重要的一环,可以在代码提交到代码仓库之后,在CI/CD流程中加入代码扫描步骤,从而及时地对代码进行质量的检查。这可以有效地降低后期维护成本,优化产品质量,提高产品交付速度。同时,静态代码扫描还可以将代码问题自动通知给开发人员,使得问题得到及时发现和解决。通俗地说,通过将静态代码分析融入到CI/CD流程中,可以进一步提高软件开发过程的效率和质量,帮助团队快速交付高质量的产品。
Sonarqube是一款开源的代码质量管理平台,用于检测代码中的错误,漏洞和代码规范,通过插件的机制,可以基于现有的Gitlab、Jenkins 集成、以便在项目拉取后进行连续的代码检查。旨在提供一个完整的代码质量管理解决方案。SonarQube的优势:
- 支持众多计算机编程语言
- 通过插件机制能集成IDE、Jenkins、Git等
- 内置大量常用代码检查规则
- 支持定制开发规则
- 可视化界面
- 支持从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目
Sonarqube的工作原理如下:
- 代码收集:首先,Sonarqube向代码仓库请求代码,并将代码下载到本地。
- 代码分析:然后,Sonarqube使用其内置的代码分析器分析代码并生成有关代码质量的重要信息,例如代码复杂性、代码重复性、代码测试覆盖率等。
- 数据存储:Sonarqube将收集的数据存储在其数据库中,以供后续使用。
- 报告生成:Sonarqube使用其内置的报告生成器生成各种数据可视化图表、报告和警告,并将其呈现给用户。
- 反馈和持续改进:用户可以使用Sonarqube提供的反馈功能来共享意见和建议,以改善代码质量。此外,Sonarqube还提供了持续集成和持续交付等功能,以帮助团队在代码开发过程中不断改进代码质量。
安装
1.安装Java 17并配置环境变量
下载地址:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
#解压
tar zxf jdk-17_linux-x64_bin.tar.gz
mv jdk-17.0.9 /hos/jdk
#编辑/etc/profile文件,填入以下内容
export JAVA_HOME=/hos/jdk
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#加载
source /etc/profile
2.安装数据库PostgreSQL 13
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql13-server
/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl enable postgresql-13
systemctl start postgresql-13
#创建用户和数据库
su - postgres
psql
create user sonarqube with password 'sonarqube';
create database sonarqube owner sonarqube;
3.配置内核参数
vi /etc/sysctl.conf
# 添加以下内容
vm.max_map_count=524288
fs.file-max=131072
#加载
sysctl -p
vi /etc/security/limits.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
4.创建SonarQube启动用户(SonarQube 内置了 elasticsearch,elasticsearch 不允许使用 root 用户启动)
useradd sonarqube
passwd sonarqube
su - sonarqube
安装
建议下载长期支持版,下载地址:https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.3.79811.zip
unzip sonarqube-9.9.3.79811.zip
cd sonarqube-9.9.3.79811
#配置数据库参数
vi conf/sonar.properties
# 更改数据连接配置
sonar.jdbc.username=test_user
sonar.jdbc.password=abc123
sonar.jdbc.url=jdbc:postgresql://localhost:5432/test_db
#启动,sonarqube使用9000端口,es使用9001端口
bin/linux-x86-64/sonar.sh start
访问
访问地址:http://服务器IP:9000,初始账号:admin,密码:admin
插件
自动安装
以安装中文插件为例:登录sonarqube,进入【Administration】➡【Marketplace】➡【Plugins】:
首次使用需要先同意风险提示:
搜索并下载中文插件 “Chinese Pack”:
安装完插件之后需要重启一下sonarqube才能生效,上方菜单栏的【Administration】➡【System】➡【Restart Rerver】:
手动安装
以上为自动安装流程,但是只能安装最新版本,如果使用的sonarqube历史版本,可能和最新插件不兼容,所以手动安装步骤如下:
首先参考自动安装中搜索插件的步骤,找到插件后进入插件主页,可以根据对应关系下载插件的历史版本,下载后上传到sonarqube的安装目录:sonarqube/extensions/plugins/
,然后重启服务即可生效。
使用
1.Maven构建中使用sonarqube分析代码
1、在 pom.xml 文件中添加 Sonarqube 插件
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.8.0.2131</version>
</plugin>
</plugins>
</build>
2、运行 Maven 构建命令来构建代码,并生成 Sonarqube 报告
$ mvn sonar:sonar