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)