การตั้งค่าสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์

การตั้งค่า LSP ด้วย clangd

ฉากหลัง

โปรแกรมแก้ไข เช่น Emacs, Vim หรือ VS Code รองรับฟีเจอร์ต่างๆ เช่น การไปยังส่วนต่างๆ ของโค้ด การเติมโค้ดอัตโนมัติ ข้อความแสดงข้อผิดพลาดของคอมไพเลอร์ในบรรทัด และอื่นๆ ผ่าน LSP ซึ่งเป็นโปรโตคอลเซิร์ฟเวอร์ภาษา เซิร์ฟเวอร์ภาษาทั่วไปที่รองรับ LSP คือ clangd ซึ่งอาศัยการมีอยู่ของ compile_commands.json ซึ่งเป็นไฟล์ JSON ที่มีบันทึกคำสั่งคอมไพล์สำหรับแต่ละไฟล์ในโปรเจ็กต์

ฉันจะสร้าง compile_commands.json สำหรับซอร์สโค้ด XLA ได้อย่างไร

ใช้สคริปต์ build_tools/lint/generate_compile_commands.py การเรียกใช้ต่อไปนี้จากรูทของที่เก็บ XLA จะสร้างไฟล์ compile_commands.json ในตำแหน่ง bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Build Cleaner

XLA CI ภายใน Google จะทำการตรวจสอบเพิ่มเติมเพื่อยืนยันว่าเป้าหมายทั้งหมดแสดงรายการทรัพยากร Dependency ทั้งหมดอย่างถูกต้องในไฟล์ BUILD ซึ่งไม่ได้เปิดใช้โดยค่าเริ่มต้นใน OSS Bazel CI การเรียกใช้คำสั่งต่อไปนี้ก่อนส่ง PR ไปยังทีม XLA จะช่วยเร่งเวลาในการผสาน PR ได้อย่างมาก เนื่องจากคุณจะต้องขอให้ Googler แก้ไขให้คุณภายใน หรือต้องมีการตรวจสอบ PR อีก 2-3 รอบเพื่อแก้ไขตามความคิดเห็นของ Googler

การตรวจสอบการวางเลเยอร์

การสร้างด้วย --features=layering_check ช่วยให้มั่นใจว่าคุณจะไม่รวมส่วนหัวผ่านการอ้างอิงแบบทรานซิทีฟโดยไม่ได้ตั้งใจ โดยไม่ต้องระบุไว้ในการอ้างอิงเป้าหมาย

นำการอ้างอิงที่ไม่ได้ใช้ออกจากไฟล์ BUILD

ติดตั้งเครื่องมือ 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

ติดตั้งเครื่องมือ 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

ใช้ bant เพื่อสร้างคำสั่ง buildozer เพื่อนำการอ้างอิงที่ไม่ได้ใช้ออก

bant dwyu //xla/core/collectives:symmetric_memory

หากคุณมั่นใจ คุณก็เรียกใช้คำสั่งเหล่านี้ได้โดยตรง

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