前景
静态代码扫描是CI/CD中重要的一环,可以在代码提交到代码仓库之后,在CI/CD流程中加入代码扫描步骤,从而及时地对代码进行质量的检查。这可以有效地降低后期维护成本,优化产品质量,提高产品交付速度。同时,静态代码扫描还可以将代码问题自动通知给开发人员,使得问题得到及时发现和解决。
通俗地说,通过将静态代码分析融入到CI/CD流程中,可以进一步提高软件开发过程的效率和质量,帮助团队快速交付高质量的产品。
静态代码分析
静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如:参数不匹配、有歧义的嵌套语句、错误的递归、非法计算、可能出现的空指针引用等等。
作用一个
- 快速定位代码隐藏错误和缺陷;
- 提高软件可靠性并节省软件开发和测试成本;
java代码分析
python代码分析
Sonarqube介绍
是一款开源的代码质量管理平台,用于检测代码中的错误,漏洞和代码规范,通过插件的机制,可以基于现有的Gitlab、Jenkins 集成、以便在项目拉取后进行连续的代码检查。旨在提供一个完整的代码质量管理解决方案。
优势
- 支持众多计算机编程语言
- 通过插件机制能集成IDE、Jenkins、Git等
- 内置大量常用代码检查规则
- 支持定制开发规则
- 可视化界面
- 支持从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目
框架
- 数据库层:Sonarqube使用一个数据库来存储所有的代码质量数据。
- 应用程序层:Sonarqube的应用程序层包括一系列基于Java的Web应用程序,这些应用程序负责收集数据、分析代码和生成报告等任务。
- 插件层:Sonarqube的插件层是一个可扩展的架构,它允许用户安装和使用各种不同的插件来增强Sonarqube的功能和灵活性。
- 数据采集层:Sonarqube支持多种不同的代码仓库和版本控制系统,包括SVN、Git、Mercurial和ClearCase等。使用这些数据采集插件,Sonarqube可以轻松地从不同的代码库中收集数据。
工作原理
- 代码收集:首先,Sonarqube向代码仓库请求代码,并将代码下载到本地。
- 代码分析:然后,Sonarqube使用其内置的代码分析器分析代码并生成有关代码质量的重要信息,例如代码复杂性、代码重复性、代码测试覆盖率等。
- 数据存储:Sonarqube将收集的数据存储在其数据库中,以供后续使用。
- 报告生成:Sonarqube使用其内置的报告生成器生成各种数据可视化图表、报告和警告,并将其呈现给用户。
- 反馈和持续改进:用户可以使用Sonarqube提供的反馈功能来共享意见和建议,以改善代码质量。此外,Sonarqube还提供了持续集成和持续交付等功能,以帮助团队在代码开发过程中不断改进代码质量。
sonarqube7.8版本支持MS SQLserver、Oracle、Postgresql、MySQL四种数据库,但是从7.8版本之后,sonarqube不再支持MySQL数据库,
部署
环境要求
软件 | 版本 |
jdk | 17 |
postgersql | 12.1 |
sonarqube | 10.1 |
下载地址
Code Quality, Security & Static Analysis Tool with SonarQube | Sonar
本次选择10.1社区版本安装(点击下载后,先进行后续操作,等下载完成后上传至linux服务器)
查看官方文档
最小配置要求
jdk版本
postgresql版本
安装
安装docker
yum install docker
docker version
#启动docker服务
systemctl start docker
systemctl status docker
systemctl enable docker
postgresql安装
#此处直接使用docker安装
#默认用户名是 postgres ,密码是123456
docker run --name postgres -v dv_pgdata:/var/lib/postgresql/data --restart=always -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:12.1
#查看服务
docker ps -a
安装jdk17
(请参考如下链接)
Linux安装java17-CSDN博客
在PostgreSQL中新建sonar数据库:
docker exec -it postgres bash
su postgres
psql -U postgres -W
123456
CREATE DATABASE sonar;
上传下载完的sonarqube安装包到服务器
解压
unzip sonarqube-10.1.0.73491.zip
mv sonarqube-10.1.0.73491 sonarqube-10.1.0
创建用户
# 创建sonar用户,sonar不能用root启动,否则报错
useradd sonar
#设置密码
passwd sonar
设置权限
#(文件目录根据自己实际进行修改)
chown -R sonar /app/sonar/sonarqube-10.1.0
修改配置文件
vim /app/sonar/sonarqube-10.1.0/conf/sonar.properties
sonar.jdbc.username=postgres
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonar
修改JVM参数(sonar版本要求)
-Xmx 和 -Xms 是 Java 虚拟机(JVM)的参数,用于设置 Java 程序的堆内存的最大值(maximum heap size)和初始值(initial heap size)。
-Xmx 参数用于设置 Java 程序的堆内存的最大值。
-Xms 参数用于设置 Java 程序的堆内存的初始值
sonar.web.javaOpts=-Xmx2g -Xms1g -XX:+HeapDumpOnOutOfMemoryError
sonar默认自带了ES,所以需要修改配置,防止启动报错:
vim /etc/security/limits.conf
# 追加内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
vim /etc/security/limits.d/90-nproc.conf
# 追加内容
* soft nproc 4096
vim /etc/sysctl.conf
# 追加内容
vm.max_map_count=655360
启动sonar
(sonar的默认端口是9000)
切换至sonar用户
su sonar
cd /app/sonar/sonarqube-10.1.0/bin/linux-x86-64
启动
sh sonar.sh start
停止
sh sonar.sh stop
查看日志
tail -f /app/sonar/sonarqube-10.1.0/logs/sonar.log
登录页面
默认用户名admin密码admin
修改密码
可以使用啦 !!!
汉化
选择版本
将下载好的jar包放入 /app/sonar/sonarqube-10.1.0/extensions/plugins 下
重启sonar