【问题标题】:VSCode 'Go to definition' not working only in big projectsVSCode 'Go to definition' 不仅仅适用于大型项目
【发布时间】:2020-07-03 00:48:49
【问题描述】:

一年来,我几乎每天都在专业地使用 VSCode for C 语言。现在,我遇到了一些真正影响我工作效率的事情。

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

让我印象深刻的是,在整个项目中搜索(Ctrl + Shift + F)速度非常快,而且效果很好,所以 VS 似乎能够“处理”这个大项目。

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

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

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

【问题讨论】:

  • 嗯,26k 行并不“大”。如果您有 6 或 7 位数的行数,我将其称为“大”,以 7 位数开头,称为“大量”。这也不是宠物项目,只是中小型项目。

标签: c visual-studio-code


【解决方案1】:

很可能不是“不工作”,而只是“很慢”。对于使用 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"
],

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

更多解释见:https://github.com/microsoft/vscode-cpptools/issues/1695

【讨论】:

  • 这样就成功了。有时我必须等待 2 到 4 秒,但至少现在可以了。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多