想提高阅读代码的效率?试试这些工具吧!

京东云开发者
• 阅读 305

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

作者:京东科技 谢骁

来源:京东云开发者社区 转载请注明来源

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
C语言编程,初学者必学代码规范,你知道哪些?
C语言编程,初学者必学代码规范,你知道哪些?一个好的程序编写规范是编写高质量程序的保证。清晰、规范的源程序不仅仅是方便阅读,更重要的是能够便于检查错误,提高调试效率,从而最终保证软件的质量和可维护性。本文章适合编程初学者,对于具有一定工程项目开发经验的程序员,建议学习C语言程序代码编写规范—高级版。1代码书写规范1.1函数定义花括号:每个函数的定义和说明
Wesley13 Wesley13
3年前
10个经典的C++源码
开源世界有许多优秀的开源项目,我选取其中十个最优秀的、最轻量级的C语言的项目,希望可以为C语言开发人员提供参考。十个最值得阅读学习的C开源项目代码(http://my.oschina.net/zhoukuo/blog/335788OSC_h2_1)1.Webbench2.Tinyhttpd3.cJSON
Stella981 Stella981
3年前
ShopsN开源商城系统2.3.0即将更新。开源程序也可媲美商业代码了
2018年5月,即将更新2.3.0.目前版本2.2.6. 2.3.0聚集了几个月来数个电商实战商业项目的开发精华。修复了大批bug,安全漏洞,功能优化,近百项完善之处,因此此次更新,我们将定义为中型更新。2.3.0标志着ShopsN商城系统开源免费项目将脱离程序员才能改着用的阶段,不懂程序的小白用户也可以拿来做免费商用了。这里的代码可能传的不及时
Stella981 Stella981
3年前
Medium 2w+赞,高效程序员拥有的 7 个习惯!
受TechLead高效程序员的七项技能启发,我们团队想就这个话题发表自己的看法。下面是我们总结的高效程序员的七项技能。1\.学会如何阅读他人的代码!(https://oscimg.oschina.net/oscnet/1b93e0c50f4f4eeca22e572cf500653a.png)除了你,所有人写的代码
wc 统计已过时,cloc 每一行代码都有效
上下文我们通常用代码量来评判一个程序员技术的高低或一个项目的大小,阅读新项目源码时,也需要了解其代码量,心里有个预期。那如何统计代码量呢?传统做法通过findwc命令完成shell$find.name".go"|xargswcl60./etcd/tutorial/distributedlock.go...3491total如上,统计命
小万哥 小万哥
1年前
提高代码可读性的8个技巧
编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。只有在核心领域为了效率才可以放弃可读性,否则
铁扇公主 铁扇公主
1年前
苹果Mac版WebStorm 最新中文介绍
WebStormforMac是一款非常强大和实用的JavaScriptIDE,具有丰富的功能和工具,可帮助开发人员提高工作效率和代码质量。无论是做前端还是后端,都是一款非常值得尝试的软件。智能代码编辑器:软件内置有智能代码补全、语法高亮、错误检查、自动格式
京东云开发者 京东云开发者
7个月前
实现“代码可视化”需要了解的前置知识-编译器中端
1.前言前文介绍了编译器前端知识并附带了小练习,本文将继续介绍编译器中端相关的知识,还是概念练习的学习方式。中间代码是用来进行程序分析和实现代码可视化的关键数据,了解其生成和优化方式能更好的帮助我们理解程序的执行逻辑,希望大家阅读本文后有所收获。2.编译