by Go Team / Google (open source) VS Code, Neovim, Emacs, GoLand, Vim, Helix
Официальный LSP-сервер для Go от команды Go (Google). Единственный рекомендуемый language server для Go — глубокая интеграция с toolchain, модулями и build system. Возможности: - Автодополнение с учётом интерфейсов и встраивания - Goto definition, find references, find implementations - Rename: переименование с обновлением всех файлов модуля - Diagnostics: ошибки компилятора + staticcheck + shadow - Inlay hints: типы переменных, имена параметров функций - Hover: документация, сигнатура, пример использования - Go Modules: автоматическое управление go.mod - Organize imports, format (gofmt/goimports)
# go install (рекомендуется):
go install golang.org/x/tools/gopls@latest
# VS Code:
# Extensions → "Go" (golang.go) → Install
# Внутри расширения: gopls устанавливается автоматически
# Neovim:
require('lspconfig').gopls.setup{
settings = {
gopls = {
analyses = { shadow = true, unusedparams = true },
staticcheck = true,
gofumpt = true,
},
},
}
# Helix — работает из коробки
Этот репозиторий предоставляет модуль golang.org/x/tools, включающий
различные инструменты и пакеты, в основном для статического анализа Go-программ,
некоторые из которых перечислены ниже.
Используйте ссылку «Go reference» выше для получения дополнительной информации о любом пакете.
Он также содержит
модуль golang.org/x/tools/gopls,
корневой пакет которого является сервером протокола языкового сервера (LSP) для Go.
LSP-сервер анализирует исходный код проекта и
отвечает на запросы от широкого спектра редакторов, таких как VSCode и
Vim, позволяя им поддерживать функциональность, аналогичную IDE.
Выбранные команды:
cmd/goimports форматирует Go-программу, как go fmt, и дополнительно
вставляет операторы импорта для любых пакетов, требуемых файлом,
после его редактирования.cmd/callgraph печатает граф вызовов Go-программы.cmd/digraph — утилита для работы с ориентированными графами в текстовой нотации.cmd/stringer генерирует объявления (включая метод String) для типов «перечисление».cmd/toolstash — утилита для упрощения работы с несколькими версиями инструментария Go.Эти команды могут быть получены с помощью команды вроде
go install golang.org/x/tools/cmd/goimports@latest
Выбранные пакеты:
go/ssa предоставляет промежуточное представление (IR) в форме статического
присваивания одного раза (SSA) для Go-программ, аналогичное типичному компилятору,
для использования инструментами анализа.
go/packages предоставляет простой интерфейс для загрузки, разбора и
проверки типов полной Go-программы из исходного кода.
go/analysis предоставляет фреймворк для модульного статического анализа Go-
программ.
go/callgraph предоставляет графы вызовов Go-программ, используя различные
алгоритмы с различными компромиссами.
go/ast/inspector предоставляет оптимизированный способ обхода дерева
разбора Go для использования в инструментах анализа.
go/cfg предоставляет простой граф потока управления (CFG) для Go-функции.
go/gcexportdata и go/gccgoexportdata читают и записывают бинарные
файлы, содержащие информацию о типах, используемую стандартным и gccgo компиляторами.
go/types/objectpath предоставляет стабильную схему именования для именованных
сущностей («объектов») в API go/types.
Множество других пакетов предоставляют более специализированную функциональность.
Этот репозиторий использует Gerrit для внесения изменений в код. Чтобы узнать, как отправлять изменения, посмотрите https://go.dev/doc/contribute.
Git-репозиторий находится по адресу https://go.googlesource.com/tools.
Основной трекер проблем для репозитория инструментов расположен по адресу https://go.dev/issues. Начните тему вашей проблемы с «x/tools/(ваш подкаталог):», чтобы ее было легко найти.
Этот репозиторий использует prettier для форматирования файлов JS и CSS.
Используемая версия prettier — 1.18.2.
Рекомендуется, чтобы весь код JS и CSS обрабатывался с помощью этого инструмента перед отправкой изменения. Однако это не строгое требование, обеспечиваемое CI.