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 漏洞 有异味代码,能大大降低代码的错误率。

posted @ 2023-05-03 14:55  年年糕  阅读(56)  评论(0编辑  收藏  举报