来源:github.com/ice-lab/iceworks/tree/master/

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

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

代码质量评价标准

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

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

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

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

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

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

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

除此之外还有很多代码质量评价标准。我们需要一些取舍,选取部分大家有共识的规则定义团队好的代码标准。

代码质量维度

当前版本通过 @iceworks/doctor 从 5 个维度对代码进行评分:

  • 最佳实践: 通过 @iceworks/eslint-plugin-best-practices 分析项目,提出符合当前工程特征(对 ice 和 Rax项目友好)的最佳实践及阻塞问题发布卡口,帮助开发者优化项目性能,避免潜在 bug 。

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

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

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

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

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

项目地址

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

往期推荐

阿里云项目经理:Redis 开发规范

MySQL锁知识点复习,面试问到的概率超90%

【资源】这款工具让SpringBoot不再需要Controller、Service、DAO、Mapper!

ElasticSearch(ik分词器)+SpringBoot站内全文搜索解决方案

用王者荣耀来理解java设计模式之责任链模式

Spring Boot 万能文件在线预览解决方案

Spring Boot + Redis 三连招:Jedis,Redisson,Lettuce

java多模块项目脚手架:Spring Boot + MyBatis 搭建教程

预防java项目的jar 被反编译的方法

案例:程序员离职在家,全职接单心得

回复干货】获取精选干货视频教程

回复加群】加入疑难问题攻坚交流群

回复mat】获取内存溢出问题分析详细文档教程

回复赚钱】获取用java写一个能赚钱的微信机器人

回复副业】获取程序员副业攻略一份

好文请点赞+分享

淘宝开源的代码质量检测工具,真强啊~相关推荐

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

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:github.com/ice-lab/icewor ...

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

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

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

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

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

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

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

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

  6. 推荐一款免费开源的代码质量分析工具

    文章目录 一.简介 二.环境安装 三.使用说明 四.其他报错 UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position ...

  7. SonarQube-代码质量检测工具

    SonarQube是一款代码质量检测工具,用于检测代码BUG,漏洞之类的,当然这类工具是辅助工具,不一定是代码有问题,需要设置扫描规则 如果需要使用轻量级的,则可以直接安装sonarlint IDEA ...

  8. java检测工具_常用Java代码质量检测评估工具

    常用Java代码质量检测评估工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的潜在问题: 可能的bug--try/ca ...

  9. Docker运行sonarqube (代码质量检测平台)

    onarqube是什么 SonarQube是用于持续检查代码质量的开源平台. 可用于持续集成,持续部署流程中的代码检测环节. idea和jenkins都提供了插件配合使用. liunx推荐配置环境 l ...

最新文章

  1. 「Excel技巧」Excel技巧之如何看文件里的宏?
  2. [RHEL5企业级Linux服务攻略]--第2季 Samba服务全攻略答疑贴
  3. BZOJ2876 [Noi2012]骑行川藏 【拉格朗日乘数法】
  4. 数据库---分组查询
  5. linux下c/c++实例之十socket简单应用
  6. java学习笔记IO之字节输入输出流
  7. 决定c++语言中函数的返回值类型的是,全国2009年10月高等教育自学考试C++程序设计试题及部分参考答案...
  8. 酷客多小程序实现小程序之间跳转功能,让小程序玩出新花样
  9. Linux系统调用Hook姿势总结
  10. EasyExcel简单使用
  11. 不占内存的浏览器_4款黑科技办公网站,高效实用,不占内存,高手的必备神器...
  12. Eclipse console 编码设置
  13. C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例
  14. 弹窗修改数据 临时解决方法 + ajax
  15. Linux命令-网络命令:ping
  16. linux下ftp二进制传输,FTP的两种传输模式:BINARY和ASCII
  17. python 网格搜索_网格搜索查找AUC参数
  18. QOpenGLWidget显示图片
  19. “开宝五子棋读谱”软件的隐私政策和权限说明
  20. Github项目解析(五)--Android日志框架

热门文章

  1. 数字模拟电路课程设计multisim仿真源文件和设计原理
  2. C# Interlocked类的事例
  3. 杠杆炒股中洗盘是什么?
  4. Autojs 谁是卧底-炸弹猫计牌辅助
  5. echarts之渐变色设置
  6. 人工智能自然语言处理技术在财务管理专业的应用
  7. vue-devtools工具的安装和使用
  8. Python小作业 列举红黄绿小球的组合
  9. 编译php8,Centos编译体验PHP8 Alpha 2
  10. 修改imx6 linux4.1.15开机动画的完整教程