IT实战联盟博客:http://blog.100boot.cn

好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位。好的代码可以加快应用的开发迭代速度,不必花过多的时间来修复 bug 和完善代码。好的代码不但能够使得新的项目成员更容易加入项目,同时方便项目组成员快速做好 Back up。好的代码便于促进团队间交流合作提升开发效率。

代码质量评价标准

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

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

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

可读性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 个维度通过加权平均的方式计算项目质量分,并根据木桶效应,在计算得分的过程中加大了最低分的权重,得出最终项目质量评分。

项目地址

github地址:https://github.com/ice-lab/iceworks/tree/master/

淘宝开源代码质量检测工具!(附源码)相关推荐

  1. 淘宝开源代码质量检测工具!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位. ...

  2. python爬虫-淘宝商品密码(图文教程附源码)

    今天闲着没事,不想像书上介绍的那样,我相信所有的数据都是有规律可以寻找的,然后去分析了一下淘宝的商品数据的规律和加密方式,用了最简单的知识去解析了需要的数据. 这个也让我学到了,解决问题的方法不止一个 ...

  3. TBSchedule淘宝开源定时任务调度框架(附客户端源码demo)

    淘宝开源定时任务调度框架 下载TBSchedule源码svn地址:code.taobao.org/p/tbschedule/src/trunk/ 内容包括两部分:TBSchedule源码及开发依赖包t ...

  4. 【IDEA】代码质量检测工具 QAPLug

    [IDEA]代码质量检测工具 QAPLug 代码质量检测工具 情景: 写完代码一定要别人review才发现bug或不好的语法或多余的变量是一件多么尴尬的事情,如果想在写代码时或者写代码后自己能发现问题 ...

  5. python代码检测工具及区别_flake8-python代码质量检测工具

    flake8是python代码质量检测工具. 描述 flake8是一个命令行实用程序,用于在整个Python项目中加强样式的一致性. 默认情况下,它包括PyFlakes项目提供的lint检查,PyCo ...

  6. [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码)

    Sokoban 介绍 [原创]jQuery推箱子小游戏(100关且可扩展可选关),休闲,对战,娱乐,小游戏,下载即用,兼容iPad移动端,代码注释全(附源码) 游戏说明 经典的推箱子是一个来自日本的古 ...

  7. JS sojson.vX在线解密工具-附源码

    前言 此文仅用于技术科普,教育与研究用途,请勿用于商业甚至非法用途,否则一切后果自负.若用户利用此文章而受到惩处,本人及本平台对其行为概不负责,亦不承担任何连带责任. 在线工具 Sojson.v4ht ...

  8. Docker搭建SonarQube代码质量检测工具

    SonarQube简介 SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量. 通过插件形式,可以支持众多计算机语言,比如 java, C#, go,C/C++, PL/S ...

  9. 推荐一套开源通用后台管理系统(附源码)

    今日推荐 Java 8 一行代码解决了空指针问题,太厉害了...List中remove()方法的陷阱,被坑惨了!25000 字详解 23 种设计模式,原来可以这么简单!最牛逼的 Java 日志框架,性 ...

  10. 淘宝开源的代码质量检测工具,真强啊~

    来源:github.com/ice-lab/iceworks/tree/master/ 好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位.好的代码可以加快应用的开发迭代速度,不必花过多的时间来 ...

最新文章

  1. 升降压斩波电路matlab,升降压斩波电路matlab仿真.doc
  2. linux shell mv 文件 文件夹移动重命名 命令
  3. 引起SQL数据库超时的问题分析及解决办法
  4. winfrom保存图片,将文件夹中图片放入listview,与撤回操作
  5. GFS - The Google File System
  6. 13-函数的封装和复用
  7. SQL编程题-----1
  8. iOS应用如何支持IPV6
  9. tigervnc远程控制linux,CentOS 6.8 安装TigerVNC 实现 Linux 远程桌面
  10. adb命令查看手机电量_desired Capabilities和aapt命令查看手机包信息
  11. dajngo3新建app,并且访问
  12. Python--day26--封装和@property
  13. C++继承之菱形继承
  14. [转]abstract 抽象类的概念和使用
  15. 读《人月神话》的感想(一)——关于组织结构沟通能力优劣的量化
  16. N1刷Android TV,贫民种草指北 篇二:N1盒子:不谈刷机,只谈使用!
  17. linux bash 自动补全,bash中的自动补全机制
  18. mysql strtolower_自己写的mysql类_PHP教程 - strtolower
  19. https://acs.jxnu.edu.cn/problem/GYM103495E
  20. jQuery子页面刷新父页面--局部刷新+整体刷新

热门文章

  1. Windows下编译FFmpeg-2.6.1详解
  2. 教你如何使用automake生成Makefile文件
  3. linux在多核处理器上的负载均衡原理(2)
  4. linux调度器(四)——主调度器与CFS
  5. ICRA2021会议-----SLAM方向汇总
  6. flask-mail异步发送邮件_Spring Boot邮件发送功能的实现与原理介绍
  7. 原根算法C语言,数据结构与算法分析 C语言描述(第2版)Larry Nyhoff AVL树
  8. 树莓派的命令和linux一样吗,常用的linux命令
  9. python中sort与sorted的区别_python排序函数sort()与sorted()的区别
  10. 算法上均匀分布的随机抽奖,如何避免现实的现场抽奖的中奖号码有时出现集中扎堆的现象?