我以为做完了。功能跑通了,UI看着顺眼,扩展加载也没报错。

然后我开始真正用它。

打开网易新闻 查看精彩图片

这是DevFlow Suite公开开发的第五天。这个系列记录从想法到上架VS Code Marketplace的完整过程。今天聊的是:那些藏在"能跑"和"能用的"之间的坑。

幽灵评论:删了,但没完全删

DevFlow Suite会在每次保存时自动扫描工作区的行内//注释。问题是:当你删掉一条注释再保存,扫描器有时候会把它重新捞回来。

根因很直白——删除事件和扫描都被同一个保存动作触发。删除还没刷进状态,扫描就跑完了。

修复:让扫描排队,等删除完再执行。代码就一行。找到它:3小时。

行号陷阱:静态引用的崩溃

删除一条注释时,下面所有注释都会上移一行。但扩展存的是固定行号。

删掉第42行。原来43行的注释现在到了42行,但存储的引用还写着43。渲染时显示"缺失"。

修复:用文本匹配代替行号匹配来确定身份。逻辑一行。困惑两天。

Windows路径:绝对与相对的暗雷

fs.copyFileSync和vscode.diff在Windows上处理绝对路径和相对路径混用时表现不一致。差异视图会静默失败。

我主力机不是Windows。这个bug是别人测出来的。

教训:如果扩展涉及文件系统操作,必须在Windows上测试路径处理。

回收站的僵尸数据

从回收站恢复的项目,下次渲染有时会重新出现在垃圾桶里。isInTrash检查用了过期的行号——和上面那个位移bug同根同源,只是换个地方冒头。

修复:同样切到文本匹配。同一套模式,不同位置。

VS Code环境的特殊性

VS Code扩展跑在一个奇怪的环境里。文件事件、webview持久化、命令注册——这些和标准Node.js都不完全一样。

"我测的时候能跑"和"它能稳定跑"之间的缝隙,就是上面这些bug的藏身之处。

唯一的发现方法:把自己当成没写过这个扩展的用户去用。