自动化代码质量审查sonar

背景

自己做项目管理时候是不是有个困扰,明明自己已经做了代码规范,产出了文档,还有这么多开发人员没有按照规范执行?项目代码写法五花八门太难维护了?是不是面试时候有面试官问,项目管理时候代码质量怎么得到保证的?如何指定规范并让开发强制执行?如果有开发没按规范编写代码有什么办法第一时间知道?

如果只是最简单的规范,用阿里的插件检查一下就可以了,但公司会有自己的规范不在阿里的插件中,如果当你回答代码走查来控制代码质量,那你就已经步入面试官的陷阱中了,代码走查可能会出现没走查到的代码提交到git上了,而且代码走查团队人数少的时候还有精力走查,当团队大了,像几百人的技术团队,代码走查的内容简直就是冰山一角了,完全没办法控制代码质量。

不是有句话说的好“人为参与的越多,失误率越高”,所有的事尽量交给自动化的技术来实现,代码质量审查也不例外,sonar就是为代码质量审查而生的。废话不多说,说一千道一万都不如直接上手操作一下来的实在。

 环境准备

docker的安装

sonar搭建

首先准备docker-compose脚本

version: "2"
services:
  sonarqube:
    image: sonarqube
    container_name: sonarqube
    ports:
      - "9000:9000"
    environment:
      SONARQUBE_JDBC_URL: jdbc:mysql://192.168.2.49:3306/sonar?useUnicode=true&rewriteBatchedStatements=true&useConfigs=maxPerformance&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true
      SONARQUBE_JDBC_USERNAME: root
      SONARQUBE_JDBC_PASSWORD: 123456
    volumes:
      - /home/sonar/data:/sonarqube/data
      - /home/sonar/extensions:/sonarqube/extensions
      - /home/sonar/logs:/sonarqube/logs
      - /home/sonar/temp:/sonarqube/temp

 上面的compose是我在测试环境搭建使用的脚步,需要根据自己服务器实际情况进行修改。

然后执行这compose,命令如下:

docker-compose -f sonar-compose.yaml

执行后,查看启动信息,确认无误后,访问地址:

http://192.168.2.49:9000/

账号:admin

密码:admin

第一次登陆会强制要求修改密码

修改后,需要进行汉化处理,如下图所示:

先选择Administration选中marketplace,然后看到pulgins该组,搜索Chinese Pack,然后点击install,安装完成后上面会有提示重启服务,点击重启,再进入就汉化web界面了。

配置关联

gitlab获取token

访问gitLab,在用户设置中,找到访问令牌,然后点击创建令牌,范围全选,去一个名字,然后这名字对应的项目都需要开通开发权限,点击保存,就能获取到个人访问令牌,后续关联sonar有用

sonar配置gitlab关联

下载sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar

执行下面命令:

docker cp sonar-gitlab-plugin-4.1.0-SNAPSHOT.jar  《容器id》:/opt/sonarqube/extensions/plugins/

重启sonarqube,登陆进入后,在配置中找到gitlab,配置配置gitlab地址和token,如下图所示:

drone添加sonar流水线验证

 项目中在.drone.yaml中,build中添加这命令

- mvn install sonar:sonar -Dsonar.host.url=http://192.168.2.49:9000 -Dsonar.login=150e1669f7927f3a9b50cdece22510484f6dad82 -

Dsonar.java.binaries=target/sonar

在sonar界面中,添加项目

在sonar界面生成的url,login回填到drone.yaml中。

服务端的配置就结束了,默认使用的是阿里的代码规范,sonnar提供了自定义验证规则,自己可以尝试来配置规则(后续再补充规则编写相关文档)。

目前这种方式是sonar控制台提示(如果可以做到流水线中断方式,让代码无法提交到git上)

idea插件安装

添加插件sonarlint,File—>Settings—>Plugins,进入插件界面,搜索sonarlint

然后安装

安装完成后重启项目,之后就可以本地进行效验了,对着项目或对着java类右键就可以进行验证。

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值