文 | 轩辕御龙

来源:Python 技术「ID: pythonall」

每当我们接手一个新项目时,面对庞杂的模块、繁复的代码,想必心情是非常绝望的,“这都特么啥呀?”

如果你也有这样的烦恼,那你就应该看这篇文章。

我们阅读源码的一大烦恼在于,项目代码中存在着各种各样的调用,而我们的大脑却没办法像计算机一样完好地维护一个动态的调用链;时常发生的情况就是一头扎进了源码中,然后——

“我是谁?我在哪儿?我为什么要在这儿?”

显然,作为一个地道的程序员,这个时候应该想到借助工具了。

再根据软件界第一定律“99%的工作都是别人做过的”,于是我们大可以拿来主义一把,琢磨琢磨是不是已经有人做了这样的工具。

说到这里可能很多同学已经想到了一个被局部称为“世界第一编辑器”的软件——Source Insight。(然后看了看正版价格就灰溜溜滚回了Google)

然后还有强大的Understand,付费环节还比较繁琐,暂时pass。

直到我们在V2EX看见有同学推荐了一款名为Sourcetrail的开源软件。

下载安装

打开软件官方网站,可以看到一个很简洁的页面,直截了当地告诉你它是哪条道上的四年级老大哥:Sourcetrail就是为你阅读陌生源码赋能的。同时还免费、开源、跨平台……háo嘛,今年几大红火要素都占齐活儿了,不捞一把都说不过去。

01

接下来就是download,在GitHub的release页面选择自己系统对应的发布版本下载安装:

02

具体的安装步骤与其他应用相比大同小异,就不再赘述了,否则这篇文章也太水了点

03

软件介绍

安装好后,运行程序,会出现这样的界面:

04

我们选择“New Project”,在随后的界面中填写好项目名称和项目路径:

05

填好后点击下方的Add Source Group按钮,用以添加代码。

——在Sourcetrail中允许我们在同一个项目中添加多个来源的代码,甚至允许各个代码分组的语言互不相同,这些代码分组即为各个Source Group

由于我们只需要查看一个代码库的内容,因此我们也只需要添加一个Source Group即可,如下图依次点击:

06

在继续输入新的信息前,打开你的命令行工具(Windows系统:Win+R,输入cmd然后回车;Linux下不赘述),输入where python(Windows)或which python3(Linux),即可看到当前环境的Python安装路径,记下这个路径,我们需要用它来解析Python代码。

然后在新的界面中,需要填写Python环境的字段填入刚刚我们查到的Python所在目录(即去除最后一个斜杠及之后的内容)。

其他的需要注意的就是“要建立索引的文件/目录”,这个字段就是添加我们真正要阅读的Python源码路径。字段左下角有一个“+”号,点击即可增加一个源码路径:

07

原本是想把Python之父龟叔多年前写的爬虫程序作为示例的,奈何网络不给力,迟迟拉取不下源码,于是另外找了一份开源项目“北京实时公交”替换之。

点击右下角“Create”,再点击“Start”:

08

解析就开始了:

09

再点击“OK”:

10

得到下图的解析结果:

11

可以看到,Sourcetrail将解析结果按“文件”、“模块”等大致分了类。

我们点击最关心的“函数(Function)”来体验一下:

12

在左边,Sourcetrail为我们生成了形象的调用图;在右边,Sourcetrail列出了当前焦点函数的代码及其相应调用。

无论在左边操作还是在右边操作,都会带来界面的同步变化。

从此我们再也不必苦哈哈地在A4纸上写下繁琐的调用关系了哈哈哈哈,翻身农奴把歌唱

13

总结

本文介绍了一个可以把源码调用关系可视化的工具,可以极大便利我们阅读他人代码的工作。实际上这类工具还有很多,比如Source Insight和Understand。

只要是能够提升我们学习/开发效率的,我们都应该乐于尝试。后续我们还会推荐一些这类实用的工具,希望可以帮助大家升职加薪[手动滑稽]。


©著作权归作者所有:来自51CTO博客作者mob604756e8ada8的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【源码下载】50套高大上的后台管理系统模板,总有一套适合你
  2. 【源码下载】150款+炫酷的CSS3 loading加载动画,总有一款适合你
  3. Python_学习之Pycharm配置技巧
  4. 学习vue实现双向绑定【附源码下载地址】
  5. JavaScript中常量与变量的声明
  6. 这38款超级炫酷的时间轴特效代码案例,总有一款是你需要的
  7. 【源码实例】纯CSS水波纹效果和动画气泡
  8. Python爬虫进阶必备 | 关于某汽车交易网加密 Cookie 的分析
  9. crudapi零代码开发平台应用场景和成功案例

随机推荐

  1. 第2章 计算机工作原理
  2. Linux中断(interrupt)子系统之三:中断流控处
  3. 我应该在哪里添加Yocto位烤任务来创建工
  4. linux常用的有关网络操作的命令:
  5. linux的0号进程和1号进程
  6. Linux 驱动面试题总结
  7. Linux命令之find(一)
  8. 从Android应用访问Chromebook的localhost
  9. MeeGo定位跨4大平台OS Novell主攻平板电
  10. linux下安装nginx,支持rewrite、ssl