为什么我们需要软件质量管理平台SonarQube

发表于:2018-12-13 12:01

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黑客日    来源:百家号

  从软件开发这个事情一诞生开始,混乱就是一直伴随着的。人们经常会问,“我做的对不对?”,对此下面这些回答:
  最古老的一个:编译通过了看上去在工作普遍的情况是:用户没有抱怨(直到用户开始抱怨或者我们必须添加新功能,那么我们可以弄清楚我们做了多少)最近的答案是自动测试用例(如何知道是否有足够的测试,以及如何知道测试无法涵盖的内容)
  我们如何评估代码的质量和编写代码的开发人员? 评估工厂工人(可接受的质量),律师(案例获胜)等都很容易
  我们是否可以评估软件质量,这是一个可以回答的问题。软件质量可以通过抽象,从不同的角度进行检查,按不同的维度来打分。
  我们来试验一下。下面这段文字,你能否正确阅读。
  I cdnuolt blveiee taht I cluod aculaclty uesdnatnrd waht I was rdgnieg. The phaonmneal pweor of the hmuan mnid. It deosn’t mttaer in waht oredr the leteerrs in a wrod are, the olny iprmoatnt tihng is taht the frist and lsat ltteer be in the rghit pclae. The rset can be a taotl msess and you can sitll raed it wouthit a porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.
  上面这段文字所有单词都没有正确拼写,但是还是可以阅读的(中国人也有类似的例子:“研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是乱的。”)。从一个产品的角度,有人会认为经文本顺序不对,但这段话没毛病,因为但不影响阅读。但不好的一面是影响了阅读体验,需要一些额外的精力去重建单词的顺序。此外,文章的编辑者有点郁闷。
  把上面的场景换成软件开发的源代码。阅读者是产品的最终用户,编辑者是开发人员。两者从不同的角度来看这段代码。最终用户关注功能是否实现,开发者关注代码结构。
  软件质量测量是对一系列可描述软件特性的属性值进行加权归一化的定量过程。每一个特性都有一组可测量的属性。
  现在的问题是什么是软件特性?它们可以是:
  是否遵守了特定的编码规范;是否遵循了已知的最佳实践,避免了已知的不良实践;是否有潜在的BUG和性能问题、安全隐患、重复代码;代码逻辑是否很复杂;公开的API是否有完善的文档和注释;是否有单元测试;代码是否遵循了最佳的设计和架构;
  如何来定义这些相关的属性?
  属性权重值Blocker(障碍)5Critical(紧急)4Major(重大)3Minor(次要)2Info(信息)1
  定义了软件特征之后,下一个问题就是我们如何自动地去处理这些,获取到特征值。答案是静态代码分析。
  静态代码分析
  静态代码分析是用于分析源代码的算法和技术的集合,以便自动发现潜在的错误或不良的编码实践。 这个想法与编译器警告类似(可能对编码错误有帮助),但是让这一想法进一步发现,并发现使用运行时调试技术(如测试)传统发现的错误。
  静态代码分析(通常也称为“白盒”)测试,在非运行时环境中查看应用程序。 它是唯一被证明可以通过覆盖整个代码库并识别所有易受攻击的模式的方法。 静态代码分析也被认为是自动执行代码审查过程的一种方式。
  静态代码分析软件解决的任务可分为3类:
  程序中的错误。 代码格式的建议。一些静态分析仪允许您检查源代码是否符合自己公司的代码格式标准。 指标计算。软件指标是一种可以让您获取软件某些属性或其规格的数值的措施。有许多静态分析工具可用。 但是,Checkstyle,PMD和FindBugs是众所周知的,用于大多数项目。
  Checkstyle(聚焦:惯例)
  Checkstyle是一个开源工具,可以帮助实施编码标准和最佳实践,特别注重编码惯例。 虽然Checkstyle确实涵盖了一些静态代码分析功能(与PMD和Findbug的方式大致相同),但是我们将主要在Checkstyle检测和执行编码编写规范。
  PMD(聚焦:不良做法)
  PMD是一种静态代码分析工具,能够自动检测范围很广的潜在缺陷和不安全或非优化的代码(不良做法)。 而其他工具(如Checkstyle)可以检查编码约定(规范)和标准,PMD更侧重于缺陷检测(确保遵循良好做法)。 它附带了丰富且高度可配置的规则集,可以轻松地配置给定项目应使用哪些特定规则。
  不良做法类型包括众所周知的、总是会造成问题的行为。以下是不良做法的几个例子:
  捕捉异常而不做任何事情 死代码 太多复杂的方法 直接使用实现而不是接口 实现或重写了hashcode()没有实现或重写equals(Object object)方法 Boolean的同步(可能导致死锁) 返回对可变对象的引用可能会对外暴露内部实现
  Findbug(聚焦:潜在BUG)
  Findbug是Java的另一个静态分析工具,在某些方面类似于Checkstyle和PMD,但是具有不同的重点。 Findbug不关心格式化或编码标准,只对最佳实践感兴趣:实际上,它的目标是检测潜在的错误和性能问题。它很擅长做这类检查。可以检测到许多常见但难以发现的错误。 事实上,Findbug能够以比较高的精度检测出与PMD或Checkstyle不同的问题。 因此,它可以是一个有用的补充。
  HP Fortify(聚焦:安全漏洞
  根据HP Fortify网站,HP Fortify静态代码分析器可帮助您验证您的软件是否值得信赖,降低成本,提高生产力并实施安全编码最佳做法。
  关键特性
  通过识别构成最大威胁的漏洞来降低业务风险
  通过可重复的过程快速识别和消除可利用的漏洞
  通过在SDLC早期识别漏洞来降低开发成本
  教育开发人员在安全编码实践中工作
  将开发和安全团队携手共同寻找并解决安全问题
  SonarQube(以前叫sonar)
  SonarQube收集和分析源代码,测量质量并为您的项目提供报告。它结合了静态和动态分析工具,使质量随时间持续测量。 影响代码的所有要素,从次要的样式细节到关键的设计错误,都能被Sonar检查和评估。开发人员可以访问和跟踪代码分析数据,包括样式错误,潜在的错误和代码缺陷,以设计低效率,代码复制, 测试覆盖率不足,复杂度过高。 Sonar平台从不同方面分析源代码,从而逐层向下逐步演进,从模块层次下降到类级别。 Sonar在每个级别都会产生测量值和统计数据,从而揭示源头中需要检查或改进的问题区域。 聚焦:通过使用Checkstyle,PMD,Findbug,Fortify以及许多其他静态/动态代码分析工具,从不同角度分析各个维度进行分析。其实,有点Eclipse的感觉,是一个质量管理平台。
  为什么使用SonarQube
  到目前为止,没有哪个CI工具有一个插件可以将使所有上面这些工具集成到一起。 没有哪个CI工具可以提供良好的钻取功能,但sonarqube有。 没有CI插件可以将所有的软件质量的度量数据整合到一起。 没有CI插件提供管理视角。 还没有设计/架构问题相关的CI插件 没有CI工具或插件提供整体项目质量的仪表盘。
  特征:
  SonarQube不会告诉你什么是错的,你自己判断。它只是质量管理工具(平台),帮助你走在正确的道路上。
  SonarQube的商业竞争对手似乎将质量的定义主要集中在错误和复杂性上,而SonarQube的产品涵盖了其创造者所称的七大品质:SonarQube不仅解决了错误,还解决了编码规则,测试覆盖,重复,API文档,复杂性和架构,并在仪表盘中提供所有这些详细信息。
  它为您提供了今天的代码质量的瞬间快照,以及落后的趋势(已经出错了)和未来的质量指标(今后可能出错)。 它为您提供指标,以帮助您做出正确的决策(在几乎每个行业,严格的领导者跟踪指标。无论是制造缺陷和浪费,销售和收入,还是棒球的命中率和RBIs,都有指标告诉您,目前做的怎么样。整体做的如何,以及你是否正在变得更好或更坏。) SonarQube真正突出的是,它不仅提供代码的指标和统计信息,而且将这些技术数据转化为真实的商业价值,如风险和技术债务。 Sonar不仅针对核心开发人员和程序员,而且还针对项目经理以及更高的管理层面,因为它提供了管理视角。 SonarQube的报告功能和针对源代码的基于不同视角的视图更加强化了这一概念。
  从管理角度来看,历史数据的透明和持续访问使经理能够提出正确的问题。
  注意:SonarQube与上述任何静态分析工具都不会竞争,而是与这些工具非常紧密地连接在一起。 事实上,如果这些静态分析工具(Checkstyle,PMD和Findbug)不存在,SonarQube自己就会起作用。
  OSChina的SonarQube平台

  oschina有一个sonarqube平台,不过用的sonarqube版本比较低,应该是5.x系列的。现在sonarqube已经到6.x系列了。
  结论
  总之,SonarQube是个质量管理平台,平台的想象空间就大了。可以集成别人辛辛苦苦做的分析插件,它就做好数据集成、集成之上的分析和报告。反正你通常能想到的软件质量分析的工具很多都能在这个平台上找到,现在找不到也能找到类似的或以后会找到。也就是ALL IN ONE的感觉。对小白来说,用SonarQube还能见识一些之前没见过的工具,挺好。

    上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号