SpringCloud服务治理(三十三)阿里代码规范扫描工具

441 阅读5分钟

插件支持了IDEA、Eclipse,在扫描代码后,将不符合规约的代码显示出来,甚至在 IDEA 上,还基于 Inspection 机制提供了实时检测功能,编写代码的同时也能快速发现问题所在,还实现了批量一键修复的功能。

IDEA 下如何使用?

1.打开 IDEA ,选择 File - Settings - Plugins - Browse repositories
打开 IDEA,选择 File - Settings - Plugins - Browse repositories 后,输入 alibaba 选中 Alibaba Java Coding Guidelines,点击 Install

2.重启IDEA,开始使用
安装后,会提示你重启 IDEA 已启用插件,重启后就可以在你的项目上疯狂点击右键了,当然菜单栏也会出现俩按钮,它有个快捷键是Ctrl+Shift+Alt+J

选中某一个类,或者在这个类里边右键也可以

3.扫描出坏代码
扫描代码后,将不符合规约的代码按 Blocker/Critical/Major 三个等级显示在下方,双击可以定位至代码处,右侧窗口还有针对代码的批量修复功能。

解释下Blocker/Critical/Major三个等级,

在 Snoar 中对代码规则有五个级别,这是前三个:崩溃/严重/重要 ,也就是说前两级别是必须要处理掉的。

好的代码必定是整洁的,而且可以帮助阅读的人快速理解和定位。好的代码能够加快应用的开发迭代速度,没必要花过多的时间来修复 bug 和完善代码。git

好的代码不但可以使得新的项目成员更容易加入项目,同时方便项目组成员快速作好 Back up。好的代码便于促进团队间交流合做提高开发效率。github

代码质量评价标准npm

有编码经验的人对代码都有必定的“鉴赏力”,可以凭感受给出代码好坏的主观评价。可是这种凭感受的方式太过个性随意,所谓仁者见仁智者见智,很难达成共识,那有没有一种公认的标准来鉴定代码质量呢?编程

答案是有的。这里简单分享当下较经常使用的评价标准,其中包括:编码规范、可读性、可维护性、重复度及可测试性。安全

编码规范
主要包含是否遵照了最佳实践和团队编码规范,是否包含可能出问题的代码,以及可能存在安全的漏洞。编码规范有助于提升团队内协助的效率以及代码的可维护性。模块化

可读性
Code Review 是一个很好的测验代码可读性的手段。若是你的同事能够轻松地读懂你写的代码,那说明你的代码可读性很好;反之则说明你的代码可读性有待提升了。遵照编码规范也能让咱们写出可读性更好的代码。性能

可维护性
代码的可维护性是由不少因素协同做用的结果。代码的可读性好、简洁、可扩展性好,就会使得代码易维护;更细化地讲,若是代码分层清晰、模块化好、高内聚低耦合、听从基于接口而非实现编程的设计原则等等,那就可能意味着代码易维护。除此以外,代码的易维护性还跟项目代码量的多少、业务的复杂程度、利用到的技术的复杂程度、文档是否全面等诸多因素有关。单元测试

重复度
遵照 Don’t Repeat Yourself 原则,尽可能减小重复代码的编写,复用已有的代码。对项目按期进行代码重复度检测是一个颇有意义的事,能够帮助开发人员发现冗余代码,进行代码抽象和重构。重复的代码一旦出错,意味着加倍的工做量和持续的不可控。若是代码中有大量的重复代码,就要考虑将重复的代码提取出来,封装成公共的方法或者组件。测试

可测试性
代码可测试性的好坏,一样能够反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能说明代码设计得有问题。优化

除此以外还有不少代码质量评价标准。咱们须要一些取舍,选取部分你们有共识的规则定义团队好的代码标准。

代码质量维度

当前版本经过 @iceworks/doctor 从 5 个维度对代码进行评分:
在这里插入图片描述
1.最佳实践:
经过 @iceworks/eslint-plugin-best-practices 分析项目,提出符合当前工程特征(对 ice 和 Rax项目友好)的最佳实践及阻塞问题发布卡口,帮助开发者优化项目性能,避免潜在 bug 。

2.安全实践:
经过 @iceworks/eslint-plugin-security-practices 扫码代码检测工程中可能存在的安全风险,包含 url 、敏感成词、明文帐密信息及 npm 包证书检测,下降项目安全风险,守卫项目安全。

3.阿里代码规范:
这一维度主要反馈开发人员对于 eslint-config-ali 阿里开发规约的遵照程度。

4.可维护度:
经过 typhonjs-escomplex 对文件进行扫码,得出每一个文件的可维护度,可读性及复杂度评分。针对得分较差的文件能够进行深度分析帮助开发者更好的重构复杂代码。

5.重复度:
经过 jscpd 计算重复出现的代码区块占比,计算出 clone 分数。并逐一列举重复的代码,方便开发者快速定位重复代码,将其封装成公共的方法或者组件。

根据上述 5 个维度经过加权平均的方式计算项目质量分,并根据木桶效应,在计算得分的过程当中加大了最低分的权重,得出最终项目质量评分。