0%

Spring集成sonar进行静态代码检测

前言

使用sonar进行静态代码检查,生成相关可视化测试报告,具体效果如下图:

img

环境

  • docker ver.18.06.0-ce
  • Mysql ver.5.7.23
  • Sonarqube

涉及到的知识点

  1. 使用docker-compose创建两个container

    • sonar-mysql

      用于sonar数据库操作,指定相关端口,镜像文件,环境变量,以及相关操作。

      1
      2
      3
      4
      5
      6
      7
      8
      sonar-mysql:
      image: mysql:5.7.23
      volumes:
      - ./mysql/create_sonar_database.sql:/docker-entrypoint-initdb.d/init.sql
      ports:
      - "3308:3306"
      environment:
      - MYSQL_ROOT_PASSWORD=password
    • tws-sonar

      用于做sonar校验服务器,指定相关端口,镜像文件,和环境变量。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      tws-sonar:
      image: sonarqube
      ports:
      - "9000:9000"
      - "9092:9092"
      environment:
      - SONARQUBE_JDBC_USERNAME=root
      - SONARQUBE_JDBC_PASSWORD=password
      - SONARQUBE_JDBC_URL=jdbc:mysql://sonar-mysql:3306/sonar?useUnicode=true&characterEncoding=utf8
  2. Spring引入sonar插件

    1
    classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2"
    1
    apply plugin: "org.sonarqube"
    1
    apply plugin: "jacoco"

    jacoco为测试代码覆盖率时需要的插件。

  3. 生成报告文档并发送到sonar

    1
    sh './gradlew --info sonarqube'
  4. 访问localhost:9000获取相关报告

    img

后记

完整项目repo地址:https://github.com/RoyFoo1995/sonar_demo