sonarqube代码检测平台搭建
前言:项目开发过程中,CodeReview 是一个很重要的步骤,站在个人角度,CodeReview过程中,每个程序员都会交流编码过程中的一些好的想法,都会暴露编码能力的缺点,所以CodeReview能很快提高一个程序员的编码能力,站在公司角度,CodeReview能很好的保证代码质量,提高程序的稳定性,在公司的发展过程中,好的代码质量能让程序的维护成本更低,投入更少,所以CodeReview是一个很重要的环节。...so...有什么好的工具能够初步检查代码质量,找出代码中的隐患?
1. 工具选型
工具名称 | 支持语言类型 | 优点 | 缺点 | 是否免费 |
---|---|---|---|---|
DeepSource | Python、JavaScript、Go、Ruby、Java、Docker、SQL、Terraform、Shell | 单个文件配置,对拉取请求进行质量检查,问题频谱,维护活跃度分析器,可以详细了解每一个问题,分析器可以为经常发生的问题提出修复建议,如果允许的话,它们还可以创建修复过的拉取请求 | 不支持 PHP | 付费用户从 12 美元 / 月起算 |
SonarQube | 25 种以上的编程语言,包括 Java、C#、JavaScript、TypeScript、C/C++、COBOL 及其他 | 多语言支持,安全性分析,发布质量代码,可以识别蹊跷的问题,提供IDE 集成、Jenkins 集成和代码评审工具 | 并不是每个 IDE 都支持 SonarQube,不能选择忽略团队不需要去修复的问题。 | 社区版是免费和开源的。商业版起步价为 120 欧元。 |
Codacy | 30种以上语言,包括Elixir、Go、Java、JavaScript、JSON、Kotlin、Python、Ruby、Scala、Swift、TypeScript 等 | 代码评审自动化,代码质量分析,安全代码分析,集群安装 / 多个实例。 | 缺乏与其他 SaaS 服务集成能力,无法加密项目信息或限制对源代码的访问,社区相对较小。 | 对开源免费,付费用户起步价为 15 美元 / 月 |
DeepScan | JavaScript、TypeScript、React 和 Vue.js | 缺陷跟踪,自动化构建,代码评审,协作,持续集成。 | 有限的语言支持 | 对开源免费,付费用户起步价为 9 美元 / 月 |
以上是几种主流的代码分析工具,可以直接进行代码扫描,本文选取sonarqube作为代码静态分析工具。
2. sonarqube 简介
SonarQube 官网.
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。 Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。 支持java, JavaScrip, Scala 等等二十几种编程语言的代码质量管理与检测。 SonarQube是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味。它可以与您现有的工作流程集成,以便在项目分支和拉取请求之间进行连续的代码检查。
3. 平台搭建
SonarQube 提供了docker镜像,可以直接通过docker 来进行安装。
(环境前提:docker环境,安装docker-compose )
a. 文件映射目录建立
mkdir sonar
cd sonar
mkdir -p ./opt/sonarqube/{conf,data,logs,extensions}
mkdir -p ./opt/postgres/{postgresql,data}
chmod -R 777 ./opt/sonarqube
b. docker-compose文件编写
version: '3'
services:
postgres:
image: postgres:14.7
restart: always
container_name: postgres
ports:
- 5432:5432
volumes:
- ./opt/postgres/postgresql/:/var/lib/postgresql
- ./opt/postgres/data/:/var/lib/postgresql/data
environment:
TZ: Asia/Shanghai
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar123
POSTGRES_DB: sonar
networks:
- sonar-network
sonar:
image: sonarqube:9.8.0-community
restart: always
container_name: sonar
depends_on:
- postgres
volumes:
- ./opt/sonarqube/extensions:/opt/sonarqube/extensions
- ./opt/sonarqube/logs:/opt/sonarqube/logs
- ./opt/sonarqube/data:/opt/sonarqube/data
- ./opt/sonarqube/conf:/opt/sonarqube/conf
ports:
- 9000:9000
environment:
SONARQUBE_JDBC_USERNAME: sonar
SONARQUBE_JDBC_PASSWORD: sonar123
SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: true
networks:
- sonar-network
networks:
sonar-network:
driver: bridge
d. 启动
docker-compose -f docker-compose.yaml up -d
如果出错:
Elastic search max virtual memory areas vm.max_map_count [65530] is too low, increase to 262144
elasticsearch 需要申请最大连续使用内存。
解决方法:
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
4. 平台配置
访问: http://ip:9000
初始密码:admin /admin,进入后需要更新密码。
1. 中文插件安装
安装完成后重启
2. sonar工作流程
3. sonar 配置
a. 创建空的项目(或者打通gitlab)
b. 配置分析器(本地)
c. 查看代码分析结果
5. 小结
sonar能搭配gitlab,jenkin做定期代码扫描,或者代码提交前校验,sonar 能检测出Bug 漏洞 有异味代码,能大大降低代码的错误率。