想提高阅读代码的效率?试试这些工具吧!| 京东云技术团队
1.前言
程序员间有句名言——“Talk is cheap, show me the code!”源码的确相较于言语更接近程序真实的状态,包含了更多的一手信息。因此,无论是刚开始学习代码的小白还是久经沙场的代码大神,不管是学习优秀的开源项目还是做老项目的重构,代码阅读都是开发者必备的技能之一。但在业务场景越来越复杂、迭代越来越快的背景下,提高梳理代码的效率能够极大程度的提高开发人员的工作效率,进一步为业务创造新的价值。
工欲善其事必先利其器,阅读代码也能通过工具来提升效率,本文将介绍3种代码阅读辅助工具,大家不妨在工作中试用一下,看看是否能带来实际帮助。
2.工具
2.1 Source Insight
SI使用静态代码分析技术,提供了多个维度代码分析结果展示,对代码阅读、快速查找、代码分析和代码格式化都有帮助。可惜的是只支持Windows系统,Mac如果要使用需要安装虚拟机。
①代码可视化:提供各种图形可视化能力,包括继承关系图,CallGraph等;
继承关系图:
CallGraph:
②代码检查:对于语法格式和样式进行检查;
④代码探索:查看函数和变量的使用位置;
自动显示对函数、变量、类等的引用,使用高级搜索功能在整个项目中进行搜索。
⑤对比分析:提供了多维度对比分析能力。
文件对比:
目录对比:
还有其他功能,有兴趣的同学可以自行探索一下。
2.2 Understand
Understand使用静态代码分析技术,提供了多个维度的代码分析结果展示,其核心功能和SI类似但更丰富,而且工具易用性更好,也支持多种操作系统。
①代码可视化:提供各种图形可视化能力,包括依赖关系图,CallGraph,CFG、UML等等;
控制流程图(CFG):
CallGraph:
UML:
更多可视化图形介绍可参考:Interesting Graphs about Your Code
②代码检查:使用行业、通用或定制化的标准来检查代码,保证其安全、整洁,可用;
③代码量化:使用各种指标对代码进行度量,如:圈复杂度、度量树状图等度量图表;
度量树状图中的每个块都代表代码中的一个文件、类或函数。图块的大小和颜色渐变各不相同,以区分度量指标的程度。
度量图表可提供整个项目的信息,包括最复杂和最大的函数、类和文件等。
④代码探索:使复杂的代码关系变得简单;
提供了便捷的搜索功能,能够快速查找及定位指定的标识符。对于函数,可查看返回类型、参数和引用列表,点击后可立即进入该实例。对于类可查看成员变量和函数、包含列表以及相关指标。还可以通过信息浏览窗口或右键单击代码中任何已命名的实体来访问图表。使用蝴蝶图可以快速查看调用或被调用特定函数的所有内容。
⑤代码变更分析:快速查看两个项目代码之间的差异。
可以按文件、文件夹、实体或架构维度查看变更。只需要指定要对比的git版本或要对比的两个数据库,便可以以文本或树形图对比的形式查看变更情况。
还有其他很多功能,有兴趣的同学可以自行探索一下。
2.3 Source Trail
Sourcetrail是一款开源免费的跨平台源码分析工具,可在阅读源代码时提高效率。提供了按脑图形式展示的函数调用链路。在分析代码的同时,提供了优雅的图形化界面来展示工程项目中的各类标识符信息和链路图,能够让人更为直观地了解整个工程的调用信息。
PS:此开源项目已在2021年停止维护,遗留mac版本Java环境不能初始化问题至今没有解决(Sourcetrail was unable to locate Java on this machine)。
3.总结
工具名称 | 功能丰富度 | 易用性 | 费用 | 支持操作系统 | 维护情况 |
---|---|---|---|---|---|
Source Insight | ⭐️⭐️⭐️⭐️ | ⭐️⭐️ | 高 | Win | 功能长时间未新增 |
Understand | ⭐️⭐️⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️ | 高 | Win/Linux/Mac | 维护中 |
Source Trail | ⭐️⭐️ | ⭐️⭐️⭐️⭐️ | 无 | Win/Linux/Mac | 2021停止维护 |
如果之前没有接触过类似的软件,更推荐先试用下Understand。
4.参考
【工利其器】必会工具之(一)Source Insight篇
12 Greatest Code Visualization Tools for Developers
Code visualization: How to turn complex code into diagrams
作者:京东科技 谢骁
来源:京东云开发者社区 转载请注明来源
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何优化k8s中HPA的弹性速率
本文分享自华为云社区《K8s 核心资源指标HPA性能优化之路》,作者:可以交个朋友。 一 背景 以弹性指标为cpu、memory为例。在Kubernetes 1.7版本中引入了聚合层,允许第三方应用程序注册相关API接口到kube-apiserver上。其中/apis/metrics.k8s.io/v1beta1一般由metrics-server程序提供,以插件的形式安装在K8s集群中。相关流程如下: 纵观整个链路如何优化HPA的弹性速率呢? 二 关键时间点分析 首先对于HPA controller Kubernetes 将HPA pod自动扩缩实现为一个间歇运行的控制回路,间隔由kube-controller-manager的 --horizontal-pod-autoscaler-sync-period参数设置,默认间隔为15s。 然后kubelet指标汇总。kubelet提供指标端点:10250/metrics/resource 15刷新一次指标数据。容器指标由cadvisor负责采集,cAdvisor已经集成到kubelet程序当中。 metrics-server默认抓取时间为...
- 下一篇
一文让你对mysql索引底层实现明明白白
开篇: 图片是本人随笔画的,有点粗糙,望大家谅解,如有不妥之处,请联系我们,感谢。 一、索引到底是什么 .索引是帮助mysql高效获取数据的排好序的数据结构 .索引是存储在文件里的 .数据结构: 二叉树 HASH BTREE 如果没有索引的话,循环一条一条的找,找一次就是一次IO,这样速度就会很慢 我们知道数据库数据都是存在磁盘上的,当我们查找数据时,就会从磁盘上取数据,每取一次就是一次IO,IO是非常耗时的,为了速度快会把数据放到缓存里,然后在缓存里进行操作 二、磁盘存取原理 当查找数据的时候,就是磁头循环找此道,就会一直循环查找,一次查找就是一次IO,IO是很耗时的 三、Mysql数据结构详解 就拿上面的7条数据来说,如果没有索引,当我们查找第7条数据时,就会循环7次,如果有百万级别的数据,那么就会查找百万次,显然这样是不行的,就需要数据结构算法来优化,那我们就从二叉树----HASH---BTREE来一一说起 二叉树: 二叉树节点保存的都是单个索引,高度会随着数据增大而增高,但是比一条一条的循环会快 不用二叉树是因为的极端情况下会出现单边增长,这样在数量大的情况下,和一条一条查找...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装