代码质量管理工具】——sonar

原文地址:https://blog.csdn.net/luckystar689/article/details/53871821

------------------------------------------------------------------------

【前言】

   bug越改越多,程序一换数据就崩,这就是目前我们系统的一个现状。在这之前,进行过前后台代码规范整理,代码判空等工作,但这是人工检测的,有点慢,效率也比较低。当重新导入数据之后,模块大多都起不来了。于是乎,忍无可忍,我们就用了强大的代码质量工具——sonar来自动检测我们的代码,因为我们要写更安全,更优雅的代码。

 

   【sonar简介】

    sonar(SonarQube)是一个开源平台,用于管理源代码的质量,它不仅是一个质量数据报告工具,更是代码质量管理平台。它通过插件的形式来管理代码,它支持的语言包括:Java,PHP,C#,C等。

 

   【主要特点】

   sonar可以从以下七个维度来检测代码质量:

 

   1、不遵循代码标准

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

 

   2、潜在的缺陷

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

 

   3、糟糕的代码复杂度分布

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

 

   4、重复

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

 

   5、注释不足或者过多

    没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅度下降;

 

   6、缺乏单元测试

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

 

   7、糟糕的设计

   通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以展示自定义的架构规则。通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用秦高,检测耦合。

 

   【sonar使用】

    由于架构师已经给咱们装好了sonarQube,咱们只需在Maven的配置文件的profiles节点中添加一个sonar的profile节点,就可以直接在项目中执行Maven build命令——clean verify soanr:sonar使用了,执行完了之后,在服务器上就可以看到我们测试的项目了:

 

   profile节点代码:

   

 
  1. <profile>

  2. <id>sonar</id>

  3. <activation>

  4. <activeByDefault>true</activeByDefault>

  5. </activation>

  6. <properties>

  7. <!-- Optional URL to server. Default value is http://localhost:9000 -->

  8. <sonar.host.url>

  9. http://192.168.22.220:9000

  10. </sonar.host.url>

  11. </properties>

  12. </profile>

 

   测试完成的代码:

 

 

   

   A为最高级别,如果这几项全是A的话,那说明你写的代码真的是太棒了!!!

 

   点开每个项目,查看详情:

   1、bug,duplicatinos等列表:

    

 

   2、点开具体的某一项,显示所有的bug,或者有问题的地方。再继续往下点,就会看到我们有问题的代码了,也会给出我们相应的解决方案。

 

   

 

  【总结】

 

   通过两天的改bug,其实也就是改成规范的代码,说实在的,在改之前,我还不知道规范的代码原来应该是这样写的,虽然之前那样写也能够得到想要的结果,但是不是很安全,有潜在的缺陷。

 

   这两天,没学啥技术,但是也涨了不少知识,我的收获总体来说主要有以下三点:

 

   1、之前咱们看到的代码乱,写法不规范,重复性高等。这些代码sonar都可以检测到,并给出我们正确的解决方案,我们在解决问题的同时,也知道了规范性的代码应该如何写。


   2、sonarqube代码质量管理平台,是全英的,在解决问题的同时,我们又学到了英语。


   3、在这样反复的测试,修改,再测试的过程中,能够提高我们编写代码以及阅读代码的能力。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马凯军201771010116《面向对象程序设计(java)》第二周学习总结

第一部分&#xff1a;理论知识学习部分 &#xff08;1&#xff09;基本知识&#xff1a;简单应用程序的结构&#xff1b;Java环境里的注释方式&#xff1b; &#xff08;2&#xff09;数据类型&#xff08;4种整型、2种浮点型、1种字符型‘char’、真值型‘Boolean’。 &#x…

Linux集群架构(LVS DR模式搭建、keepalived + LVS)

为什么80%的码农都做不了架构师&#xff1f;>>> LVS DR模式搭建 准备工作&#xff1a;三台机器 分发器&#xff0c;也叫调度器&#xff08;简写为dir&#xff09;&#xff1a;192.168.248.128 rs1 &#xff1a;192.168.248.129 rs2 : 192.168.248.130 vip : 192.16…

Windows下SVN回滚到旧版本(TortoiseSVN)

原文地址&#xff1a;https://www.cnblogs.com/tommy-huang/p/4729634.html ---------------------------------------- 当发现新提交的代码有问题&#xff0c;然后想将某个旧的版本作为最新的版本时&#xff0c;可以使用回滚&#xff0c; 操作步骤如下&#xff1a; 1. 签出…

看懂架构设计中的服务隔离

前言 我们在做系统架构设计的时候&#xff0c;经常离不开的一个话题就是进行服务的隔离设计。 那什么是「服务隔离」呢&#xff1f; 顾名思义&#xff0c;它是指将系统按照一定的原则划分为若干个服务模块&#xff0c;各个模块之间相对独立&#xff0c;无强依赖。当有故障发生时…

[五] JavaIO之InputStream OutputStream简介 方法列表说明

InputStream 和 OutputStream 对于字节流的输入和输出 是作为协议的存在 所以有必要了解下这两个类提供出来的基本约定 这两个类是抽象类,而且基本上没什么实现,都是依赖于子类具体的去实现 但是他是对于其子类 协议纲领一般的存在 了解清楚每一个方法含义,对于后续具体的子类将…

[转]资本经营董事长班告诉你:不只企业有商业模式,个人商业价值更重要

本文转自&#xff1a;http://blog.sina.com.cn/s/blog_181b5b47e0102xz4v.html 东方财智-资本经营董事长班>>> 经营者如何轻松驾驭金融工具为企业发展加速、升级互联网工具实现品牌营销裂变、利用管理工具优化公司内部结构&#xff0c;把握前沿视角&#xff0c;实现快…

CPR认证-建材CE认证-305/2011/EU

建材CPR认证 - Regulation (EU) No 305/2011  2011年3月&#xff0c;欧盟颁布了新建筑产品法规RETULATION &#xff08;EU&#xff09; No 305/2011 – CPR&#xff0c;并通告了新法规于2013年7月进入强制执行&#xff0c;取代了老CPD指令89/106/EEC。  新的建材CPR认证也是…

python支持复数类型以下什么说法是错误的,【Python】专项练习题(1)

1.python代码如下:foo [1,2]foo1 foofoo.append(3)A.foo 值为[1,2]B.foo 值为[1,2,3]C.foo1 值为[1,2]D.foo1 值为[1,2,3]答案&#xff1a;B D链接&#xff1a;https://www.nowcoder.com/profile/153165401/myFollowings/detail/20055659来源&#xff1a;牛客网2.下列程序打印…

ios如何获取gps坐标(定位第二节)

原文连接&#xff1a; https://blog.csdn.net/michael_ouyang/article/details/54378338 -------------------------------------------------------------------- 在上一篇文章&#xff0c;解决ios 10不能定位的问题&#xff0c;把navigator.geolocation.getCurrentPosition…

java并发编程——线程池的工作原理与源码解读

2019独角兽企业重金招聘Python工程师标准>>> 线程池的简单介绍 基于多核CPU的发展&#xff0c;使得多线程开发日趋流行。然而线程的创建和销毁&#xff0c;都涉及到系统调用&#xff0c;比较消耗系统资源&#xff0c;所以就引入了线程池技术&#xff0c;避免频繁的线…

电驴更新地址

emule是通过ED2K网络和KAD网络寻找、连接其他emule客户端的&#xff0c;所以服务器列表和KAD节点文件是emule的必需文件。 有些新手由于下载官方原版emule压缩包或其他未集成这些必需文件的emule压缩包&#xff0c;从而出现“连接不上ED2K与KAD”问题。所以学会下载更新服务器…

IOS内购详解

介绍 最近开发的一款APP上架被驳回了&#xff0c;理由是&#xff1a; 上架的APP是培训类&#xff0c;里面金牌视频课程需要购买&#xff0c;Android端使用支付宝&#xff0c;微信支付。 苹果规定 数字化内容、App功能以及服务等&#xff0c;需要使用内购 真实世界中的服务(…

汇编中的函数调用与递归

栈帧的结构 倘若我们要想搞清楚过程的实现&#xff0c;就必须先知道栈帧的结构是如何构成的。栈帧其实可以认为是程序栈的一段&#xff0c;而程序栈又是存储器的一段&#xff0c;因此栈帧说到底还是存储器的一段。那么既然是一段&#xff0c;肯定有两个端点&#xff0c;这个不需…

Redmine数据库备份及搬家

Bitnami Redmine的备份分2种方式&#xff1a; 1.导出数据库 2.整个目录搬家 不管是哪种都想停掉服务&#xff0c;redmine相关的服务有以下5个&#xff1a; redmineApache   redmineMySQL   redmineSubversion   redmineThin1   redmineThin2 可以打开windows服务控制面…

Redmine项目管理工具安装

Redmine免费开源的项目管理工具 下载 一键安装工具 https://bitnami.com/stack/redmine/installer 安装 Redmine一键安装工具集成了php服务&#xff0c;mysql服务。尽管安装就好。 安装完成后&#xff0c;在开始菜单&#xff0c;找到-----Bitnami Redmine Stack--------Bi…

方便微信公众号等手机网页调试插件eruda和vConsole

原文地址&#xff1a;https://blog.csdn.net/qq_39234840/article/details/80951710 ---------------------------------------------------------- 调试插件一&#xff1a;eruda&#xff08;推荐&#xff0c;因为比vConsole功能多&#xff09; <script src"//cdn.js…

WebServiceStudio.exe测试webservice接口工具

WebServiceStudio.exe测试webservice接口工具 下载链接 https://pan.baidu.com/s/1gf8ajS3 打开工具WebServiceStudio&#xff0c;如下填写地址&#xff0c;点击【Get】按钮 会显示出需要传参的地方&#xff0c;在value中填写xml参数 输入完value值后&#xff0c;点击【Invok…

Navicat工具导出Mysql数据表结构到Excel文件中

原文链接&#xff1a;https://blog.csdn.net/zt15732625878/article/details/77978266 ------------------------------------------------------------------------ 前言 项目中数据库设计已经完成&#xff0c;现在到了代码实现的阶段&#xff0c;数据库中没有数据&#xff…

利用MAVEN的profile 实现打包环境的切换

乐哉码农产生问题的背景 由于在项目开发的时候&#xff0c;我们一般都是使用的本地库&#xff0c;数据库连接写的是本地的&#xff0c;如果我们将项目打成war的时候&#xff0c;里面的配置连接写的是我们本地的&#xff0c;当我们直接把war拷贝到服务器上面进行部署的时候&…

centos升级glibc(升级到 2.17版)

1、原先的系统glibc库的版本是2.12&#xff0c;需要升级到2.17版本。 下载地址&#xff1a; http://ftp.gnu.org/gnu/glibc/ http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 这里可以选择你所需要的版本。 2、安装部署 [rootkafzook1 common]# tar -xf glibc-2.17.tar.g…