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

修改密码

可以使用啦 !!!
相关推荐
回眸不遇11 小时前
类型的区别和应用场景 nested 每个对象独立存储为隐藏的子文档 适合存储数组 查询的时候有特定的语法 nested查询 且字段要 ...
运维·jenkins
X1A0RAN1 天前
容器化部署 Jenkins 教程
运维·docker·jenkins
BullSmall1 天前
jenkins 全局工具变更后,构建的任务为什么没有刷新过来
运维·jenkins
BullSmall1 天前
报错 libatomic.so.1: No such file or directory
jenkins
ji_shuke2 天前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
上海安当技术2 天前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
Mr. zhihao2 天前
Jenkins 从节点连不上主节点?一次网络排查全记录 + 机器间通信“拦截层“全景讲解
网络·servlet·jenkins
砍材农夫3 天前
运维|devops|jenkins构建分支选择及执行日志展示
运维·jenkins·devops
阿标在干嘛4 天前
政策快报平台日志系统的3次演进:从文件到ELK到告警
运维·elk·jenkins
worilb4 天前
Spring Cloud 学习与实践(16):Elasticsearch 商品搜索、中文分词与索引一致性
运维·jenkins