Friday, March 4, 2016

Настройка Visual Studio Code для Go

https://medium.com/golang-notes/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-visual-studio-code-%D0%B4%D0%BB%D1%8F-go-647ea94aa795#.pzd56i9cf




Настройка Visual Studio Code для Go

В этой заметке я опишу как установить бесплатный кроссплатформенный редактор кода от Microsoft — Visual Studio Code и настроить его для работы с языком Go.
Когда я только начинал изучать Go, для написания программ мне с головой хватало встроенного в Far редактора с подсветкой синтаксиса.



С увеличением объёма кода в проектах назревала потребность в инструментах для удобного рефакторинга, обнаружения ошибок в момент написания исходного текста, а не после компиляции, быстрого просмотра подсказок по функциям из сторонних пакетов. Тогда я задумался о полноценной IDE. Go-плагин для atom на тот момент оказался нерабочим, поэтому выбор пал на среду LiteIDE, которая мне понравилась за простоту установки и наличие отладчика из коробки. LiteIDE я использовал последние полтора года.



Прошло какое-то время. Я прочитал несколько книг по Go, множество статей на сайте 4gophers.ru, узнал про golint, govet, про соглашения о написании кода в Go подобные pep8 в Python, и понял, что возможностей LiteIDE мне стало мало. Запуск трёх хоткеев для build, vet, lint стал напрягать. Уже не помню как, мне на глаза попался редактор Visual Studio Code, который у меня так и прижился.
Ниже будет рассмотрен процесс установки и настройки VSC для пользователей Windows. Думаю, что под другие ОС, вы сможете это сделать самостоятельно.

Установка

Итак, будем считать, что у нас уже установлена последняя версия Go x64, настроен GOROOT и GOPATH.
64-битная версия нужна, чтобы иметь возможность включить отладку go-кода в VSC. Если у вас 32-битная Windows и/или 32-битный Go, то всё, что написано в этой заметке будет для вас актуально, за исключением раздела про установку отладчика.
  1. Заходим на сайт VSC https://www.visualstudio.com/ru-ru/products/code-vs.aspx и качаем версию установщика для Windows.
  2. Запускаем установщик (VSCodeSetup-stable.exe), везде жмём Next, а в конце Install.
  3. Запускаем VSC.
  4. Идём в меню View — Command Palette (Ctrl-Shift-P)
  5. Во всплывающей строке вводим ext inst и выбираем пункт Extensions: Install Extension
  6. Затем либо выбираем из списка расширение go, либо дописываем слово go, чтобы отфильтровать список. Нас интересует расширение от lukehoban. Ставим его, нажав на облако. Обязательно в конце перезапускаем VSC руками или нажав кнопку Restart now.



Настройка

Далее необходимо установить дополнительные пакеты для Go и отредактировать конфигурационный файл пользователя VSC.
Пакеты можно установить двумя способами.
  1. Открываем в VSC любой go-файл, после чего в нижнем правом углу увидим сообщение “Analysis Tools Missing”. Надо нажать на это сообщение и недостающие пакеты установятся автоматически.
  2. Можно установить пакеты, выполнив в командной строке следующие инструкции:
go get -u -v github.com/nsf/gocode
go get -u -v github.com/rogpeppe/godef
go get -u -v github.com/golang/lint/golint
go get -u -v github.com/lukehoban/go-find-references
go get -u -v github.com/lukehoban/go-outline
go get -u -v golang.org/x/tools/cmd/gorename
go get -u -v sourcegraph.com/sqs/goreturns
go get -u -v github.com/tpng/gopkgs
go get -u -v github.com/newhook/go-symbols
Проверьте, что папка %GOPATH%\bin у вас добавлена в переменную окружения PATH.
После этого идём в меню File — Preferences — User Settings.
В файл settings.json, который будет открыт справа, вставляем настройки и сохраняем файл (Ctrl-S):
{
"go.buildOnSave": true,
"go.lintOnSave": true,
"go.buildFlags": [],
"go.vetOnSave": true,
"go.lintFlags": [],
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.vetFlags": [],
"go.formatOnSave": false,
}
"go.formatTool": "goreturns"
Перезапускаем VSC.
Если все установилось нормально, то мы должны увидеть подсветку синтаксиса, автодополнение кода, подсказку по параметрам функций, подсказки govet и golint и т.п.


Скриншот с MacOS, т.к. взят со страницы автора плагина

Для проверки работоспособности можно нажать правой кнопкой мыши в окне редактирования go-файла и выбрать пункт меню Format Code. Если код отформатировался и не отобразилось сообщение “Analysis Tools Missing”, то всё работает как надо.
ВАЖНО. Форматирование и проверка кода работают после сохранения редактируемого файла. Не забывайте периодически сохраняться или включите автосохранение в настройках.

Установка отладчика

Автор go-плагина в качестве отладчика предлагает установить delve. Процесс установки описан тут, я приведу краткую инструкцию того, как это делал я.
  1. Скачиваем 64-битный tdm-gcc, который необходим для сборки delve из исходников. http://tdm-gcc.tdragon.net/download
  2. Устанавливаем tdm-gcc с параметрами по умолчанию, например, в каталог C:\TDM-GCC-64
  3. Клонируем исходный код delve, переходим в каталог с ним и запускаем команду сборки:
    > cd c:\temp
    cd c:\temp\delveЕсли у вас Go 1.5, необходимо выполнить команду ниже. Если же у вас Go 1.6, то можно пропустить этот шаг.
    set GO15VENDOREXPERIMENT=1
    > C:\TDM-GCC-64\bin\mingw32-make.exe installОшибок при компиляции возникнуть не должно.
    Напомню, у вас должен быть установлен 64-битный Go.
    Для 32-битного я не проверял данную процедуру.
    Если у кого получится собрать delve для 32-битной windows, напишите в комментариях.
  4. Проверяем, что в %GOPATH%\bin появился файл dlv.exe
  5. Перезапускаем VSC, идём в меню View — Debug.
  6. На верхней панели в левой части экрана жмём на значок шестерёнки, откроется пустой файл launch.json, вставляем в него настройки и сохраняем файл:
{
"version": "0.2.0",
"configurations": [
"name": "Launch",
{
"request": "launch",
"type": "go",
"program": "${workspaceRoot}",
"mode": "debug",
"env": {},
}
"args": []
}
]
Всё. После этого должна заработать отладка.



Заключение

В целом работать с VSC приятнее, чем с LiteIDE. Фоновый lint и vet, поддержка git (самые необходимые команды), сокращают время на поиск ошибок и обслуживание кода.
Я только не нашёл, как делать Build по хоткею или из меню. Хотя, в LiteIDE я выполнял build, чтобы удостовериться, что код собирается без ошибок, а в VSC это проверяется “на лету” и если исходный текст содержит ошибки, внизу будет отмечено их количество.


отображение ошибок
сравнение файла с версией из последнего коммита в git

Ссылки

  1. Visual Studio Code
  2. Go for Visual Studio Code
  3. tdm-gcc — сборка gcc для Windows
  4. Delve — отладчик для Go
  5. LiteIDE
  6. atom — IDE с возможностью писать go-код
  7. Far — консольный файловый менеджер для операционных систем семейства Windows
  8. 4gophers.ru — лучший сайт про Go на русском

2 comments:

Unknown said...

Огромное спасибо за инструкцию, как раз искал способ отлаживать GO с интерфейсом. LiteIDE коряво работает с этим.

Кстати данный способ установки отладчика не сработал. Говорил, что "%GOPATH%\src" нет "github.com/derekparker/delve/cmd/dlv", надо было использовать "go get"

amaltsev-tech said...

да, похоже от go get пока все равно не уйти
но интеграция в студию - уже прогресс!