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 实现静态代码分析

    一.背景介绍 SonarQube® is an automatic code review tool to det...

  • C/C++怎么做好代码静态分析

    代码静态分析 代码静态分析是指在不运行代码的情况下根据代码的静态信息,对代码的各个维度进行分析。 代码静态分析一般...

  • sonarQube + gitlab-runner 实现代码规范

    使用sonarQube + gitlab-runner实现代码提交到gitlab仓储,触发gitlab-ci,通过...

  • 单例模式之静态内部类实现方式及原理

    代码实现 本篇文章采用静态内部类的方式实现单例模式。代码如下 原理分析 在分析原理之前,我们得了解一些基本前提 根...

  • 静态代码分析工具对比

    静态代码分析工具 一、 什么是静态代码分析工具 二、 Findbugs 三、 Checkstyle 四、 Pmd ...

  • 静态代码分析(Static Code Analysis)

    静态代码分析简介 程序静态分析(Static Code Analysis)是指在不运行代码的方式下,通过词法分析、...

  • Android 静态代码分析工具

    Android 静态代码分析工具 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法、结构、过程、接口...

  • 伪静态实现

    伪静态实现 伪静态:没有静态文件的静态化 伪静态实现【1代码实现】比如这个网页http://www..net/so...

  • 静态代码分析

    程序静态分析 通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、...

  • 代码静态分析

    什么是代码静态分析?在不运行应用程序的情况下, 对然阿金的源代码的定义、结构和行为进行分析, 由此, 找出程序中的...

网友评论

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

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