Zum Inhalt springen
Aback Tools Logo

Go-Build-Tag-/Analyse der bedingten Kompilierung

Analysieren Sie //go:build- und // +build-Direktiven aus Ihrem Go-Quellcode. Visualisieren Sie mit einer interaktiven Kompatibilitätsmatrix, für welche OS/Arch-Kombinationen der Code kompiliert wird. Unterstützt komplexe Ausdrücke, eigene Tags und Echtzeit-Auswertung. Die gesamte Verarbeitung erfolgt lokal und privat.

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

Wichtige Funktionen des Go-Build-Tag-Analysators

  • Unterstützung beider Tag-Syntaxen: Parst sowohl //go:build (Go 1.17+) als auch Legacy-Constraints mit // +build. Zeigt beide Direktiven nebeneinander und weist darauf hin, wenn go:build +build überschreibt.
  • OS/Arch-Kompatibilitätsmatrix: Visualisieren Sie die Build-Tag-Auswertung über 32 gängige OS/Arch-Kombinationen wie linux, darwin, windows, freebsd, android, ios und mehr. Farbcodierter Aktiv-/Inaktiv-Status für sofortige Lesbarkeit.
  • Live-Auswertung von Ausdrücken: Werten Sie komplexe Build-Tag-Ausdrücke mit AND (&&), OR (||), NOT (!), Klammergruppen und eigenen Tags aus. Schalten Sie OS- und Arch-Auswahl um, um in Echtzeit zu sehen, welche Codepfade aktiv werden.
  • Unterstützung eigener Tags: Definieren Sie eigene Tags wie cgo, race oder projektspezifische Feature-Flags. Der Analysator wertet aus, wie eigene Tags mit plattformbasierten Constraints im Ausdruck zusammenspielen.

Wer profitiert vom Go-Build-Tag-Analysator?

  • Entwicklung plattformübergreifender Bibliotheken: Analysieren Sie Build-Tags in plattformübergreifenden Go-Bibliotheken, um sicherzustellen, dass alle OS/Arch-Kombinationen abgedeckt sind. Finden Sie fehlende Build-Constraints, die auf bestimmten Plattformen zu Kompilierfehlern führen könnten.
  • Debuggen von Build-Fehlern: Wenn ein Go-Projekt auf Ihrem Rechner kompiliert, in der CI aber scheitert, fügen Sie den Quellcode in diesen Analysator ein, um die Build-Tag-Ausdrücke zu prüfen. Stellen Sie fest, ob das Ziel-OS/-Arch korrekt ein- oder ausgeschlossen ist.
  • Go-Build-Constraints lernen: Neu bei der bedingten Kompilierung in Go? Experimentieren Sie mit der Syntax //go:build und // +build, um zu verstehen, wie AND, OR und NOT zusammenspielen. Sehen Sie, wie Namenskonventionen mit Build-Tags interagieren.
  • Code-Review & Audit: Fügen Sie bei einem Review Go-Dateien mit bedingter Kompilierung ein, um zu prüfen, ob der Autor die richtige Gruppe von Zielplattformen beabsichtigt hat. Erkennen Sie falsch abgegrenzte Build-Tags, bevor sie in Produktion gelangen.
  • Migration von +build zu go:build: Wenn Sie alten Go-Code von // +build auf die Syntax //go:build umstellen, prüfen Sie mit dem Analysator, ob die migrierten Ausdrücke dieselbe Plattformabdeckung ergeben. Der Analysator zeigt beide Direktiven nebeneinander.
  • Review von Open-Source-Beiträgen: Wenn Sie zu großen Go-Projekten mit komplexen Build-Matrizen beitragen, hilft dieses Tool zu verstehen, welche Build-Tags welche Funktionen steuern. Klären Sie, ob Ihre Änderung nur bestimmte Plattformen betrifft.

Häufig gestellte Fragen

Ein Go-Build-Tag (oder Build-Constraint) ist eine Kommentar-Direktive am Anfang einer Go-Quelldatei, die steuert, ob die Datei in die Kompilierung einbezogen wird. Damit lassen sich plattformspezifischer Code schreiben, optionale Funktionen aktivieren oder bedingte Abhängigkeiten verwalten. Build-Tags werden während der Kompilierung ausgewertet und müssen erfüllt sein, damit die Datei kompiliert wird.

Die Direktive //go:build (eingeführt in Go 1.17) ist die moderne Syntax mit booleschen Ausdrücken im Go-Stil. Die Syntax // +build ist das Legacy-Format mit durch Leerzeichen getrenntem OR und durch Kommas getrenntem AND. Sind beide in einer Datei vorhanden, verwendet der Compiler //go:build und ignoriert // +build.

Go nutzt für die bedingte Kompilierung auch Namenskonventionen. Dateien, die auf _GOOS.go enden (z. B. foo_linux.go), werden automatisch auf dieses OS beschränkt. Ebenso beschränkt _GOARCH.go (z. B. foo_amd64.go) auf diese Architektur und _GOOS_GOARCH.go (z. B. foo_linux_amd64.go) auf beide. Diese abgeleiteten Tags werden neben den expliziten Build-Tag-Direktiven angezeigt.

Ja. Der Analysator unterstützt Go-Build-Tag-Ausdrücke vollständig, mit AND (&&), OR (||), NOT (!) und Gruppierung durch Klammern. Komplexe Ausdrücke wie (linux && amd64) || (darwin && !arm) werden korrekt geparst und ausgewertet. Auch eigene Tags lassen sich hinzufügen, um ihr Zusammenspiel mit vorhandenen Constraints zu testen.

Der Analysator wertet Build-Tags gegen 32 gängige OS/Arch-Kombinationen aus, die 8 Betriebssysteme (linux, darwin, windows, freebsd, netbsd, openbsd, android, ios) und 4 Architekturen (amd64, arm64, 386, arm) abdecken. Sie können außerdem manuell einen der 18 von Go unterstützten OS-Werte und 12 Architekturwerte auswählen.

Eigene Tags sind projektspezifische Bezeichner wie cgo, race oder eigene Feature-Flags (z. B. enterprise, experimental). Sie werden zur Kompilierzeit mit go build -tags gesetzt. Das Feld für eigene Tags in diesem Analysator lässt Sie simulieren, welche Dateien kompiliert würden, wenn diese Tags aktiv sind.

Ja, vollständig. Die gesamte Build-Tag-Analyse erfolgt lokal in Ihrem Browser. Ihr Go-Quellcode verlässt niemals Ihr Gerät und wird an keinen Server gesendet. Es ist kein Konto erforderlich, es werden keine Daten gespeichert und es findet kein Tracking statt.

Der Analysator hilft Ihnen, Konvertierungen zu prüfen, indem er beide Direktiven nebeneinander anzeigt. Für die eigentliche Konvertierung bietet Go das Tool gofmt -r mit einer speziellen Umschreibungsregel für Build-Tags. Die grundlegende Konvertierung wandelt durch Leerzeichen getrennte Gruppen (OR in +build) in mit && verbundene Operanden um und durch Kommas getrennte Elemente (AND in +build) in mit || verbundene Operanden.

Ja, 100 % kostenlos. Ohne Anmeldung, ohne Premium-Tarif, ohne Nutzungsgrenzen und ohne Dateigrößenbeschränkung. Das Tool läuft vollständig in Ihrem Browser und bleibt auf Aback Tools immer kostenlos.