品牌型号:惠普 240 G3
系统:Windows 10 专业版
软件版本:Source Insight 4.0
进行软件开发时,程序员经常需要快速理解代码。用Source Insight读代码、梳理结构,体验还是很流畅的。它会自动构建符号数据库,梳理依赖关系、分析数据结构都是它的强项。本文将结合日常开发需要,回答Source Insight为什么好用,Source Insight可以识别结构体吗。
一、Source Insight为什么好用
程序员经常会用Source Insight读代码、改代码。它的好用主要体现在这几方面。
1、Source Insight会自动创建符号数据库
Source Insight最核心的本领,就是能自动创建一个符号数据库。打开项目后,它会自动解析所有源码,函数、变量、类这些信息都建好索引了。有了这个数据库,代码跳转和分析就会非常迅速。
2、Source Insight的代码导航功能非常高效
有了符号数据库,Source Insight找代码快又准,不用在项目里反复查找。
举个简单的例子,点击calculateCircleArea()这个函数,上下文窗口会自动显示出函数的定义。按住Ctrl点击函数名,还可以自动跳转到定义的位置。

3、Source Insight可以进行语法高亮,辅助阅读
在Source Insight里,不同类型的代码元素,会用不同颜色区分,读代码能清晰很多。
比如在C语言中,if、return这种关键字通常是蓝色的,字符串常量是红色的,注释是紫色。一眼就能看清代码结构。
想修改配色的话,可以在Options下,找到Style Properties。按自己习惯改颜色就可以,比如下图的例子,就是在修改注释(Comment)的颜色。

4、Source Insight的项目管理与搜索功能很实用
我们可以创建项目,把相关的源码文件放到一起管理,很方便。
搜索不仅能在当前文件中进行(快捷键Ctrl+F),也能在整个项目范围内进行。操作很简单,在Search下点击Lookup References,范围选“整个项目”就可以了。

在搜索结果里,会列出所有引用的位置,包含文件名和行号。点一下最左侧的红色箭头,就能跳过去查看详情。

Source Insight的这些功能可以帮我们快速理解代码、编辑代码,用起来很方便。除此之外,Source Insight还有图形化显示等进阶功能,可以先把基础功能用熟,再去探索进阶用法。
二、Source Insight可以识别结构体吗
答案是肯定的,Source Insight能够识别结构体。只是遇到特别复杂的情况,解析会受点限制。下面通过例子,介绍下它的工作方式和注意事项。
1、明确定义的结构体,Source Insight能够准确识别,并可以进行导航。
比如在point.h里定义了一个叫Point的结构体,在main.c 文件里声明了一个这种结构体类型的变量p。在main.c里按住Ctrl点击Point,能直接跳转到point.h的定义处。

2、Source Insight能正确访问结构体成员
直接Ctrl点击成员变量可以跳转,点一下结构体成员变量,也可以在上下文窗口直接看到定义。比如在下图中,点击成员变量x,下面直接能显示其在point.h结构体中的定义。

3、如果结构体是通过宏定义封装的,Source Insight的解析能力有限。
我们可以看下图中的例子,来帮助理解,DECLARE_REG_STRUCT宏虽然能够正确编译,但是Source Insight无法理解usart1变量与struct USART_RegDef的关系。这里要注意,它的解析器不是真正的C预处理器,复杂的多行宏替换会影响符号数据库的建立。

4、如何提高结构体识别准确性
为了优化结构体识别的效果,可以简化宏的使用,让结构体定义更易被Source Insight识别。
下图是改进建议。定义时用清晰的typedef,直接定义结构体类型。调用时用更直接的USART_RegDef_T usart1。这样一来,Source Insight能轻松识别,代码可读性也会提高。

Source Insight通常能识别结构体,遇到宏定义导致识别受限,简化一下结构体定义就能改善。
以上就是关于Source Insight为什么好用,Source Insight可以识别结构体吗的全部内容了。它识别结构体的功能,日常开发完全够用。平时写结构体的时候多注意点,就能充分发挥它的分析能力。使用Source Insight读代码、改代码,效率会提高,梳理代码结构也会更便捷。
