Menyiapkan Lingkungan Developer

Menyiapkan LSP dengan clangd

Latar belakang

Editor seperti Emacs, Vim, atau VS Code mendukung fitur seperti navigasi kode, penyelesaian kode, pesan error compiler inline, dan lainnya, melalui LSP, Language Server Protocol. Server bahasa umum dengan dukungan LSP adalah clangd, yang mengandalkan keberadaan compile_commands.json, file JSON dengan catatan perintah kompilasi untuk setiap file dalam project.

Bagaimana cara membuat compile_commands.json untuk kode sumber XLA?

Gunakan skrip build_tools/lint/generate_compile_commands.py. Pemanggilan berikut dari root repo XLA akan menghasilkan file compile_commands.json di tempat: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Pembersih Build

CI XLA di dalam Google menjalankan pemeriksaan tambahan untuk memverifikasi bahwa semua target mencantumkan semua dependensi dengan benar dalam file BUILD, yang tidak diaktifkan secara default di CI Bazel OSS. Menjalankan perintah berikut sebelum mengirim PR ke tim XLA akan mempercepat waktu yang dibutuhkan untuk menggabungkan PR secara signifikan karena jika tidak, Anda akan memerlukan beberapa Googler untuk membuat perbaikan ini secara internal, atau beberapa putaran lagi peninjauan PR untuk memperbaikinya berdasarkan masukan dari Googler.

Pemeriksaan Pelapisan

Membangun dengan --features=layering_check memastikan Anda tidak secara tidak sengaja menyertakan header melalui dependensi transitif tanpa mencantumkannya dalam dependensi target

Menghapus dependensi yang tidak digunakan dari file BUILD

Instal alat 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

Instal alat 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

Gunakan bant untuk membuat perintah buildozer guna menghapus dependensi yang tidak digunakan:

bant dwyu //xla/core/collectives:symmetric_memory

Jika beruntung, Anda dapat langsung mengeksekusinya:

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