Entwicklungsumgebung einrichten

LSP mit clangd einrichten

Hintergrund

Editoren wie Emacs, Vim oder VS Code unterstützen Funktionen wie Codenavigation, Codevervollständigung und Inline-Compiler-Fehlermeldungen über das LSP (Language Server Protocol). Ein gängiger Sprachserver mit LSP-Unterstützung ist clangd, der auf das Vorhandensein von compile_commands.json angewiesen ist, einer JSON-Datei mit einer Aufzeichnung der Kompilierungsbefehle für jede Datei in einem Projekt.

Wie generiere ich compile_commands.json für XLA-Quellcode?

Verwenden Sie das Skript build_tools/lint/generate_compile_commands.py. Mit dem folgenden Aufruf aus dem XLA-Repository-Stammverzeichnis wird eine compile_commands.json-Datei erstellt: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Build Cleaner

XLA CI in Google führt zusätzliche Prüfungen durch, um zu bestätigen, dass alle Ziele alle Abhängigkeiten in den BUILD-Dateien korrekt auflisten. Diese sind in OSS Bazel CI nicht standardmäßig aktiviert. Wenn Sie die folgenden Befehle ausführen, bevor Sie den PR an das XLA-Team senden, wird die Zeit, die zum Zusammenführen des PR benötigt wird, erheblich verkürzt. Andernfalls muss ein Google-Mitarbeiter diese Korrekturen intern für Sie vornehmen oder es sind einige weitere PR-Überprüfungen erforderlich, um sie basierend auf dem Feedback der Google-Mitarbeiter zu beheben.

Prüfung der Überlagerung

Wenn Sie mit --features=layering_check erstellen, wird sichergestellt, dass Sie nicht versehentlich einen Header über eine transitive Abhängigkeit einfügen, ohne ihn in den Zielabhängigkeiten aufzulisten.

Nicht verwendete Abhängigkeiten aus BUILD-Dateien entfernen

Installieren Sie das Buildozer-Tool:

sudo curl -fsSL -o /usr/bin/buildozer https://github.com/bazelbuild/buildtools/releases/download/6.0.0/buildozer-linux-amd64
sudo chmod 755 /usr/bin/buildozer

Installieren Sie das Bant-Tool:

# To some writable directory that does not require root access
bazel build -c opt //bant && install -D --strip bazel-bin/bant/bant ~/bin/bant

# For a system directory that requires root-access
sudo install -D --strip bazel-bin/bant/bant /usr/local/bin/bant

Verwenden Sie bant, um buildozer-Befehle zum Entfernen nicht verwendeter Abhängigkeiten zu generieren:

bant dwyu //xla/core/collectives:symmetric_memory

Wenn Sie Glück haben, können Sie sie direkt ausführen:

. <(bant dwyu //xla/core/collectives:symmetric_memory)