自动化代码质量审查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
    评论
Sonar是一款流行的代码检查工具,旨在帮助开发人员提高代码质量和可维护性。它能够通过静态分析代码,发现潜在的缺陷、漏洞和不良实践。 Sonar具有以下核心功能: 1. 代码质量评估:Sonar可以评估代码质量,包括复杂性、重复代码、安全漏洞等。它通过规则引擎检查代码,然后生成详尽的问题报告,开发人员可以根据报告修复问题。 2. 技术债务管理:Sonar可以帮助团队管理技术债务。技术债务是指在项目中出现的需要修复的问题。Sonar能够识别技术债务,并为其设置优先级,使开发人员知道哪些问题最需要解决。 3. 持续集成:Sonar支持与持续集成工具的集成,例如Jenkins。当开发人员提交代码时,Sonar可以自动执行代码分析,并在构建过程中提供有关代码质量的反馈。 4. 存档和趋势:Sonar可以记录和存档每次代码分析的结果,并生成趋势报告。这可以帮助开发人员了解代码质量的改进和退步,并追踪项目在时间轴上的变化。 5. 编码规则:Sonar内置了许多常见的编码规范和最佳实践,开发人员可以根据自己的需求自定义规则。这有助于团队在整个项目中保持一致的编码风格和标准。 Sonar是一个功能强大且灵活的工具,它可以帮助开发团队确保代码质量,并提供及时的反馈。通过使用Sonar,开发人员能够更快地发现和解决潜在的问题,提高代码的可维护性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值