使用Sonar集成Jenkins进行代码静态检查

Sonar简介

Sonar是一个用于代码质量管理的开源平台, 用于管理源代码质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。

Sonar在Jenkins里的安装以及配置

使用Jenkins做CI/CD, 把Sonar集成到Jenkins就可以实现自动触发代码质量检查。

  1. 安装Sonar Server端
    • 创建数据库
      MySQL docker-compose文件如下:
    # cat docker-compose.yml
    version: '2'
    services:
            mysql:
                    image: mysql
                    environment:
                            - MYSQL_ROOT_PASSWORD=sonar
                    ports:
                            - "33306:3306"
                    restart: always
创建sonar数据库以及用户语句
     CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;

    CREATE USER 'sonar' IDENTIFIED BY 'sonar';
    GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';
    GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar';
    FLUSH PRIVILEGES;
  • 安装sonar服务器端

    sonar docker-compose文件如下:

    version: '2'
    services:
            sonar:
                    image: sonarqube
                    ports:
                            - "9000:9000"
                            - "9092:9092"
                    environment:
                            - SONARQUBE_JDBC_USERNAME=sonar
                            - SONARQUBE_JDBC_PASSWORD=sonar
                            - SONARQUBE_JDBC_URL=jdbc:mysql://xxx:33306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
                            - SONARQUBE_JDBC_DRIVERCLASSNAME=com.mysql.jdbc.Driver

                    volumes:
                            - /etc/localtime:/etc/localtime
                    restart: always
使用命令docker-compose up -d启动,sonar服务器端就可以启动成功了,通过url http://IP:9000 就可以访问sonar服务器端。
  1. sonar集成到Jenkins
    • 在Jenkins上安装sonar插件
    • 系统配置 -> 配置sonar服务器地址
    • 配置需要添加sonar静态检查的Jenkins Job
      1) 构建环境时点选 “Prepare SonarQube Scanner environment”
      2) 在构建后添加 “Execute SonarQube Scanner”
      并在Analysis properties中添加如下配置:
        sonar.projectKey= xxx
        sonar.projectName= xxx
        sonar.projectVersion=1.0.0
        sonar.sources=app/
        sonar.sourceEncoding=UTF-8
  如果分成多个module
        sonar.projectKey= xxx
        sonar.projectName= xxx
        sonar.projectVersion=1.0.4
        sonar.sources=.
        sonar.sourceEncoding=UTF-8
        sonar.modules=module1,module2,module3
        module1.sonar.projectBaseDir=module1/
        module2.sonar.projectBaseDir=module2/
        module3.sonar.projectBaseDir=module3/
 如果要配置sonar支持java lombok
 在mvn 编译选项里添加 “dependency:copy-dependencies”
 然后设置sonar.java.binaries 以及sonar.java.libraries
        sonar.projectKey= xxx
        sonar.projectName= xxx
        sonar.projectVersion=1.0.4
        sonar.sources=.
        sonar.sourceEncoding=UTF-8
        sonar.java.binaries=target/classes
        sonar.java.libraries=target/dependency/*.jar
        sonar.modules=module1,module2,module3
        module1.sonar.projectBaseDir=module1/
        module2.sonar.projectBaseDir=module2/
        module3.sonar.projectBaseDir=module3/

你可能感兴趣的:(devops)