一、前语

最近出于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,版别过高会存在兼容性问题。

sonarqube运用指北(一)- 根据docker的装置布置

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运用指北(一)- 根据docker的装置布置
初度登录会要求你更改密码建议,替换一个杂乱度高的密码,由于渠道会触及公司代码信息,假如泄漏会导致严重数据走漏,安全措施必须要做好。 到这儿sonarqube就现已被成功装置了,下一次会具体介绍如何完结一次简单的本地扫描。

有问题欢迎随时交流~