当前位置: 首页 > news >正文

sonar代码检测研究及平台搭建

为了实现提交代码自动检测代码缺陷,本文介绍了一种将jenkins与gitlab集成的自动检测机制,如需应用于生产级开发流程,可在此基础上进行功能丰富和扩展,本文仅进行了原理性搭建。

一、基础环境准备

与sonar配合使用的jenkins和gitlab基础软件安装和部署不在本文写作范围之内,本文将假设已安装部署完毕,本文只涉及相关的设置及使用。下文涉及的sonar将基于docker搭建,关于dokcer安装部署不在本文介绍范围之内,本文将假设读者有docker基础。如需学习docker部署相关知识,见链接https://cloud.tencent.com/developer/article/1351621。

组件名版本号
SonarQube6.7
GitLab-Runner14.3.2

二、部署SonarQube

2.1 构建镜像

由于后续需要和gitlab集成,本文中基于6.7版本和 sonar-gitlab-plugin-3.0.2.jar 构建新的 SonarQube 镜像。

在服务创建一个sonar目录,在目录下创建Dockerfile文件,将jar包放到Dockerfile同级目录下,编辑Dockerfile文件为以下内容:

FROM sonarqube:6.7
ADD sonar-gitlab-plugin-3.0.2.jar /opt/sonarqube/extensions/plugins/

编辑完毕后,执行以下命令

docker build -t sonarqube:gitlab_1.0 .

执行命令后, docker images 查看新生成的镜像:

在终端中运行docker命令,使用sonarqube镜像运行容器,

docker run \
  -d \
  -p 9000:9000 \
  sonarqube:gitlab_2.0

使用 docker ps -a 查看是否部署成功,如下图显示则部署成功,访问 http://*******:9000 地址,等待出现下面界面。点击“log in”,并使用默认用户和密码 admin / admin登录。

登录成功后,按下图生成访问token。

三、集成gitlab实现代码自动检测

3.1 GitLab 用户令牌生成

在此处输入令牌名称,勾选 api 、read_user,生成的令牌需要马上保存,后续不再显示,

3.2 GitLab Runner 安装

GitLab Runner 是一个处理构建的应用程序,我们需要通过它执行我们在 GitLab CI 中定义的 Job,由于后续编写的 Job 依赖于 Maven 环境,因此选择直接在宿主机上安装 GitLab,

下载安装源:

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash

使用yum安装

yum install gitlab-runner

安装成功后,进行gitlab-runner注册。

完成注册后,即可在刚刚的地址中看见该 Runner 的信息:

gitlab-runner register \
  --non-interactive \
  --url "http://gitlab.fingard.cn/" \
  --registration-token "sRm8sLqrrCSj_aR3aUZC" \
  --executor "shell" \
  --description "runner" \
  --tag "tag1" \
  --locked="false" \

参数说明:

  • url :gitlab地址
  • registration-token: 注册令牌
  • executor :(ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell),执行类型,可根据实际需求进行选择,一般选择shell即可。
  • description : gitlab-runner的描述
  • tag : 与后续编写的 .gitlab-ci.yml 中的 tags 要一致,因此需要慎重填写

3.3 集成 GitLab-CI

进入项目后,根据如图所示进行配置:

.gitlab-ci.yml 配置文件内容如下:

mage: maven:3.6.3-jdk-8

variables:
  SONAR_TOKEN: "${sonar_token}"
#   SONAR_TOKEN: "2c49ac76adf45494c22dffdf3bde025e531a9868"
  SONAR_HOST_URL: "http://10.60.45.170:9000"
  GIT_DEPTH: 0
stages:
  - build_push
  - feedback_to_gitlab
  
  
#执行 SonarQube 分析,并将检测结果推送至 SonarQube
sonarqube_analysis:
  stage: build_push
#   only:
#     - merge_requests
#     - master
  except:
    - master
  script:
    - mvn --batch-mode   compile sonar:sonar -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_TOKEN
  tags:
    - tag1

3.4 提交验证

在本地idea代码分支提交push后,触发job执行:

登录sonar页面进行代码检测结果查看:

到此为止,gitlab集成sonar进行代码自动检测配置完毕,目前存在的问题是每个项目需要独立注册专属gitlab-runner,共享型的目前存在技术问题还未解决,后续会进行补充。

3.5 问题解决

参考文档:

https://blog.csdn.net/qq_42013035/article/details/107582310

https://blog.csdn.net/weixin_34248258/article/details/92443860

checkstyle插件安装

https://github.com/checkstyle/sonar-checkstyle/releases

参数说明

https://juejin.cn/post/6971013569986953223

http://www.dtcms.com/a/88993.html

相关文章:

  • Vue+SpringBoot:整合JasperReport作PDF报表,并解决中文不显示问题
  • 统计可重复列表中的TOP N
  • 路由工程师大纲-3:结合AI技术进行路由策略优化的知识链体系
  • P1102 A-B 数对
  • github_本地项目上传到远程
  • python 模拟登录
  • 阶跃星辰 Step-Video-TI2V 图生视频模型深度解析
  • 自由学习记录(47)
  • 10分钟读完《有限与无限的游戏》
  • 两个手机都用流量,IP地址会一样吗?深入解析
  • 【计算机网络】TCP协议技术细节全解析:与UDP的核心差异深度对比
  • 餐饮管理系统的设计与实现(代码+数据库+LW)
  • 新书速览|云原生Kubernetes自动化运维实践
  • 2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序
  • Linux运维篇-系统io调优
  • 《基于Python的财务数据可视化与决策支持系统开发》开题报告
  • 如何用大模型评估大模型——PAI-Judge裁判员大语言模型的实现简介
  • 2. 初识go-zero
  • Linux系统还可以在做一层虚拟化安装虚拟机吗
  • 基于Python的超导体金属研制探索与展望
  • 嵌入式c学习八
  • ASP.NET Core部署Docker教程
  • CentOS 7上配置虚拟用户的FTP服务
  • 【论文阅读】大型语言模型能否实现软件漏洞的检测与修复?
  • a-date-picker 格式化日期格式 YYYY-MM-DD HH:mm:ss
  • 金融行业 UE/UI 设计:解锁高效体验,重塑行业界面
  • python 传文件
  • VSCODE上ckg_server_linux进程占用CPU过多
  • Linux centos7 虚拟用户访问脚本
  • 【Excel使用技巧】某列保留固定字段或内容