c语言 - VSCode 'Go to definition' 不仅适用于大型项目



我几乎每天都在专业地使用 VSCode for C 语言 +1 年了。现在,我遇到了一些真正影响我生产力的事情。

当我打开一个大项目时,功能"转到定义,转到声明,查看..."等不起作用。我不知道如何描述这个项目有多"大"。有 +26k 行的源文件,编译最多可能需要 45 分钟。当我使用规模更合理的项目时,我没有问题,所以直到现在,由于我的项目规模,我认为这是程序的限制,并辞职了。现在,我在这一点上真的很烦恼,想找到一个解决方案。

令我印象深刻的是,在整个项目中搜索(Ctrl + Shift + F(速度极快且效果出色,因此VS似乎能够"处理"这个大项目。

  • C/C++ 从最新版本 v0.28.3 Microsoft扩展
  • VSCode 最新版本 1.46.1
  • 视窗 10

你认为有解决方案吗?您是否在大型项目中使用过VSCode?

编辑:我的意思是,通过"不工作",它试图执行该操作,但无限期地保持"思考"。

最可能的不是"不工作",而只是"相当慢"。对于使用 Visual Studio 代码的 C/C++ 扩展的 C/C++ 项目,这是一个已知问题。智能感知的索引器需要一些时间(特别是如果你没有通过limitSymbolsToIncludedHeaders或类似的东西来限制它(。您可以尝试通过在c_cpp_properties.json中使用显式浏览路径来减少解析文件的数量,例如

"browse": {
"path": [
"/usr/include/",
"/usr/local/include/",
"${workspaceRoot}/../include",
"${workspaceRoot}/dir1",
"${workspaceRoot}/dir2",
"${workspaceRoot}/dir3/src/c++",
"${workspaceRoot}/dir5",
"${workspaceRoot}/dir6/src",
"${workspaceRoot}/dir7/src",
"${workspaceRoot}/dir4"
],

并排除例如不需要自动完成/转到符号/转到定义的 IDE/SDK 文件。

有关更多说明,请参阅:https://github.com/microsoft/vscode-cpptools/issues/1695

clangd插件

对于 C,我在clangd插件上取得了非常好的结果:https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd 它将 clangd 集成到 vscode 中。

该插件使用 clang 解析基于compile_commads.json数据库的代码,该数据库包含构建系统生成的确切编译命令,因此往往会产生最准确的结果。

我已经在以下位置更详细地介绍了它的设置: VSCode "转到定义" 不起作用

最新更新