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

来源:互联网 发布:.shop域名上线时间 编辑:程序博客网 时间:2024/05/12 22:18

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/
0 0