品牌型号:惠普 240 G3
系统:Windows 10 专业版
软件版本:Source Insight 4.0
做大型项目开发,头文件包含关系理不清很容易出问题。靠人工一条条梳理,又慢又容易出错。其实Source Insight本身就有查包含关系的功能,不用额外装插件。接下来,就给大家介绍下Source Insight如何查看文件包含图,Source Insight如何查看文件包含分析。
一、Source Insight查看文件包含图
文件包含图很直观,可以给我们展示文件之间的依赖关系。既能看到哪些文件用到了当前文件,也能看到它内部包含了哪些头文件,适合快速梳理层级,操作也很简单。
1、先同步项目文件
看包含图之前,必须先同步项目。符号没更新,生成的包含图会不准。
操作:点击顶部菜单栏的Project,选Synchronize Files,等软件自己同步完成就可以了。

2、再把关系窗口调出来
Source Insight里有个Relation Window(关系窗口),可以用来显示包含关系,但默认是不显示的,得我们自己手动开。
操作:点顶部的View,找到Panels,把Relation Window勾上,界面就会弹出这个窗口。

3、选一下文件,就能自动显示包含图
在项目文件列表里找要分析的文件,头文件、源文件都可以,点一下选中。选中后,关系窗口会自动生成包含图,不用额外操作。比如选example.h的时候,窗口里会显示这个文件里哪些函数被调用了。其实调用这些函数的文件,就是包含了example.h的文件,像 下图中,可以看出来example.c、main.c都是引用它的。

要是只想看某个文件包含了哪些文件,更简单,左边符号界面里,直接能看到这个文件用#include引入了哪些文件。

二、Source Insight如何查看文件包含分析
如果只看单层依赖不够,想找多层嵌套、重复引用、循环包含这些问题,我们可以把关系窗口和全局搜索结合起来用,不需要其他工具,软件自带的就够。
1、多层嵌套的包含关系怎么看
先确认项目同步好了,选中目标文件,关系窗口会按前面介绍的方式显示依赖。想看到更多层嵌套,就得调显示层级。
操作:点开关系窗口下面的设置按钮。

在弹出的界面里把Levels调高点,比如设成 4,就能看到更多层的依赖了。

2、全项目的文件引用,用全局搜索来找
想知道某个文件在整个项目里被哪些文件包含,全局搜索最准。
操作:先复制这个头文件的#include语句(比如#include example.h),点顶部的Search,选Lookup References。

进入新界面后,把复制的语句粘贴到输入框里。点Search,就能看到搜索结果。

结果里会列所有包含这个头文件的源文件,还标了行号,点一下就能直接跳到源码里的#include位置,能快速看有没有重复包含、多余引用。

3、怎么分析文件包含关系是否有问题
看关系窗口时,重点看依赖链路是不是闭环了。一旦闭环,就是循环包含,肯定会编译报错。比如遇到example.h引用example.c、example.c又引用example.h的情况,就得改对应的#include语句,把这个循环打破。

看全局搜索结果时,分两种情况:标准库头文件被多个文件引用很正常,不用改。但自己写的头文件要是被没意义地重复包含,编译速度会变慢,这时候我们可以用前置声明优化代码。
以上就是关于Source Insight如何查看文件包含图,Source Insight如何查看文件包含分析的全部内容。用Source Insight查包含关系,就是先同步项目、调出关系窗口看包含图,再结合全局搜索找全项目引用,就能把所有依赖理清楚,避免因为包含关系错导致编译出问题。希望本文可以帮到大家。
