使用Alibaba代码规范插件和SonarLint插件提高代码质量

代码质量的重要性

在我们日常完成需求中,常常因为时间紧迫,项目紧急上线,总想着先实现再说,然后等日后上线之后再慢慢优化,我相信,你可能看过很多祖传代码,各种//TODO,然而往往随着项目的上线,TODO就变成DONE了。

其实,不是我们不想去完成TODO,而是一旦项目上线交付,验证过后的功能再次修改肯定会带来一定的风险,所以只要不出问题,就不会再次打开修改,甚至重构,这也是祖传代码的由来。

所以,为了避免低质量代码的存在,在编码阶段就应该保持一定的代码质量,及时时间紧迫交付压力大,也要保持着一定的代码洁癖,做到在一定条件下最优。

还有,程序员的思维都是完美主义,所以一旦确定思路,编码的速度其实可以很快,特别是简单的业务代码,小键盘敲得飞起,我们都讨厌各种if非空判断,各种check,因为这是不完美的,而代码质量的高低往往就在这些细节,而我们常常忽略的就是这些。

如果等到测试阶段再发现问题,那就得返工,而如果测试没有发现问题等到生产发布之后才发现问题,或者造成程序漏洞,那么将会得不偿失,还可能造成生产事故,所以每个程序员都有必要提高自己的代码质量,对自己的代码负责的同时也对自己的工作负责。

不断提高代码质量

从大的方面来讲,可以从这几个方面,不断提高自己的编程能力:

  • 编码之前需要做一定的设计,主要考虑:耦合度,拓展性,复用度
  • 熟悉类库,熟悉API,避免自己造轮子
  • 阅读优秀源码并加以实践
  • 参考一些已有的最佳实践,代码片段,但是避免复制粘贴
  • 多考虑一些细节、边界、异常场景
  • 保持代码的整洁,包括类、方法、变量的命名
  • 在I/O操作多考虑性能问题,重要信息多考虑安全问题

代码质量的修炼不是一日而成,而是在实践中不断练习,当有一天觉得自己写的代码就像一首诗的时候,当自己的代码被人夸奖的时候,内心岂不是也是美滋滋

使用Alibaba代码规范插件和SonarLint插件实时提高代码质量

Alibaba Java开发手册 & 代码规范插件

阿里巴巴Java开发手册

项目地址:https://github.com/alibaba/p3c

《阿里巴巴Java开发手册》在经历过N多个最终版(也是大家共同努力),最终得到大家共同的认可,至少在国内为行业规范的贡献还是不容小觑(直至今天,IDEA插件下载了达到了80万次),也顺利地出了书,感谢!

手册主要有如下几部分:

  • 编程规范
  • 异常日志
  • 单元测试
  • 安全规约
  • Mysql数据库
  • 工程结构
  • 设计规约
代码规范插件

官方安装教程:https://github.com/alibaba/p3c/wiki

代码规范插件实现了开发手册中的53条规则,基本都是基于PMD实现,可以扫描工程已有的代码,也可以实时检查,让我们及时发现问题代码,规避风险,写出规范代码,特别是对于同一团队,统一的代码规范非常重要,形成统一的风格,有利于看懂他人代码,排查问题等。

检查结果一共分三个等级:

等级 严重程度 备注
Blocker 严重的 有明显问题,影响功能,性能等
Critical 危险的 一般问题,遵循的标准
Major 主要的 多为建议

扫描结果效果如下:

alibaba_code_guidelines.png

SonarQube 与 SonarLint插件

SonarQube

项目地址:https://www.sonarqube.org/

SonarQube是一种自动代码审查工具,支持多种语言,可检测代码中的错误,漏洞和代码异味等。并且能够生成代码审查报告,它能够集成单元测试,统计单元测试覆盖率等。它还能很好与现有的DevOps结合,例如,在Java方面支持Maven插件,并且能够与Jenkins集成,实现自动化分析、测试,生成报告等。

sonar_qube.png
SonarLint插件

项目地址:https://www.sonarlint.org/

一个IDE插件,与SonarQube使用同样的代码分析工具,能够在编码的阶段实时检查代码,并且在代码提交前做检查等,把存在的问题提前暴露,提高代码质量。

三种问题类型

Type 类型 备注
Bug Bug 代码Bug,影响程序运行
Vulnerability 漏洞 漏洞,有可能被攻击
Codesmell 代码异味 可以优化,不然会影响代码的可维护性

五个问题等级

Severity 严重性 备注
BLOCKER 阻断 影响程序正常运行
CRITICAL 严重 可能会影响程序运行,安全等
MAJOR 主要 影响开发效率,代码质量
MINOR 次要 可能会影响开发效率,代码质量
INFO 提示 不影响程序,一些建议

扫描结果效果如下:

sonarlint.png
Alibaba代码规范插件 vs SonarLint

介绍完这两个插件,那么应该如何选择呢?

这两个插件的侧重点不同:

  • Alibaba代码规范插件比较关心的是代码规范,编码风格上的,例如,命名规范,注释,代码行数等
  • SonarLint比较关心代码正确性,存在的问题,风险,漏洞等,例如,重复代码,空指针,安全漏洞等

所以,我建议结合使用,使用前者来规范代码,使用后者来提前发现代码的问题,配合起来提高工程整体的代码质量,并且能够在编码阶段规避风险,提高程序的健壮性。

说了这么多,赶紧用起来吧!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容