Source Insight是一个功能非常强大的C、C++的代码阅读器,通过工程的管理,Source Insight可实现多文件代码中(C工程或C和ASM的混合工程)的变量、函数的快速定位和搜索,并且对每个打开的源程序(C或C++代码)中的变量和函数的程序语句进行彩色显示等功能。作为读者,通过程序中语句的不同颜色以及变量和函数的快速定位,可以在一个大的工程中快速定位自己所要寻找的函数和程序段、定位变量和函数的定义和声明,大大节约的自己的时间,把精力集中在代码的阅读上。
一、Source Insight的安装
Source Insight目前的最新版本是3.5版,它的安装很简单,根据提示一步一步安装即可。
运行Source Insight界面如下:
各工具栏命令如下:
对应的文件菜单的功能
New(快捷键ctrl+N) 新建一个文件
Open(快捷键ctrl+O) 打开一个文件
Save(快捷键ctrl+S) 保存当前打开的文件
Save As(快捷键ctrl+shift+S) 将当前打开的文件保存为其它名子的文件
Save All(快捷键ctrl+A) 保存所有打开的和修改过的文件
Print 打印当前打开的文件
对应的编辑菜单功能
Cut(快捷键ctrl+X)
Copy(快捷键ctrl+C)
Paste(快捷键ctrl+V)
Undo(快捷键ctrl+Z)
Redo(快捷键ctrl+Y)
对应查找菜单功能
Search(快捷键ctrl+F) 在当前打开的文件中查找
Search Backward(快捷键F3) 在当前光标位置进行向后查找
Search Forward(快捷键F4) 在当前光标位置进行向前查找
Search Files(快捷键ctrl+shift+F) 在多文件(Source Insight工程中)中查找
Replace(快捷键ctrl+H) 在当前文件中进行查找和替代
对应于窗口功能,与普通的多文档编辑器相同,用来设置打开多个文件时窗口显示方式和规则。
用来设置Project窗口、Context窗口、Relation窗口和Clip窗口的显示或关闭。当快捷键点亮时,所对应的窗口显示。
Jump To Definition(快捷键ctrl+=) 跳转到当前光标所在位置的函数或变量的定义处(并打开文件)
Symbol Info 弹出一个窗口来显示当前光标位置的函数或变量的定义原型
Browse Project Symbols(快捷键F7) 在整个工程中查找一个函数或变量的出现位置
Lookup Reference(快捷键ctrl+/) 建立一个Reference链接,所对应的链接处会出现一个链接标志,通过链接标志可以方便的进行函数的查看。
Go To Previous Link 跳转到前一个Reference链接(此功能必须先建立一个Reference链接)
Go To Next Link(shift+F9) 跳转到前一个Reference链接(同上)
Go Back(Alt+)) 光标调转到前一个历史操作位置
Go Forward(Alt+.) 光标调转到后一个历史操作位置
Go To Line(F5) 跳转到指定的行位置
Bookmark(ctrl+M) 书签
帮助功能
二、Source Insight的使用
1、建立工程
Source Insight的强大功能是通过它的工程管理来实现的,为了有效的阅读源程序,我们首先应建立一个功能。
选择 “Project”菜单下的子菜单“New Project”新建一个工程,输入要创建的工程名后会弹出如下窗口:
这是一个工程设置窗口,Source Insight中有许多默认的设置,比如变量和函数的显示方式和颜色以及头文件的显示方式和颜色等,习惯性的设置对我们阅读源代码大有好处,所以通常我们选择默认方式即可。工程的存放位置我们可以直接输入全路径。
点击OK按钮会弹出如下窗口:
在我们新建工程以后,Source Insight 要求我们为所建的工程添加文件(如上图所示),我们可以通过这个窗口来为工程增加文件(当然也可以删除文件)。
其中Add All可以把我们在File Name中所显示的文件全部加入到工程中去。在这个对话框里,可以选择将要阅读的文件加入工程,一种方式是通过在File Name中输入要阅读源代码文件的名称,点击“Add”按钮将其加入,也可以通过其中“Add All”和“Add Tree”两个按钮可以将选中目录的所有文件加入到工程中,其中“Add All”选项会提示加入顶层文件和递归加入所有文件两种方式,而“Add Tree”相当于“Add All”选项的递归加入所有文件,它采用了部分打开文件的方式,没有用到的文件不会打开,所以,加入数千个文件也不用担心加入的文件超出程序的所能容忍的最大值。具体用那种方式来添加文件可以根据具体情况选用这些选项。
需要注意的中,File Name框中显示的只是Source Insight所能支持的文件(.c .cpp .h等),对于ASM程序和其它文件将不会显示。我们可以通过Show only known document types这一选项来选择显示其它类型的文件。
2、认识工程和文件的阅读
当我们建立好工程文件后,我们就可以通过工程窗口来查看我们工程中所添加的文件,如下图所示:
其中窗口左边显示的就是工程窗口,我们可以通过工具栏来显示和隐藏工程窗口。工程窗口标题为我们建立或打开的工程文件名,工程窗口通过列表框显示了我们工程中包含的全部文件以及一些相关信息(文件路径、大小、修改日期),当我们需要阅读某个文件时,我们可以在工程窗口中选择这个文件,通过双击这个文件可以出现文件窗口,如下图所示:
在这里,我打开了工程的文件bio.c,相应的右边弹出了文件窗口,我们可以通过这个窗口来进行源程序的阅读。文件窗口分两部分,一部分为源程序的文本显示,另一部分为打开的源程序的结构和变量函数信息,通过这个窗口,我们可以方便的观察源程序的结构以及定位该程序中所用到的变量和函数。对于Source Insight所支持的文件(C程序和C++程序),Source Insight可以快速的对源程序结构以及源程序中出现的变量、函数进行分析,并且用不同的图标来表示,如用:
表示宏定义,如头文件、条件编译命令等。
表示变量
表示函数
同时,源程序的文本用不同的颜色来显示,表示代码的不同意义。其中默认注释为蓝色显示,变量和函数用深蓝色显示,头文件用黄色表示等。这些显示规则我们可以通过设置菜单来改变,不过建议大家不要修改这些属性,这样便于大家的源程序互相阅读。
3、函数和变量的原型定位
在我们进行源程序阅读时,经常会要查看一个函数和变量的定义原型(也就是说这个函数或变量在那定义的?如何定义的?),在Source Insight中我们可以方便快速的定位函数或变量的原型。
(a)通过Jump To Definition来定位
用Jump To Definition来定位函数或变量原型时,有两种方法,第一种方法我们将当前光标放在我们要查找的函数或变量上,点鼠标右键,选择Jump To Definition;第二种方法我们可以通过工具栏上的按钮来选择 Jump To Definition功能(这时光标放在我们要查找的函数或变量上)。当然我们也可以通过快捷键来选择这一功能。如图所示:
在这里,我需要查找INTLOCK()函数的原形声明,我将光标放在INTLOCK()上,点右键选择Jump To Definition,出现如下窗口:
这时Source Insight快速找到了这个函数的定义语句,并打开包含这条语句的文件(这个文件名在主窗口中可以看到:Comdef.h),并且选中了这个函数定义语句。
(b)通过Context窗口来显示
Source Insight提供一个快速查看窗口Context,通过这个窗口,我们也可以快速查看函数或变量的原形定义。
如图所示:
和上例相同,我们要查INTLOCK()这个函数的原形,我们首先要打开Context窗口,通过工具栏的按钮来打开Context窗口,在文件窗口中,将光标位置放在INTLOCK()上,很快Context窗口就会显示这个函数的原形定义,此时Context窗口的标题为我们要查找的函数INTLOCK()。这个功能使用起来非常方便。
4、Reference功能
在我们阅读一个大的项目源代码时,可能会遇到许多的源程序,但我们通常只项目中的一个部分,但这些部分可能会出现在许多源程序之间。过去我们只有通过查看所有的源程序来查找我们关心的那部分代码,现在我们可以通过Source Insight的Reference功能来实现。
Reference功能是Source Insight的特色之一,它可以在速度极快的在整个工程中找到所有的标记,并且在该行程序的前边加上红色箭头的小按钮链接上。如下图所示:
在这里我要查找bio_set_sw()这个函数在我的工程中有那些文件调用了这个函数,将光标放在bio_set_sw()这个函数上,点击工具栏上的 Search Files 在多个文件中查找或直接点Reference按钮,会弹出上面的窗口,窗口是Reference在整个工程中的搜索结果,我们可以看出,这个函数在我的工程中调用或引用了12次,并且显示了这些调用的语句,这给我们节省了大量时间。如果我们还要更进一步的看这个函数在每个文件中引用的上下文时,我们可以点击来打开相应的文件,如下图所示:
通过点击我们展开了Reference,打开了一个引用这个函数的文件,我们就可以观察这个函数引用的上下文了。当我们看完后还要查看别的文件时,我们可以继续点击来收起Reference,这时又回到了上个窗口的界面,通过Reference我们可以更好的阅读源程序。