SonarQube是一个开源的代码品质管理系统。

特点:

  • 支持超过25种程序语言。如Java、C/C++、C#、Python、PHP等。
  • 提供重复代码、编码标准、单元测试、单元覆盖率、代码复杂度、潜在Bug、注释和软件设计报告。
  • 提供了指标历史记录、计划图(“时间机器”)和微分查看。
  • 提供了完全自动化的分析:与MavenAntGradle持续集成工具(Atlassian BambooJenkinsHudson等)。
  • 与Eclipse开发环境集成。
  • 与JIRA、MantisLDAPFortify等外部工具集。
  • 支持扩展插件。
  • 利用SQALE计算技术债务
  • 支持Tomcat。不过计划从SonarQube 4.1起终止对Tomcat的支持。

SonarQube分为社区版、开发者版、企业版、高可用版。除了社区版是开源且免费的,其他版本都是需要收费的,所以以下所有的操作都是基于社区版进行的。

image-20220926095519167

SonarQube安装

window安装

选择对应的版本下载,笔者选择的是SonarQube 8.9.9,一个长期支持的版本,以下的安装都是基于该版本进行的,不同的版本可能会存在差异,如果版本不同,以下内容请谨慎参考。

image-20220926100145660

运行要求:https://docs.sonarqube.org/8.9/requirements/requirements/

image-20220926150559071

从上图可以看出,该版本需要jdk11的Java环境

安装完毕后,如果电脑存在多个jdk环境,比如笔者常用的开发环境是jdk8,但是该程序需求jdk最低版本为jdk11,那么则需要去修改conf\wrapper.conf配置文件

# 将该属性的值修改成对应版本的jdk
wrapper.java.command=D:\Java\jdk-11.0.16\bin\java

JDK修改完毕后,修改conf\sonar.properties,该文件有sonar的web配置和数据源配置等,如果不修改配置文件默认使用的h2数据库,为了以后方便迁移,还是更换一下数据源比较好,该版本的支持的数据库有H2数据库、Oracle 12c/18c/19c、Postgres9.3或者更高版本、SQLServer 2014/2016/2017/2019 and SQL Azure,低版本以前还支持Mysql,但是从7.9版本后就不再支持MySQL,所以就算使用低版本也尽量不要使用MySQL,以后升级比较麻烦,笔者在此处使用的Postgres,Postgres安装笔者是使用Docker安装的,以下为docker命令,如果使用其他方式安装,请自行百度。

docker run --name postgres -p 5432:5432 -e TZ=PRC -e POSTGRES_USER=root -e POSTGRES_DB=sonar -e POSTGRES_PASSWORD=root@2022 -v /mnt/test/postgres:/var/lib/postgresql/data -d postgres

--name: 定义容器名称
-e:定义环境变量  POSTGRES_USER:默认创建用户的用户名 POSTGRES_PASSWORD:默认创建用户的密码 POSTGRES_DB:默认创建的数据库 TZ=RPC 设置中国地区时区
-v:定义容器数据卷
-p:端口映射

如果没有安装docker,可以参考笔者另一篇文章docker学习笔记

Postgres数据库安装完成后,修改sonar.properties文件中的以下属性:

sonar.jdbc.username=root
sonar.jdbc.password=root@2022
## 如果默认的schema被使用了,那么需要在连接字符串后面指定schema
## sonar.jdbc.url=jdbc:postgresql://192.168.11.112:5432/sonar?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://192.168.11.112:5432/sonar

其他属性则暂时不需要修改,如果有需要,可自行修改,修改后请重启程序。

运行bin\windows-x86-64\StartSonar.bat 启动脚本。

然后访问localhost:9000

image-20220926153140279

image-20220926154247520

启动完毕后,输入账号:admin,密码:admin 登录系统。然后根据指示修改密码。

image-20220926154414272

docker-compose安装

version: '3.1'
services:
  postgres:
    image: postgres:13-alpine
    container_name: postgres
    volumes:
      - /mnt/docker/postgres/postgresql:/var/lib/postgresql
      - /mnt/docker/postgres/data:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
  sonarqube:
    image: sonarqube:8.9.8-community
    container_name: sonarqube
    volumes:
      - /mnt/docker/sonarqube/extensions:/opt/sonarqube/extensions
      - /mnt/docker/sonarqube/logs:/opt/sonarqube/logs
      - /mnt/docker/sonarqube/data:/opt/sonarqube/data
      - /mnt/docker/sonarqube/conf:/opt/sonarqube/conf
      # 设置与宿主机时间同步
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - postgres
    ports:
      - 9000:9000
    command:
      # 内存设置
      - -Dsonar.ce.javaOpts=-Xmx2048m
      - -Dsonar.web.javaOpts=-Xmx2048m
    environment:
      SONAR_JDBC_URL: jdbc:postgresql://postgres:5432/sonar
      SONAR_JDBC_USERNAME: sonar
      SONAR_JDBC_PASSWORD: sonar

然后docker-compose -f docker-compose.yml up -d启动,然后访问localhost:9000

image-20220926154247520

启动完毕后,输入账号:admin,密码:admin 登录系统。然后根据指示修改密码。

image-20220926154414272

SonarQube常用插件安装

image-20220926154739993

image-20220926155023607

如果在线安装失败,可以去对应插件的仓库下载jar包,然后手动放到extensions\plugins下,然后重启程序。