运维自动化基础建设|代码质量平台
sonarqube[1] 是一个开源的代码分析平台,当前有社区版,开发者,企业版和数据中心供用户选择,其集成各种插件实现分析和评测代码的质量,支持检测
Java
、JavaScript
、PHP
等27种编程语言。通过SonarQube
可以检测出项目中潜在的Bug
、漏洞、代码规范、重复代码、缺乏单元测试、以及部分安全的代码等问题,可以和Jenkins
以及其他CI/CD
轻松集成。在接下来的文档中我们主要是针对社区版进行介绍。
sonarqube
的官方介绍
官网描述
版本支持
工作协同方式
为什么会选择 sonarqube
同类产品并不多(单一平台或工具多语言支持)
当前市面上开源的支持语言种类比较多的代码质量管控平台并不多,选择sonarqube
的原因另外一个层面大家也可以看到,码云上面的代码分析也是基于sonarqube
的(估计是在此基础上进行了二开),如下图所示:
项目生命周期的质量把控指引
另外就是项目的整个生命周期的维护过程中,中间会有人员的迭代,也会有项目移交给不同的项目组的情况发生, 如果没有最基本的约束,会出现很多低级错误,代码冗余甚至有可能会出现失控的场景,sonarqube
并不能完全帮助我们改善上述的情况,但是能够在一定程度上让我们认识到问题所在。
提到代码质量我们需要知道些什么
前面我们提到了当前市面上大而全的工具可供选择的余地并不多,那说明还是有不少针对单一语言的工具,那么接下来我们看看都有哪些吧,只有了解了这些,后续我们进行深度定制CI
的时候才能自助的随意组合来满足我们业务的需求。
当前市面上的主流工具的介绍(并不局限于以下所罗列)
Code Climate 出品
Available Analysis Plugins[2]
Auto Code Quality uses the Code Quality image to run static analysis and other code checks on the current code.
GitHub 上 Marketplace 下列出的工具
Code quality[3]
Automate your code review with style, quality, security, and test‑coverage checks when you need them.
认证和集成
认证
sonarqube
可以和LDAP
无缝集成,实现企业级的全局认证体系。
集成
可以和脚手架工具集成在一块,初始化项目的时候创建sonar-project.properties
文件,也可以外置和Jenkins
或Gitlab
实现集成。
注意事项
在Spring Cloud
多modules
的场景下,sonarqube
并不能很好的识别,需要定制路径来满足需求,这块如果大家有什么比较好的方式的话,可以推荐。
总结
在实际的场景中,sonarqube
并不足以满足我们的需求,团队规模大了,代码风格要不要统一,代码提交之前是否要检测代码仓库里是否包含敏感信息等等工作也是刚需。
推荐大家可以看下coding.net[4]的文档,一些思路和理念真的是值得学习。coding.net
的软工相关的文档也是我读过的最好的文档之一。另外就是也推荐大家体验下Github
的Action
, 在后续的文档中我也会开专题讲解CI/CD
这块的东西。大厂出的东西,设计理念真的是值得我们去深入学习。
引用链接
[1]
sonarqube: https://www.sonarqube.org/
[2]
Available Analysis Plugins: https://docs.codeclimate.com/docs/list-of-engines
[3]
Code quality: https://github.com/marketplace/category/code-quality
[4]
coding.net: https://coding.net/products/repo