clangd ile LSP'yi ayarlama
Arka plan
Emacs, Vim veya VS Code gibi düzenleyiciler, LSP (Language Server Protocol) aracılığıyla kod gezinme, kod tamamlama ve satır içi derleyici hata mesajları gibi özellikleri destekler. LSP desteği olan yaygın bir dil sunucusu olan clangd, bir projedeki her dosyanın derleme komutlarının kaydını içeren bir JSON dosyası olan compile_commands.json'ın varlığına bağlıdır.
XLA kaynak kodu için compile_commands.json nasıl oluştururum?
build_tools/lint/generate_compile_commands.py
komut dosyasını kullanın. XLA depo kökünden yapılan aşağıdaki çağırma işlemi, compile_commands.json dosyasını yerinde oluşturur: bazel aquery "mnemonic(CppCompile,
//xla/...)" --output=jsonproto | python3
build_tools/lint/generate_compile_commands.py
Derleme Temizleyici
Google'daki XLA CI, tüm hedeflerin BUILD dosyalarındaki tüm bağımlılıkları doğru şekilde listelediğini doğrulamak için ek kontroller yapar. Bu kontroller, OSS Bazel CI'da varsayılan olarak etkinleştirilmez. XLA ekibine PR göndermeden önce aşağıdaki komutları çalıştırmak, PR'nin birleştirilmesi için gereken süreyi büyük ölçüde hızlandıracaktır. Aksi takdirde, bu düzeltmeleri sizin için şirket içinde yapacak bir Google çalışanı bulmanız veya Google çalışanlarının geri bildirimlerine göre düzeltmek için birkaç PR incelemesi daha yapmanız gerekir.
Katman Kontrolü
--features=layering_check ile derleme yaptığınızda, hedef bağımlılıklarınızda listelemeden geçişli bağımlılık yoluyla yanlışlıkla bir başlık eklemediğinizden emin olursunuz.
Kullanılmayan bağımlılıkları BUILD dosyalarından kaldırma
Buildozer aracını yükleyin:
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
Bant aracını yükleyin:
# 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
Kullanılmayan bağımlılıkları kaldırmak için buildozer komutları oluşturmak üzere bant kullanın:
bant dwyu //xla/core/collectives:symmetric_memory
Kendinizi şanslı hissediyorsanız bunları doğrudan yürütebilirsiniz:
. <(bant dwyu //xla/core/collectives:symmetric_memory)