前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SonarQube&Gitlab-CI 实现静态代码分析

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

作者头像
测试邦
发布2019-08-29 16:32:49
2.1K0
发布2019-08-29 16:32:49
举报
文章被收录于专栏:测试邦测试邦

一. 背景介绍

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拉取镜像

代码语言:javascript
复制
docker pull postgres //拉取数据库
docker pull sonarqube //拉取sonarqube

2. 启动服务

代码语言:javascript
复制
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

如果需要特殊的配置可以选择绑定挂载卷,命令如下

代码语言:javascript
复制
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

三. GitLab-CI&GitLab-Runner

在我们的项目中使用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.

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

四. Gradle项目配置

build.gradle配置

代码语言:javascript
复制
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配置

代码语言:javascript
复制
sonarqube:
  stage: sonarqube
  tags:
    - shell
  only:
    - develop
   - /^release.*$/
  script:
    - ./gradlew sonarqube -Dsonar.branch.name=${CI_COMMIT_REF_NAME} -x test 

五.结果展示

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试邦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档