• 0
  • 1
分享
  • 代码质量和安全性测试工具SonarQube——软件测试圈
  • 曼倩诙谐 2023-06-14 14:33:53 字数 1825 阅读 7028 收藏 1

  SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。

  1 Sonar简介

  1.1 sonarQube是什么?

  1、代码质量和安全扫描和分析平台。

  2、多维度分析代码:代码量、安全隐患、编写规范隐患、重复度、复杂度、代码增量、测试覆盖率等。

  3、支持25+编程语言的代码扫描和分析,包含java\python\C#\javascript\go\C++等。

  4、涵盖了编程语言的静态扫描规则: 代码编写规范+安全规范。

  5、能够与代码编辑器、CI/CD平台完美集成。

  6、能够与SCM集成,可以直接在平台上看到代码问题是由哪位开发人员提交。

  7、帮助程序猿写出更干净、更安全的代码。

  静态扫描主要针对开发人员编写的源代码。

  通过定义好的 代码质量和安全规则,对开发人员编写的代码进行扫描和分析。

  将分析的结果多维护的呈现出来,以方便开发人员进行代码的优化和规范编写。

  1.2 sonarQube如何工作?

  sonar静态代码扫描由2部分组成:sonarQube平台,sonar-scanner扫描器。

  sonarQube: web界面管理平台。

  1)展示所有的项目代码的质量数据。

  2)配置质量规则、管理项目、配置通知、配置SCM等。

  sonarScanner: 代码扫描工具。

  专门用来扫描和分析项目代码。支持20+语言。

  代码扫描和分析完成之后,会将扫描结果存储到数据库当中,在sonarQube平台可以看到扫描数据。

  sonarQube和sonarScanner之间的关系:

1-1.png

  2 检测

  Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。

  通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。

  2.1 Rules提示

  当然,这对于初学开发者来说是一个很好的教程,搞懂这些规则可以避免bugs的出现,提供自己的开发能力。

  2.1.1 Rule界面

1-2.png

  2.1.2 rule正确实例提示

1-3.png

  2.2 糟糕的复杂度分布

  文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

1-4.png

  2.3 重复

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

1-5.png

  2.4 缺乏单元测试

  sonar可以很方便地统计并展示单元测试覆盖率。

1-6.png

  2.5 没有代码标准

  sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。

  2.6 没有足够的或者过多的注释

  没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

  2.7 潜在的bug

  sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug。

1-7.png

  2.8 糟糕的设计(原文Spaghetti Design,意大利面式设计)

  通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则;

  通过sonar可以管理第三方的jar包可以利用LCOM4检测单个任务规则的应用情况 ,检测耦合。

  3. Sonar 组成

1-8.png

  4. Sonar 集成过程

1-9.png

  开发人员在他们的ide中使用SonarLint运行分析本地代码。

  开发人员将他们的代码提交到代码管理平台中(SVN,GIT等)。

  持续集成工具自动触发构建,调用SonarScanner对项目代码进行扫描分析。

  分析报告发送到SonarQube Server中进行加工。

  SonarQube Server 加工并且保存分析报告到SonarQube Database中,通过UI显示分析报告。


作者:会跑的熊    

来源:http://www.51testing.com/html/14/n-7793014.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 测试目地划分所包含内容单元测试(指对软件中的最小可测试单元进行检查和验证);功能测试(对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能);集成测试(也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试);场景测试(假设的故事,用来帮助人们理解一个复杂的问题或者系统);系统测试(将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不符或与之矛盾的地方,从而提出更...
            0 0 994
            分享
          •       最近因工作需要,开发了一个回归测试的小工具。可以根据配置读取不同交易报文并进行变量替换,然后自动发起交易并检查结果。自我感觉挺好用的,与大家分享一下设计思路。(代码要保密,就不上传了。有需要可以根据设计思路自己开发。      设计背景:      目前系统交易越来越多,需求改动也比较频繁。为防止代码改动影响旧需求,每次修改代码后都需要把相关交易回归测试一次。      目前此项回归测试工作主要靠程序员手工完成,存在以下问题:回归测试...
            0 0 2780
            分享
          •   Postman实现接口功能测试  新增货品接口实战  1、填写接口请求4要素:  由于货品新增接口文档找不到接口请求4要素中的:请求方法、请求地址和请求头,故,使用Fiddler抓包获取,获取结果如下:  1)请求方法:POST  2)请求地址:  https://open.jackyun.com/open-platform/developer/intercept/testtool/buildparamandrequest  3)请求头:  截图如下:  文本内容如下:Content-Type: application/x-www-form-urlencoded; ch...
            0 0 1702
            分享
          • 记得那是2年前,闲来无事简单游览公司关于人事部分相关事宜介绍,无意间看到公司在职员工考取《信息系统项目管理师》资格证书后,高级每月可获得600元工资之外奖励、中级为300元,对于爱钱如命的我来说,顿时吸引了眼球,引起了我的好奇,开启了我与之相生相克历程。《信息系统项目管理师》是什么?考试难度大么?《信息系统项目管理师》是软考中的一种,分为高级和中级,其中高级比中级在考试科目上比中级多出了一项论文(不要小看这一篇论文,这是真正体现你学习水平的一关),在选取自己是考高级和中级的选择上,个人建议还是可以直接报考高级(一来可以省去考完中级再复习报考高级的时间,二来对于收入来说,也是差了一半);考试时间...
            0 0 719
            分享
          •   前言  我们编写自动化的测试用例,通常会编写在单元测试框架中。python的单元测试有自带的unittest和第三方的pytest,今天主要介绍下我们在python中如何通过unittest编写自动化测试用例。  unittest介绍  unittest属于python自带的单元测试框架,类似与java的junit。unittest支持编写测试自动化用例,多个用例中共享一个前置和后置内容,有多种执行测试用例的方法,支持生成独立的测试报告内容。  官方文档:https://docs.python.org/2/library/unittest.html  unittest常用方法  无论是什么...
            12 12 2260
            分享
      • 51testing软件测试圈微信