VSCode“转到定义”仅适用于大型项目

use*_*889 5 c visual-studio-code

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

当我打开一个大项目时,“转到定义、转到声明、查看...”等功能不起作用。我不知道如何形容这个项目有多大。源文件有超过 26k 行,编译可能需要 45 分钟。当我处理一个规模更合理的项目时,我没有任何问题,所以直到现在我认为这是由于我的项目规模而导致的程序限制,并辞职了。现在我真的很苦恼,想找到解决办法。

令我印象深刻的是,在整个项目中进行搜索(Ctrl + Shift + F)速度非常快并且工作出色,因此 VS 似乎有能力“处理”这个大项目。

  • 来自 Microsoft 最新版本 v0.28.3 的 C/C++ 扩展
  • VSCode最新版本1.46.1
  • Windows 10

您认为这个问题有解决办法吗?您是否在大型项目中使用过 VSCode?

编辑:我所说的“不工作”是指,它尝试执行该操作,但无限期地保持“思考”。

小智 5

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

"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"
],
Run Code Online (Sandbox Code Playgroud)

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

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