来认识下代码质量管理的“利器”——SonarQube

Posted 研发云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来认识下代码质量管理的“利器”——SonarQube相关的知识,希望对你有一定的参考价值。

一个软件开发项目的成败

很大程度上取决于其整体代码质量

面对越来越快速的版本迭代

和越来越复杂的系统逻辑

作为保证整个系统性能的重要因素之一

代码质量需要接受统一的管理

并将结果精准传递给相关开发者

SonarQube 正是在这种情况下

被纳入持续集成系统的

它以量化的方式来衡量代码质量

从而推动代码质量优化

来认识下代码质量管理的“利器”——SonarQube

SonarQube简介

SonarQube 是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,SonarQube 可以集成不同的测试工具、代码分析工具以及持续集成工具,比如 pmd-cpd、checkstyle、findbugs、Jenkins。SonarQube 通过不同的插件对这些结果进行再加工处理,并通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 SonarQube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用它。

来认识下代码质量管理的“利器”——SonarQube

SonarQube的插件

对包括 java、C#、C/C++、PL/SQL、Cobol、

JavaScrip、 Groovy 等等在内的

二十几种编程语言都提供支持

不过其所提供的分析方式有所不同

来认识下代码质量管理的“利器”——SonarQube

  • 对于所有支持的编程语言,SonarQube 都提供源了代码的静态分析功能;


  • 对于某些特定的编程语言,SonarQube 提供了对编译后代码的静态分析功能,比如 java 中的 class file 和 jar 和 C# 中的 dll file 等;


  • 对于某些特定的编程语言,SonarQube 还可以提供对于代码的动态分析功能,比如 java 和 C# 中的单元测试的执行等。

来认识下代码质量管理的“利器”——SonarQube

另外

远程客户机可以通过各种不同的分析机制

将被分析的项目代码上传到 SonarQube server

并进行代码质量的管理和分析

SonarQube 还会通过 Web API

将分析的结果以可视化、可度量的方式

展示给用户

来认识下代码质量管理的“利器”——SonarQube


SonarQube覆盖了
代码质量的7个方面

来认识下代码质量管理的“利器”——SonarQube


1、针对不遵循代码标准的问题:SonarQube 可以通过 PMD、CheckStyle、Findbugs 等等代码规则检测工具规范代码编写。


2. 针对潜在的缺陷 :SonarQube 可以通过代码规则检测工具检测出潜在的缺陷。


3. 针对糟糕的复杂度分布:文件、类、方法等如果复杂度过高将难以改变,并会使得开发人员难以理解它们。且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。SonarQube 能对此进行细致分析。


4. 重复:显然程序中包含大量复制粘贴的代码是质量低下的,SonarQube 可以展示源码中重复严重的地方。


5. 注释不足或者过多:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降。而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。SonarQube 对这方面的检测管控也有涉及。


6. 缺乏单元测试:SonarQube 可以很方便地统计并展示单元测试覆盖率。


7. 糟糕的设计:通过 SonarQube 可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则;通过 SonarQube 可以管理第三方的 jar 包,可以利用 LCOM4 检测单个任务规则的应用情况,并检测耦合。


SonarQube的主要特性

通过插件扩展

SonarQube 强大的插件扩展机制能支持新的编程语言、添加规则引擎、计算更复杂的度量指标,目前已经有超过 50 个插件可用。


支持多种编程语言

SonarQube 目前已经支持超过20种的编程语言。


集成CI

SonarQube 对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用。


围绕着代码质量

SonarQube 是一个Web应用程序(B/S),规则、警告、例外、设置……都可以在线配置。通过自己的数据库,SonarQube 不仅仅能展示各项指标的综合结果,同时也能结合历史质量数据。


国际化

Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。

来认识下代码质量管理的“利器”——SonarQube

从总体发展趋势来说

除了本身强大的代码检查能力以外

DevOps 的支持能力

也正成为 SonarQube 今后发展的主要方向

最新版本的 SonarQube 支持 webhook 功能

可与 jenkins 等持续集成平台完美对接

有兴趣利用 DevOps 推动自身发展的开发者

不妨也对这个开源平台多多留心

研发云  开发者的好帮手

获取更多产品介绍及业界动态

以上是关于来认识下代码质量管理的“利器”——SonarQube的主要内容,如果未能解决你的问题,请参考以下文章

性能测试利器-Locust框架解析

性能测试利器-Locust框架解析

时间管理利器之一:RescueTime 自动记录时间

增强 Python 代码的可读性,pycodestyle 利器来了!

Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明

目前最强大的代码质量管理开源工具是什么?来问研发云啊!