Konfigurowanie środowiska programistycznego

Konfigurowanie LSP za pomocą clangd

Tło

Edytory takie jak Emacs, Vim czy VS Code obsługują funkcje takie jak nawigacja po kodzie, uzupełnianie kodu, wbudowane komunikaty o błędach kompilatora i inne dzięki LSP, czyli protokołowi serwera językowego. Popularnym serwerem języka z obsługą LSP jest clangd, który wymaga obecności pliku compile_commands.json w formacie JSON z zapisem poleceń kompilacji dla każdego pliku w projekcie.

Jak wygenerować compile_commands.json dla kodu źródłowego XLA?

Użyj skryptu build_tools/lint/generate_compile_commands.py. Poniższe wywołanie z katalogu głównego repozytorium XLA generuje plik compile_commands.json w miejscu: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Build Cleaner

XLA CI w Google przeprowadza dodatkowe testy, aby sprawdzić, czy wszystkie cele prawidłowo wymieniają wszystkie zależności w plikach BUILD, które nie są domyślnie włączone w OSS Bazel CI. Uruchomienie poniższych poleceń przed wysłaniem prośby o scalenie do zespołu XLA znacznie przyspieszy scalanie, ponieważ w przeciwnym razie konieczne będzie wprowadzenie poprawek przez pracownika Google lub kilka rund sprawdzania prośby o scalenie w celu wprowadzenia poprawek na podstawie opinii pracowników Google.

Sprawdzanie warstw

Korzystanie z --features=layering_check zapobiega przypadkowemu uwzględnieniu pliku nagłówkowego za pomocą zależności przechodniej bez umieszczania go na liście zależności docelowych.

Usuwanie nieużywanych zależności z plików BUILD

Zainstaluj narzędzie Buildozer:

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

Zainstaluj narzędzie Bant:

# 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

Użyj bant, aby wygenerować polecenia buildozer do usunięcia nieużywanych zależności:

bant dwyu //xla/core/collectives:symmetric_memory

Jeśli masz szczęście, możesz wykonać je bezpośrednio:

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