一、前言
最近出于SDL的安全需求,打算部署一个静态代码扫描工具,出于通用性和可靠性的考虑,选择sonarqube来执行静态代码扫描。
SonarQube 是一个用于进行代码质量管理的开源平台,它提供了代码静态分析、代码检查、代码覆盖率等功能。下面是 SonarQube 的一些优缺点:
优点:
-
全面的代码质量管理: 提供了全面的代码质量管理功能,包括代码静态分析、代码规范检查、代码重复检测、单元测试覆盖率等。
-
支持多种变成语言。
-
易于集成: SonarQube 可以与持续集成工具(如 Jenkins、GitLab CI)以及代码版本控制系统(如 Git、SVN)进行集成,使得代码质量分析可以自动化执行。
-
详细的报告和指标: SonarQube 提供了详细的报告和指标,包括代码质量、安全漏洞、技术债务等方面的数据。
-
活跃的社区支持: SonarQube用户基数大, 有一个活跃的社区,提供了丰富的文档、教程和插件。
缺点:
-
资源消耗较大: 进行代码质量分析需要消耗一定的系统资源,尤其是对大型项目和复杂代码库来说,可能会占用较多的内存和处理器资源。
-
配置复杂: SonarQube 的配置比较复杂,需要对各种规则和插件进行合理的配置,以适应项目的需求和团队的开发规范。
-
部分功能需要付费: SonarQube 的企业版提供了一些高级功能和支持服务,但需要付费购买。如果只需要一些基础实现还是足够了。
二、安装部署
由于docker部署的方便性,本文也会采用docker部署的方式来进行。
下文中的操作都是基于centos7来执行的。
2.1 基础系统配置
主机:4核8g
注:如果代码项目不大的话可以使用4g内存,程序的性能瓶颈主要出现在内存上,如果内存不够会导致扫描异常结束,提示在执行扫描时提示java占用内存不足。
docker:Docker Engine - Community -25.0.3
注:使用docker安装需要使用docker compose ,请确保自己安装的docker版本包含compose组件。
在centos7的环境下,直接使用yum安装的docker版本过低,可能会导致安装异常。需要自己指定源安装,相关教程在此不多提及。
虚拟内存:vm.max_map_count=262144
vim /etc/sysctl.conf # 手动设置最大虚拟内存
vm.max_map_count=262144 #在最下方添加该配置并保存退出
注:如果未配置该项的话,会导致docker安装时报错:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ,原因就是默认的虚拟内存过小,通常只有65530
2.2 docker配置+安装
2.2.1 拉取相关镜像
docker pull postgres:12
docker pull sonarqube:lts-community #最稳定的社区版
注:这里的postgres需要指定安装版本为12,默认拉取镜像为15,版本过高会存在兼容性问题。
2.2.2 创建数据卷
mkdir -p /data/docker/sonarqube/{postgresql,postgresql_data,sonarqube_extensions,sonarqube_logs,sonarqube_data}
chmod 777 -R /data/sonarqube/
注:如果这里没有chmod权限会导致docker启动时提示权限不足。
sonarqube 容器报错java.lang.IllegalStateException: Unable to access 'path.data' (/opt/sonarqube/data/es7)
您也可以使用
docker volume create sonarqube_extensions 来直接创建卷
2.2.3 创建docker-compose-sonarqube.yml 作为启动文件
version: "3"
services:
sonarqube:
image: sonarqube:lts-community
restart: always
container_name: sonarqube
depends_on:
- postgresdb
environment:
TZ: Asia/Shanghai
SONAR_JDBC_URL: jdbc:postgresql://postgresdb:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- /data/docker/sonarqube/sonarqube_data:/opt/sonarqube/data
- /data/docker/sonarqube/sonarqube_extensions:/opt/sonarqube/extensions
- /data/docker/sonarqube/sonarqube_logs:/var/log/sonarqube/logs
- /etc/localtime:/etc/localtime:ro
ports:
- 9000:9000
postgresdb:
image: postgres:12
restart: always
container_name: postgres
ports:
- 5432:5432
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
POSTGRES_DB: sonar
volumes:
- /data/docker/sonarqube/postgresql:/var/lib/postgresql
- /data/docker/sonarqube/postgresql_data:/var/lib/postgresql/data
- /etc/localtime:/etc/localtime:ro
如果在上一步中直接使用了docker 卷 这里的配置可以写成:
volumes:
-sonarqube_data:/opt/sonarqube/data
-sonarqube_extensions:/opt/sonarqube/extensions
-sonarqube_logs:/var/log/sonarqube/logs
其他几个卷可以类推,在此就不一一列举了。如果提示权限问题,可以考虑上面的手动创建卷的方式。
2.2.4 正式部署
在相关配置都正常完成的前提下,我们在yml目录下执行
docker compose up -d #低版本docker 请使用docker-compose up -d
成功启动后,访问 url:9000 即可。
默认账号密码 admin/admin
初次登录会要求你更改密码建议,更换一个复杂度高的密码,因为平台会涉及公司代码信息,如果泄漏会导致严重数据泄露,安全措施必须要做好。
到这里sonarqube就已经被成功安装了,下一次会具体介绍如何完成一次简单的本地扫描。
有问题欢迎随时交流~
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)