sonar搭建(linux系统)

前景

静态代码扫描是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可以轻松地从不同的代码库中收集数据。

工作原理

  1. 代码收集:首先,Sonarqube向代码仓库请求代码,并将代码下载到本地。
  2. 代码分析:然后,Sonarqube使用其内置的代码分析器分析代码并生成有关代码质量的重要信息,例如代码复杂性、代码重复性、代码测试覆盖率等。
  3. 数据存储:Sonarqube将收集的数据存储在其数据库中,以供后续使用。
  4. 报告生成:Sonarqube使用其内置的报告生成器生成各种数据可视化图表、报告和警告,并将其呈现给用户。
  5. 反馈和持续改进:用户可以使用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

修改密码

可以使用啦 !!!
相关推荐
_oP_i2 小时前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
coder_pig14 小时前
📝小记:Ubuntu 部署 Jenkins 打包 Flutter APK
flutter·ubuntu·jenkins
运维&陈同学1 天前
【Elasticsearch05】企业级日志分析系统ELK之集群工作原理
运维·开发语言·后端·python·elasticsearch·自动化·jenkins·哈希算法
csdn_金手指2 天前
Jenkins持续交付web应用,通过docker制作相关的镜像进行发布部署
运维·jenkins
龙少95432 天前
【SpringBoot中怎么使用ElasticSearch】
spring boot·elasticsearch·jenkins
紫菜(Nori)3 天前
Jenkins 中 写 shell 命令执行失败,检测失败问题
jenkins
jwensh3 天前
【Jenkins】pipeline 的基础语法以及快速构建一个 jenkinsfile
pipeline·jenkins
测试工程师成长之路3 天前
解锁 Jenkins+Ant+Jmeter 自动化框架搭建新思路
jmeter·自动化·jenkins
听说唐僧不吃肉3 天前
CICD篇之通过Jenkins中书写pipeline构建编译打包发布流程
运维·jenkins
iRayCheung3 天前
python elasticsearch 8.x通过代理发起请求方法
python·elasticsearch·jenkins