持续集成的探索之 SonarQube

2017年2月14日 · 523 字 · 2 分钟 · CI SonarQube

SonarQube 是一个开源平台,用于管理源代码的质量。

注:文中提到的例子地址是 https://github.com/CarlisleChan/CIPractice,一些配置也是以 Android 自动化测试的探索持续集成的探索之配置 Jenkins 为基础的。

安装及运行

保存下面内容到本地 docker-compose.yaml,也可直接将我的文件下载下来 地址

# docker 配置文件
version: '2'
services:
mysql:
    container_name: mysql
    image: mysql:5.7.16
    ports:
      - "9494:3306"
    restart: always
    volumes:
      - ./var/lib/mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=sonarqube
      - MYSQL_ROOT_PASSWORD=8jnYxnPlIAzP

  sonarqube:
    container_name: sonarqube
    image: sonarqube:6.3
    links:
      - mysql
    ports:
      - "9595:9000"
    restart: always
    volumes:
      - ./var/lib/sonarqube:/var/lib/postgresql
    environment:
      - SONARQUBE_JDBC_USERNAME=root
      - SONARQUBE_JDBC_PASSWORD=8jnYxnPlIAzP
      - SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonarqube?useUnicode=true&&characterEncoding=utf8

执行 docker-compose up -d 即可

配置 SonarQube

配置通用插件

# 中文汉化包
Chinese Pack

# Delegates authentication and authorization to LDAP.
LDAP

# 根据项目的规模进行排序,并用不同演示显示代码质量。
Radiator

# Code Analyzer for XML
SonarXML

配置 Quality Profiles

点击 Administration > System > Update Center > Available

  • Android (提供 Android lint 规则)
  • Checkstyle
  • Findbugs
  • XML

因为一个项目只能应用一个配置,所有我们可以为一个配置指定父配置然后继承它,再新建一个自定义配置将所有配置串起来,来评测项目。

点击 Quality Profiles → Create 并取个名字。

添加 Android Lint 作为父配置,然后切换到 Android Lint 并将 FindBugs Security Minimal 设为父配置,继续设置直到将所有配置串联起来,最后将 CustomAndroidProfile 设为默认配置。

与 Jenkins 搭配使用

先在 jenkins 下 安装 SonarQube Plugin

然后在 Manage Jenkins → Configure System 和 Global Tool Configure 里配置一下需要的参数

这里假设你的项目里已经配置好 SonarQube Task,如果没有的话请参考文中开始指向的例子中的配置

最后在执行脚本即可

./gradlew sonarqube

参考: