109、【OS】【Nuttx】【周边】效果呈现方案解析:workspaceStorage(下)
【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
背景
接之前 blog
【OS】【Nuttx】【周边】文档构建渲染:workspaceStorage(上)
分析了 workspaceStorage 里面的一个重要功能:代码索引,下面继续分析 workspaceStorage
workspaceStorage
还是先看回构建信息这里
在终端中输入
ls /home/adminpc/.vscode-server/data/User/workspaceStorage/9cb1b511437f607cc1466b26d97b2345/
当然后面的项目路径 ID 每个人的都不一样,后面的 ID 替换成自己的,可以看到工作区缓存这里有几个文件夹
下面来详细分析下这里面的内容:
-
ms-vscode.cpptools: C/C++ 扩展存储目录,由 Microsoft 提供,存放前面介绍的代码索引缓存,比如符号数据库,解析后的头文件信息,用于代码补全、跳转定义、查找引用等
-
ms-vscode.makefile-tools: Makefile Tools 扩展存储目录,也由 Microsoft 提供,存放 Makefile 解析出的项目配置信息,这里注意,Makefile Tools 扩展在用 make 构建时不是必需的,主要是为了提升开发体验,安装这个扩展主要是两点:
1、智能感知 (IntelliSense) :安装它最重要的作用之一,可以自动解析工作区 Makefile 文件里的编译参数(比如 -I 头文件路径, -D 宏定义等),并将这些信息告诉上面介绍的 C/C++ 扩展,提升 C/C++ 扩展的智能感知能力
2、错误解析:可以更好地捕获 make 构建过程中的错误和警告,并在 VS Code 的问题面板中高亮显示,并链接到具体的代码行,提升调试体验
-
swyddfa.esbonio:esbonio 语言服务器扩展,为 Sphinx 文档提供支持,其中 swyddfa 是扩展发布者 的用户名
-
vscode.lock:锁文件,标识这个 workspaceStorage 目录当前正在被一个 VSCode 实例使用,防止多个 VSCode 实例同时尝试修改同一份缓存数据,保证数据一致性
在终端中输入
ls ../.vscode-server/data/User/workspaceStorage/
可以查看 workspaceStorage 下所有的项目工作区,代表着用 VSCode 打开的所有文件夹路径
这里有个细节,可以看到这里有一些项目 ID 前面部分是一样的,区别只是后面加了 -1,-2 等等,这也是个很典型且正常的现象,首先工作区生成的项目 ID 是基于打开的文件夹的完整路径计算出来的,前面部分相同,说明这些打开的路径最终都指向了同一个物理位置,但是 VSCode 有时会因为种种原因认为需要重建一个工作区的存储,比如
- 多个 VSCode 实例打开了同一个项目空间,并且做了修改(符合当前的情况)
- 旧的缓存格式不兼容
- 检测到缓存损坏
- 或者发现某个工作区目录里的数据不一致,过时或损坏等等
导致 VSCode 不确定旧缓存是否可靠,此时 VSCode 会为这个工作区创建一个新的,干净的缓存存储,同时保留旧的,以避免直接覆盖带来风险
在终端输入
ls -lat ~/.vscode-server/data/User/workspaceStorage/
这里 -lat 分别是三个选项
- -l:以详细的长格式显示文件和目录信息,每一行会包含
文件/目录的权限,比如 drwxr-xr-x
链接数
所有者
所属组
文件大小
最后修改日期和时间
文件或目录名等等,比如
drwxrwxr-x 4 adminpc adminpc 4096 Aug 16 22:05 9cb1b511437f607cc1466b26d97b2345-2
- -a:显示所有文件
- -t:按文件的最后修改时间进行排序
最终可以看到最新修改的 workspaceStorage 工作区