这样Review代码牛逼啦!

一个对项目负责的团队代码质量检查是必不可少的,有条件的团队经常有代码review习惯,这样可以使技术团队共同进步,但是一个庞大的工程做代码review其实是很麻烦的,所以就催生了很多的工具,今天我们就来通过工具来对代码进行扫描,通过发现问题并改进问题,使我们的项目代码更简洁,修复隐藏bug。

什么是Sonarqube

Sonarqube 是一个用于代码质量管理的开放平台。通过插件机制,Sonarqube 可以集成不同的测试工具,代码分析工具,以及持续集成工具。

在对其他工具的支持方面,Sonarqube 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonarqube 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。

简单来说,Sonarqube就是一个代码质量检测工具,可以通过搭建服务端和使用客户端来对代码进行检测,我们今天就来上手试试吧。

搭建Sonarqube服务器

因为小编环境是mac,还是选择使用docker来搭建服务器环境把。

首先查找镜像

docker search sonarqube

然后pull镜像

docker pull sonarqube

如果使用传统的搭建还得创建sonarqube需要的对应数据库的脚本再进行关联,但是使用镜像的话这些都内嵌了。

好了开始通过镜像启动容器吧。

docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

镜像启动后就可以访问服务页面了。

访问地址:http://localhost:9000

点击左侧的Log in登录,默认的登录用户名密码都是admin

这样子服务端就安装好了

客户端使用

第一种姿势 纯idea插件查看

因为目前国内大部分程序员都转向Idea了,所以我们使用Idea来作为客户端进行项目代码检测。

首先就是插件的安装。如图所示,小白都看的懂,安装插件SonarLint并重启IDE

重启之后就要配置客户端连接的服务器了,服务器地址和账号密码填写我们之前本地搭建的信息

点击Next的时候会需要创建Token

点击Create Token跳转到我们生成Token的网页,这里我们输入admin创建Token

复制生成的Token到idea里面,填写好即可

验证和使用

接下来就是验证使用了。我们在项目代码目录上右键

会有SonarLint这个选项,点击第一个

可以看到代码检测愉快的跑起来了。

扫描结束以后,可以看到,很多不规范的代码都被扫出来了。

随便点开一个,比如说这个空方法

并且右侧给出了对应的修复示例参考

但不懂英文?没关系啊 ,姿势可不只有这一种!!!

第二种姿势

那么这次我们使用管理台+maven来看如何牛逼的使用它,

登录管理台,点击Markerplace模块,安装中文包

安装完成重启服务

再次登录,熟悉的中文是不是回来了呀!

然后在项目里面加入以下maven依赖

<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.7.0.1746</version>
</plugin>

展开项目的Maven选项,双击运行,执行完毕后就可以登录管理台查看了。

打开管理台,你会发现产生了一个和你项目名一样的项目,并且各种代码质量指标都标注的清清楚楚!!

我们点进去,点开bug选项随便一处,查看Bug

果然扫出来了一处可能出现bug的代码,假设Get这个枚举对象为null的话,下面的对象getId()方法肯定会出现空指针了。

我们再导入一个一个项目,写几个不规范的代码,看看能不能扫出来。

果然是扫到了有异味的代码。。。 比如方法不规范拉,代码里输出日志不规范 了~

这里就不继续陪大家看bug和异味的代码了呀~

检测出了代码规范问题和bug漏洞咋办,改呗~

改完以后就可以早点下班了~~

各位老铁有空可以去尝试玩一玩啊,据说经常做代码review的程序员下班都比普通程序员要早。

结尾

写到结尾了,顺便提一句,有人说为什么不用类似阿里巴巴规约扫描插件,其实在项目开发中也有在用,但是确实只能测试出来一部分阿里定义出来的代码不规范问题,像漏洞和bug和这个就更不能比了,所以千万别有杠精来跟我较劲比较了,我只能说,都用吧!!

写到这里了,点赞转发三连有么,为了你能早点下班~

这样Review代码牛逼啦!的更多相关文章

  1. 为什么我会认为SAP是世界上最好用最牛逼的ERP系统,没有之一?

    为什么我认为SAP是世界上最好用最牛逼的ERP系统,没有之一?玩过QAD.Tiptop.用友等产品,深深觉得SAP是贵的有道理! 一套好的ERP系统,不仅能够最大程度承接适配企业的管理和业务流程,在技 ...

  2. 我喜欢ASP.NET的MVC因为它牛逼的9大理由(转载)

    我很早就关注ASP.NET的mvc的,因为最开始是学了Java的MVC,由于工作的原因一直在做.Net开发,最近的几个新项目我采用了MVC做了,我个一直都非常喜欢.Net的MVC.我们为什么使用MVC ...

  3. 最牛逼android上的图表库MpChart(三) 条形图

    最牛逼android上的图表库MpChart三 条形图 BarChart条形图介绍 BarChart条形图实例 BarChart效果 最牛逼android上的图表库MpChart(三) 条形图 最近工 ...

  4. 最牛逼android上的图表库MpChart(二) 折线图

    最牛逼android上的图表库MpChart二 折线图 MpChart折线图介绍 MpChart折线图实例 MpChart效果 最牛逼android上的图表库MpChart(二) 折线图 最近工作中, ...

  5. js深入研究之牛逼的类封装设计

    <script type="text/javascript"> var Book = function(newIsbn, newTitle, newAuthor) { ...

  6. Animate.css 一款牛逼的css3动画库

    Animate.css是一款很牛逼的,跨浏览器的css3动画库,使用方法也很简单只要引入一个animate.min.css就可以了, 简单使用 1 首先引入 animate的 css 文件样式 cdn ...

  7. Serializable 都这么牛逼了,Parcelable 还要你何用?

    一些闲聊 距离上一篇文章似乎又是很久了,看起来也没有很多反馈,催更就更不用说了.哈哈,放弃了. 话说最近公司在招聘一批至少 5 年开发经验的 Android 开发工程师,我也是忙开了花,激动得不行呀. ...

  8. SNF开发平台WinForm-EasyQuery统计分析-效果-非常牛逼的报表查询工具

    无论是单轴曲线 .双轴曲线 .柱形图 .饼图 .雷达图 .仪表图.图表引擎全能为您轻松实现.您只需要 3 步操作(数据源准备,设计图表,挂接到您想要展示的位置)便可完成 BI 的设计. 无论是普通报表 ...

  9. C#学习笔记(36)——事件传值(非常牛逼!)

    说明(2018-4-9 23:01:20): 1. 这个真的想了很久,从晚上八点半写完上一篇博客,一直想到现在11点,以为没有办法实现了,结果看到一篇CSDN的文章,虽然没有看明白,但是看到一行代码后 ...

随机推荐

  1. 技能实际操作:如何为Centos7 配置静态路由?

    如图: 业务地址:192.168.10.0/24 ---- 192.168.20.0/24 管理地址:172.168.10.0/24 --- 172.168.20.0/24 需求:每台主机配置两张网卡 ...

  2. MySQL数据库---表的操作

    存储引擎 表就是文件,表的存储引擎就是文件的存储格式,即数据的组织存储方式. 字段类型 1.整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年 ...

  3. Android Studio报错问题集锦

    Android Studio使用过程中坑太多,动不动就报错,每次出现问题都是上百度去搜索,需要花费很大的时间和精力才能解决掉问题. 为了以后更高效的使用这款工具,在这里记录下来我已经踩过的坑和即将要踩 ...

  4. 深入探究JVM之垃圾回收器

    @ 目录 前言 正文 一.垃圾收集算法 标记-复制 标记-清除 标记-整理 分代回收 二.常用的垃圾回收器 Serial/SerialOld ParNew Parallel Scavenge/Para ...

  5. Java基础知识_内存

    前述:利用一段较为充足暑假时间,对以前的Java学习进行一个系统性的回顾,对于部分知识点进行记录和积累. Java中的内存 一 Java中的内存划分: Java中内存主要划分为五部分 栈(Stack) ...

  6. Python字典内置函数和方法

    Python字典内置函数和方法: 注:使用了 items.values.keys 返回的是可迭代对象,可以使用 list 转化为列表. len(字典名): 返回键的个数,即字典的长度 # len(字典 ...

  7. python 连接 mysql 的三种驱动

    连接 mysql 驱动 mysq1-client python2,3都能直接使用 对myaq1安装有要求,必须指定位置存在 配置文件 python-mysql python3 不支持 pymysql ...

  8. PHP date_time_set() 函数

    ------------恢复内容开始------------ 实例 设置时间: <?php$date=date_create("2013-05-01");date_time_ ...

  9. vjudge CountTables/2018雅礼集训 方阵 dp 斯特林反演

    LINK:CountTables 神题! 首先单独考虑行不同的情况 设\(f_i\)表示此时有i列且 行都不同. 那么显然有 \(f_i=(c^i)^\underline{n}\) 考虑设\(g_i\ ...

  10. 数据结构C语言实现----选择排序

    选择排序 第一步:从一串无序数字串中选一个最小的与第一个数交换位置 第二步:从剩下的数字中选一个最小的与第二个数交换位置 第三步:从剩下的数字中选一个最小的与第三个数字交换位置 以此类推... 运行结 ...