vscode会将所有函数、类、变量记录在一个表中?
或者 vscode 如何找到定义和引用?
我想知道VScode如何构建这个“Go To Definition”功能?
这是一个非常复杂的过程,并且有大量与该领域相关的软件工程研究。大多数 IDE/扩展通常会尽力而为,这对于各种用例来说已经足够了。如果遵循广泛使用的构建系统,并坚持广泛接受的代码组织,这也会有所帮助。
查找调用的定义是一个复杂的过程,通常需要全面了解程序并查找函数的定义位置。有两个重要的考虑因素:
- 语言的类型系统
- 围绕构建系统组织代码
对于(大多数)静态类型语言,如 C/C++ 等,查找函数声明并不太困难,因为它是在头文件中定义的。但是,查找定义通常涉及查找源文件 (.c/.cpp) 文件所在的位置,这取决于代码组织。
如果不了解构建系统(例如,cmake、qmake、bazel、buck),这是非常困难的,因此大多数 IDE 很难支持所有项目的代码完成。
对于像这样的语言rust,通常遵循严格的代码组织系统,使用一些类型信息进行简单的 grep 足以获取大部分函数定义。
对于支持的语言modules,也可以仅通过编译器调用来查找定义。模块本质上强制执行编程语言支持的代码组织系统。在这种情况下,构建系统的知识对于查找定义可能并不重要。
对于动态类型的语言(Python、JavaScript),很难找到正确的定义,IDE/扩展通常支持众所周知的编码风格和模块系统。 TLDR:在这种情况下,跟随人群会有所帮助。根据我的经验,PyCharm 在查找函数调用的定义方面做得非常好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)