Обявяваме Enhanced Move VSCode Plugin

KeithbmBG
5 min readJul 29, 2022

--

Резюме: Плъгинът Move VSCode вече се доставя с много повече страхотни функции!

През последните няколко месеца Mysten Labs работи усилено върху нови функции за плъгина VSCode на езика Move (плъгин за редактора на Visual Studio Code). И сега най-накрая сме готови да споделим това, което сме постигнали с по-широката общност на разработчиците. Плъгинът е предназначен да работи както с основния език на Move, така и с всички съществуващи разновидности на езика на Move, като Sui Move.

VSCode плъгинът за Move се нарича move-analyzer и е достъпен във Visual Studio Marketplace. Новите функции се поддържат чрез езиковия сървърен протокол; за да разгърнете пълния потенциал на приставката, в допълнение към инсталирането на самата приставка, вие също трябва да инсталирате езиковия сървър на move-analyzer, както е описано в инструкциите за инсталиране, предоставени с разпространението на приставката. in installation instructions provided with the plugin distribution.

Протоколът за езиков сървър/ Language Server Protocol (LSP) първоначално беше въведен от Microsoft, но се поддържа и от редица други редактори на кодове и интегрирани среди за разработка (IDE), като Sublime Text или Eclipse. Това е стандартен протокол, при който редактор на IDE може да “попита” езиковия сървър за определени видове информация относно кода, който се редактира. И ви позволява да визуализирате получените данни по начин, който едновременно подобрява и опростява процеса на разработване на код. Надяваме се да интегрираме тези нови функции с други редактори на IDE, в идеалния случай с помощта на езиковата общност на Move.

Новите функции, предоставени от текущата версия на езиковия сървър на move-analyzer, попадат в две основни категории: разбиране на кода и докладване на грешки. Те са внедрени чрез интегриране на езиковия сървър със „стандартния“ компилатор на Move (компилаторът, който е разработен съвместно с езика и е част от основното хранилище на изходния код на Move). Тази интеграция не само гарантира точността на информацията, предоставена от езиковия сървър (напр. съобщенията за грешка, визуализирани от редактор или IDE, ще съответстват директно на съобщенията за грешка, генерирани от компилатора), но също така ще опрости поддръжката на езиковия сървър в лице на потенциални бъдещи промени в езика на Move. Ще намерите описанието на новите функции по-долу и можете също да видите демонстрация на новите функции в това видео:

Разбиране на кода

Един от проблемите с по-традиционните езици за интелигентни договори, които дизайнът на езика Move се опитва да реши, е съставянето на кода и повторната употреба. За да се даде възможност за повторно използване на кода, кодът може да бъде групиран в пакети (напр. стандартен библиотечен пакет) и тези пакети могат да се споделят между различни реализации на интелигентни договори. Това означава, че разработчиците, които пишат нови интелигентни договори, може да трябва да се справят с кодова база, която до голяма степен е непозната за тях.

Новият VSCode плъгин предоставя набор от функции, които могат да помогнат на разработчиците да разберат по-добре цялата си кодова база.

Въведете при задържане на мишката

Когато срещнете идентификатор в неизвестна кодова база, може да не знаете типа на идентификатора. Ако задържите курсора върху името на идентификатор (напр. име на локална променлива или име на функция), ще видите името на този идентификатор, показано в подсказката.

Преминете към дефиницията

Друга част от информацията за идентификатор, която може да не е веднага очевидна, е къде е дефиниран този идентификатор — може също така да бъде локална променлива, дефинирана в същата функция, но също така, например, функция, дефинирана в различен модул. Ако щракнете с десния бутон върху името на идентификатора и изберете опцията Go to Definition/ Отиди на дефиниция от менюто, курсорът ви ще бъде преместен до местоположението на дефиницията на идентификатора. Вижте този пример.

Насочете се към типа дефиниция

Дори ако знаете къде е дефиницията на даден идентификатор и знаете името на неговия тип, това не означава непременно, че е тривиално да намерите дефиницията на неговия тип. Например, може вече да знаете, че типът идентификатор е struct SomeStruct, но все още няма да знаете какви са полетата на тази структура. Ако щракнете с десния бутон върху името на идентификатора и изберете опцията Go to Type Definition/ Отидете към типа дефиниция от менюто, вашият курсор ще бъде транспортиран до мястото, където е дефиниран типът на този идентификатор. Вижте този пример.

Намерете препратките

Най-новата функция, подобряваща разбирането на кода, е способността да се намират всички срещания на даден идентификатор в цялата кодова база. Това може да бъде полезно, например, ако искате да знаете къде се извиква дадена функция. Ако щракнете с десния бутон върху името на идентификатора и изберете опцията Find All References/ Намерете препратките от менюто, всички срещания на този идентификатор ще бъдат показани в левия панел на прозореца на редактора на VSCode. Вижте този пример.

Докладване за грешки

Стандартен метод за получаване на диагностика на компилатора (грешки, но също и предупреждения) за част от кода на Move е да стартирате компилатора на командния ред и да наблюдавате изхода, който произвежда. Въпреки че този метод със сигурност е достатъчен, може да не е най-удобният. Вместо това, това, което въвеждаме в новата версия на приставката VSCode, е показване на диагностика на компилатора в прозореца на редактора. Всеки път, когато запишете файл, езиковият сървър ще стартира компилатора във фонов режим и ще изпрати получения резултат обратно към VSCode, за да бъде показан (информацията относно разбирането на кода също се преизчислява по същото време). Вижте този пример.

Разберете повече за Sui

Изграждайте с нас!!

Вълнуваме се какво ще се разкрие в бъдещето и каним създатели и разработчици да се присъединят към нас.

Оригинална статия: линк

--

--

KeithbmBG
KeithbmBG

Written by KeithbmBG

Bulgarian crypto enthusiast — разберете първи и участвайте заедно с мен! Twitter:KeithbmBG

No responses yet