# SourceInSight相关知识点
## 常规操作
### 工程新建/添加

1. 选择工程文件的位置

![1752034385269](./pictures/1752034385269.png)

2. 选择源码位置

   ![image-20250709121735489](./pictures/image-20250709121735489.png)

   3. 将源码导入

   ![image-20250709121914914](./pictures/image-20250709121914914.png)
   
   - Add:基本的文件添加操作
   - Add All:添加整个工程所有的源文件，最多只能添加下一级的文件（然后再选择是否递归添加子目录中的源文件,见上图对话框就和Add Tree功能类似）
   - Add Tree:添加指定的文件夹以及其子目录下的源代码文件
   - Remove Tree:和Add Tree的功能相反

### 文件新建/添加

![image-20250709123840755](./pictures/image-20250709123840755.png)

### 符号表同步

符号表同步 = 把源码中的函数、变量、类型等信息提取出来，建立一个可快速查找的数据库

![image-20250709122117757](./pictures/image-20250709122117757.png)

- **Force all files to be re-parsed**

  强制重新解析所有文件。

  -  作用：无论文件有没有改动，**全部源文件都会重新解析一遍**，重新生成符号。
  -  使用场景：
    - 大范围修改了宏定义、头文件或库文件；
    - 项目结构变化较大；
    - 符号跳转失效、显示不准确时使用；
  -  会花比较长的时间。

- **Synchronize the current source file only**

  只同步当前打开的源文件。

   作用：只更新你当前正在查看的文件的符号信息。

   使用场景：

  - 你刚刚改动了当前文件的一些函数或变量，希望立即生效；
  - 快速同步，不影响其他文件。

  - 其他文件不受影响，如果涉及头文件或其他依赖文件，可能会不完整。

- **Add new files automatically**

  自动添加新文件到项目中。

  -  作用：在同步过程中，如果发现了你源码目录下的**新文件**（比如新加的 `.c/.h` 文件），会**自动加入工程并解析符号**。
  -  使用场景：
    - 经常手动往目录里加文件的人建议勾上；
    - 适合多人协作开发时文件频繁变动。

- **Remove missing files from project**

  自动从工程中移除找不到的文件。

  -  作用：如果项目中之前包含的某些源文件**物理上已经被删除或移动**，则自动从工程移除它们。
  -  使用场景：
    - 清理项目符号库；
    - 文件重命名或移动后保持项目干净。
  -  小心使用，可能会误删临时缺失但之后会恢复的文件引用。

### 视图切换

![image-20250711122253319](./pictures/image-20250711122253319.png)

![image-20250711122210026](./pictures/image-20250711122210026.png)

### 常用窗口打开/关闭

常见四大窗口:

1. project  Window:查看我们的工程所在文件夹以及文件夹下的文件

   ![image-20250709122721155](./pictures/image-20250709122721155.png)

2. Symbol Window:用于查看我们开启的文件以及文件内所包含的函数

   ![image-20250709122927280](./pictures/image-20250709122927280.png)

3. Context Window串口：用于查看，函数中某个参数与函数的关系

   ![image-20250709123057307](./pictures/image-20250709123057307.png)

4. Relation Window窗口:用于查看函数以及参数所定义的位置

   ![image-20250709123227589](./pictures/image-20250709123227589.png)

   

### 搜索引用

![image-20250709123336532](./pictures/image-20250709123336532.png)

## 普通文本搜索（Search → Find）

- **快捷键**：`Ctrl + F`
- **作用**：查找文件中出现的文本（**不区分语法符号**，纯字符串匹配）
- **功能亮点**：
  - 支持大小写匹配
  - 支持正则表达式（Regular Expression）
  - 支持从当前位置、整个文件或选中区域查找
- **适用场景**：
  - 查找某个宏、错误码、注释等非符号内容
- **缺点**：
  - 找不到跨文件定义、不支持跳转到符号

## 全局搜索（Search → Find in Files）

- **快捷键**：`Ctrl + Shift + F`
- **作用**：在整个工程或指定路径中查找文本（可正则）
- **功能亮点**：
  - 可设置搜索路径、文件类型（*.c、*.h等）
  - 可将结果导出为列表窗口
- **适用场景**：
  - 搜索项目中所有文件中包含“某字符串”的位置
- **常用于**：
  - 搜索日志宏 `LOG_ERR`、关键字 `#define` 等

## 符号查找（Search → Lookup Symbol）

- **快捷键**：`Ctrl + /`
- **作用**：查找并跳转到某个“符号”的定义（函数、变量、宏等）
- **依赖符号表同步**
- **功能亮点**：
  - 模糊匹配，支持部分输入即可补全
  - 可以定位到头文件或函数体定义
- **适用场景**：
  - 快速跳转函数/变量定义
- **缺点**：
  - 搜不到未同步的符号（需手动同步）