SonarQube&Gitlab-CI 实现静态代码分析

作者: _夏兮 | 来源:发表于2019-08-24 21:06 被阅读7次

    一.背景介绍


    image.png

    SonarQube® is an automatic code review tool to detect bugs, vulnerabilities and code smells in your code.
    Sonar 为代码的质量管理提供了一个平台,对传统的代码静态检测如 PMD、FindBugs 等工具进行整合,可以说是目前最强大的代码质量管理工具之一。SonarQube支持25+语言,可以跟CI/CD集成。
    二.SonarQube平台搭建
    1.使用docker拉取镜像
    docker pull postgres //拉取数据库
    docker pull sonarqube //拉取sonarqube
    2.启动服务
    docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres //启动数据库
    docker run -d --name sonarqube
    -p 9000:9000
    -e sonar.jdbc.username=sonar
    -e sonar.jdbc.password=sonar
    -e sonar.jdbc.url=jdbc:postgresql://localhost/sonar
    sonarqube //启动sonarqube
    如果需要特殊的配置可以选择绑定挂载卷,命令如下
    docker run -d --name sonarqube
    -p 9000:9000
    -v /path/to/conf:/opt/sonarqube/conf
    -v /path/to/data:/opt/sonarqube/data
    -v /path/to/logs:/opt/sonarqube/logs
    -v /path/to/extensions:/opt/sonarqube/extensions
    sonarqube
    3.访问sonarqube
    本地搭建的访问: https://localhost:9000 账号:admin,密码:admin

    image.png
    三.GitLab-CI&GitLab-Runner
    image.png
    在我们的项目中使用GitLab进行源码控制,GitLab-CI就是一套配合GitLab使用的持续集成系统。GitLab-Runner是配合GitLab-CI进行使用的。在gitlab中每个project都会配置ci的脚本。也就是当有develop pull了代码到repo,gitlab会通知gitlab-ci,gitlab-ci又会通知到相对应的Runner,这时候Runner会去执行相对应的script。
    gitlab runner 可以配置多个,在不同的机器上也可以在同一个机器配置多个runner.
    image.png

    gitlab-runner安装:https://docs.gitlab.com/runner/install/linux-repository.html

    四.Gradle项目配置
    build.gradle配置
    plugins {
    id "org.sonarqube" version "2.7"
    }
    subprojects {
    apply plugin: "org.sonarqube"
    sonarqube {
    properties {
    property "java-module.sonar.sources", "."
    property "sonar.java.binaries", "/bin"
    property "sonar.sourceEncoding", "UTF-8"
    property "java-module.sonar.tests", "."
    }
    }
    }
    sonarqube {
    properties {
    property "sonar.host.url", "https://****"
    property "sonar.verbose", "true"
    property "sonar.login", ""
    property "sonar.sourceEncoding", "UTF-8"
    property "sonar.modules", "java-module"
    property "sonar.projectKey", "int
    "
    property "sonar.projectName", "Int
    *"
    }
    }
    本地执行命令: gradle sonar
    与CI集成,.gitlab-ci.yml配置
    sonarqube:
    stage: sonarqube
    tags:
    - shell
    only:
    - develop
    - /^release.
    / script: - ./gradlew sonarqube -Dsonar.branch.name={CI_COMMIT_REF_NAME} -x test
    五.结果展示

    image.png

    参考:
    https://hub.docker.com/_/sonarqube/
    https://docs.gitlab.com/ee/ci/yaml/README.html
    https://plugins.gradle.org/plugin/org.sonarqube

    相关文章

      网友评论

        本文标题:SonarQube&Gitlab-CI 实现静态代码分析

        本文链接:https://www.haomeiwen.com/subject/wnwxectx.html