Перейти к содержимому
Aback Tools Logo

Анализатор тегов сборки Go и условной компиляции

Разбирайте и анализируйте директивы //go:build и // +build из исходного кода Go. Смотрите на интерактивной матрице совместимости, для каких сочетаний ОС/архитектур компилируется код. Поддерживаются сложные выражения, пользовательские теги и оценка в реальном времени. Вся обработка выполняется локально и приватно.

Go Build Tag / Conditional Compilation Analyzer
Paste Go source code to parse build tags and conditional compilation directives. Visualize which OS/arch combinations the code compiles for. Supports both//go:build and// +build syntax.

Paste Go source code with build tags to analyze conditional compilation paths

Supports both//go:build and// +build directives

Click Load example to try with sample code

Ключевые возможности анализатора тегов сборки Go

  • Поддержка обоих синтаксисов: разбор и //go:build (Go 1.17+), и устаревших ограничений // +build. Обе директивы показываются рядом, а также отмечается, когда go:build переопределяет +build.
  • Матрица совместимости ОС/архитектур: смотрите оценку тегов сборки по 32 распространённым сочетаниям ОС/архитектур, включая linux, darwin, windows, freebsd, android, ios и другие. Активный и неактивный статус выделен цветом для мгновенного чтения.
  • Оценка выражений в реальном времени: вычисляйте сложные выражения тегов сборки с операторами AND (&&), OR (||), NOT (!), группами в скобках и пользовательскими тегами. Переключайте селекторы ОС и архитектуры, чтобы сразу видеть, какие ветки кода активируются.
  • Поддержка пользовательских тегов: задавайте собственные теги вроде cgo, race или флагов функций проекта. Анализатор показывает, как пользовательские теги взаимодействуют с платформенными ограничениями в выражении.

Кому полезен анализатор тегов сборки Go?

  • Разработка кроссплатформенных библиотек: анализируйте теги сборки в кроссплатформенных библиотеках Go, чтобы все сочетания ОС/архитектур были покрыты. Находите отсутствующие ограничения сборки, которые могут вызвать ошибки компиляции на отдельных платформах.
  • Отладка ошибок сборки: если проект Go компилируется на вашей машине, но падает в CI, вставьте код в анализатор и проверьте выражения тегов сборки. Убедитесь, что нужная ОС/архитектура корректно включена или исключена.
  • Изучение ограничений сборки Go: новичок в условной компиляции Go? Поэкспериментируйте с синтаксисом //go:build и // +build, чтобы понять, как работают вместе операторы AND, OR и NOT. Посмотрите, как соглашения об именах файлов взаимодействуют с тегами сборки.
  • Ревью и аудит кода: на ревью вставляйте файлы Go с условной компиляцией и проверяйте, что автор имел в виду правильный набор целевых платформ. Находите неверно заданные теги сборки до попадания в продакшен.
  • Миграция с +build на go:build: при переходе старого кода Go с // +build на синтаксис //go:build проверяйте в анализаторе, что мигрированные выражения дают то же покрытие платформ. Анализатор показывает обе директивы рядом.
  • Ревью вклада в open source: участвуя в больших проектах Go со сложными матрицами сборки, используйте этот инструмент, чтобы понять, какие теги управляют какими функциями. Определите, затрагивает ли ваше изменение только отдельные платформы.

Часто задаваемые вопросы

Тег сборки Go (или ограничение сборки) - это директива-комментарий в начале исходного файла Go, которая определяет, будет ли файл включён в компиляцию. Она позволяет писать код для конкретной платформы, включать необязательные функции или управлять условными зависимостями. Теги сборки проверяются при компиляции, и файл компилируется только при их выполнении.

Директива //go:build (появилась в Go 1.17) - современный синтаксис с булевыми выражениями в стиле Go. Синтаксис // +build - устаревший формат, где OR разделяется пробелами, а AND - запятыми. Если в файле есть обе директивы, компилятор использует //go:build и игнорирует // +build.

В Go для условной компиляции используются и соглашения об именах файлов. Файлы, оканчивающиеся на _GOOS.go (например, foo_linux.go), автоматически ограничиваются этой ОС. Аналогично _GOARCH.go (например, foo_amd64.go) ограничивает архитектурой, а _GOOS_GOARCH.go (например, foo_linux_amd64.go) - обеими. Такие выведенные теги показываются рядом с явными директивами тегов сборки.

Да. Анализатор полностью поддерживает выражения тегов сборки Go с операторами AND (&&), OR (||), NOT (!) и группировкой в скобках. Сложные выражения вроде (linux && amd64) || (darwin && !arm) корректно разбираются и вычисляются. Также можно добавлять пользовательские теги, чтобы проверить их взаимодействие с существующими ограничениями.

Анализатор проверяет теги сборки для 32 распространённых сочетаний ОС/архитектур, охватывающих 8 операционных систем (linux, darwin, windows, freebsd, netbsd, openbsd, android, ios) и 4 архитектуры (amd64, arm64, 386, arm). Также можно вручную выбрать любое из 18 поддерживаемых Go значений ОС и 12 значений архитектуры.

Пользовательские теги - это идентификаторы конкретного проекта, например cgo, race или ваши собственные флаги функций (например, enterprise, experimental). Они задаются при компиляции через go build -tags. Поле пользовательских тегов в этом анализаторе позволяет смоделировать, какие файлы будут компилироваться при активных тегах.

Да, полностью. Весь анализ тегов сборки выполняется локально в браузере. Ваш исходный код Go никогда не покидает устройство и не отправляется на серверы. Аккаунт не требуется, данные не сохраняются, отслеживание не ведётся.

Анализатор помогает проверить преобразование, показывая обе директивы рядом. Для самого преобразования в Go есть инструмент gofmt -r со специальным правилом перезаписи тегов сборки. Базовое преобразование превращает группы, разделённые пробелами (OR в +build), в операнды, соединённые &&, а элементы, разделённые запятыми (AND в +build), в операнды, соединённые ||.

Да, 100 % бесплатно. Без регистрации, премиум-тарифа, лимитов использования и ограничений размера файла. Инструмент работает полностью в браузере и всегда будет бесплатным на Aback Tools.