发布增强型Move VSCode 插件

Move VSCode 插件现在具有更多很酷的功能。

发布增强型Move VSCode 插件

在过去的几个月里,Mysten Labs 一直在努力开发新功能,为 Move语言的 VSCode 插件(Visual Studio 代码编辑器的插件)的新功能。现在,我们终于可以与广大开发者分享我们的成果了。该插件既可用于Move 核心语言,也可用于现有的所有Move 语言,如Move onSui

Move 的 VSCode 插件名为 move-analyzer,可从Visual Studio Marketplace 购买。新功能通过语言服务器协议(Language Server Protocol)提供支持;为了充分发挥插件的潜力,除了安装插件本身外,还需要安装 move-analyzer 的语言服务器,安装说明见插件发行版。

语言服务器协议(LSP)最初是由微软公司推出的,但也得到了一系列其他代码编辑器和集成开发环境(IDE)的支持,如Sublime TextEclipse。这是一种标准协议,集成开发环境的编辑器可以向语言服务器 "询问 "与正在编辑的代码有关的某些类型的信息。此外,它还能让您对所获得的数据进行可视化处理,从而增强和简化代码开发过程。我们希望在Move 语言社区的帮助下,将这些新功能与其他集成开发环境的编辑器集成在一起。

当前版本的 move-analyzer 语言服务器提供的新功能主要分为两大类:代码理解和错误报告。这些功能是通过将语言服务器与 "标准" Move 编译器(与该语言共同开发的编译器,是Move 主源代码的一部分)集成而实现的。这种整合不仅保证了语言服务器所提供信息的准确性(例如,编辑器或集成开发环境所显示的错误信息将直接与编译器生成的错误信息相对应),而且还简化了语言服务器的维护工作,以应对未来可能出现的Move 语言变更。以下是新功能的说明,您还可以通过视频观看新功能的演示:

代码理解

Move 语言设计试图解决的传统智能合约语言的问题之一是代码组成和重用。为了实现代码重用,代码可以分组为包(如标准库包),这些包可以在不同的智能合约实现中共享。这意味着,编写新智能合约的开发人员可能不得不面对一个他们基本不了解的代码库。

新的 VSCode 插件提供了一系列功能,可以帮助开发人员更好地理解整个代码库。

悬停时键入

在未知代码库中遇到标识符时,您可能不知道该标识符的类型。如果将光标悬停在标识符名称(如局部变量名称或函数名称)上,就会看到该标识符的名称显示在工具提示中。请参阅此示例。

转到定义

关于标识符的另一个信息可能不是很明显,那就是标识符是在哪里定义的--它可能是在同一个函数中定义的局部变量,也可能是在不同模块中定义的函数。如果右键单击标识符名称并从菜单中选择转到定义选项,光标就会转到标识符定义的位置。请看这个例子。

转到类型定义

即使您知道某个标识符的定义在哪里,也知道它的类型名称,但这并不一定意味着找到它的类型定义是一件轻而易举的事。例如,您可能已经知道标识符的类型是 struct SomeStruct,但仍然不知道该结构体有哪些字段。如果右键单击标识符名称,并从菜单中选择转到类型定义选项,光标就会转到定义该标识符类型的位置。请参阅此示例。

查找参考资料

增强代码理解能力的最新功能是在整个代码库中查找指定标识符的所有出现次数。例如,如果你想知道某个函数在哪里被调用,这就非常有用。 如果右键单击标识符名称并从菜单中选择 "查找所有引用"选项,VSCode 编辑器窗口左侧窗格中将显示该标识符的所有出现。请参阅此示例。

错误报告

获取Move 代码的编译器诊断(错误和警告)的标准方法是在命令行上运行编译器并观察其输出。这种方法当然足够了,但可能不是最方便的。相反,我们在新版 VSCode 插件中引入了在编辑器窗口中显示编译器诊断的功能。每当保存文件时,语言服务器都会在后台运行编译器,并将结果输出发送回 VSCode 显示(与代码理解相关的信息也会同时重新计算)。请参阅此示例。

.. .