计算机技术 · 2021年6月14日

如何使用Source Insight4阅读项目源码

目录

[TOC] //wordpress的markdown渲染器不支持自动生成目录的吗…orz

一、简介

趁着最近比较空闲,想找些项目源码看看。虽然Visual Studio也提供跳转到定义、查找引用之类的功能,但每次创建项目都非常麻烦,而且阅读效率并不是特别高。

Source Insight是一款非常流行的源码编辑器和浏览器,可以生成源码调用层级关系树、类继承图表等信息,极大地提升我们阅读源码的效率。Source Insight自动为源码生成符号数据库,需要查找符号的时候可以直接从数据库中查找。俗话说“工欲善其事必先利其器”,在开始源码阅读之前,这款利器值得一试。

二、安装

首先从官网下载Source Insight 4安装包:
https://www.sourceinsight.com/updates/
注意选择安装目录,按照一般软件安装流程安装好即可。

初次运行时可以获得30天免费试用时间,购买Windows平台个人版价格是239美刀,建议有余力的老板支持下正版(ry


对于想把这款工具用作学习用途的同学,破解的方法非常简单:

首先准备一款可以打开二进制文件的编辑器,这里用的编辑器是HexEdit,好处是比较轻便,连安装都省了。
下载链接:https://pan.baidu.com/s/17_xwnaladB9k1qh_b27cWA
提取码:gumj

找到Source Insight的安装目录,Windows下默认的路径是C:\Program Files (x86)\Source Insight 4.0以管理员身份运行HexEdit,打开sourceinsight4.exe。按ctrl+f调出搜索框,搜索十六进制字串c800 0000 742a 83bc 2408,取消选中Find text后点确定。将结果中的74改为EB,保存文件。

在文件中查找字串

打开C:\ProgramData\Source Insight\4.0,用记事本打开里面的si4.lic,修改Date字段年份的值为2030后保存关闭。

修改si4.lic

重新启动Source Insight,可以看到授权信息已经被修改。

授权管理页

PS:本方法仅用于学习用途,请支持正版。

三、使用方法

1.创建项目

第一步

运行安装好的软件,准备向Source Insight导入我们的第一个项目。
点击菜单栏Project-->new project,看到软件弹出新建项目的对话框。输入项目名称,为了保证源码目录不会掺杂别的文件,我为Source Insight项目专门建了一个目录..\Projects\Source Insight。点击OK按钮进入下一步。

new-project-1.jpg
第二步

在Project Source Directory一栏为项目指定我们要阅读的源码目录,点击OK
new-project-2.jpg

第三步

点击右侧Add Tree按钮将目录下要浏览的的源码加入到项目,不需要的文件可以点击Remove File移除,也可以点击Remove Special...指定移除的文件夹。上方的File Name可以不管。点击close我们的项目就创建完毕了。

new-project-3.jpg

2.基本界面

项目成功导入后就可愉快地开始阅读了。左侧符号窗口列出当前文件中的变量、类、方法等符号。选中源码窗口中的符号时,上下文窗口将会显示该符号的声明,类似Visual Studio的peek功能。Rational Window根据函数的调用关系生成关系图,可以更直观地观察各个函数的层级关系。

各个小窗口可以通过菜单栏的View进行设置,通过拖动将窗口调整到自己喜欢的位置。

main-window.jpg

三、小结

使用Source Insight可以提高源码阅读效率,还有很多高级功能有待探索,将来在使用中有更多的体会和经验将继续补充到这里。

参考资料:

https://blog.csdn.net/qq_21792169/article/details/85835864
https://blog.csdn.net/qq_41960196/article/details/86636713
https://www.cnblogs.com/mengdd/p/3506526.html
https://www.cnblogs.com/andy-songwei/p/9965714.html
https://www.cnblogs.com/csonezp/archive/2012/10/06/2712910.html

书包是笨蛋

现深圳大学数据科学与工程实验室底层研究生,关注数据库与分布式系统,和其他好玩的事物。Just for fun.