Thiết lập môi trường phát triển

Thiết lập LSP bằng clangd

Thông tin khái quát

Các trình chỉnh sửa như Emacs, Vim hoặc VS Code hỗ trợ các tính năng như điều hướng mã, hoàn thiện mã, thông báo lỗi của trình biên dịch nội tuyến và các tính năng khác, thông qua LSP (Giao thức máy chủ ngôn ngữ). Một máy chủ ngôn ngữ phổ biến có hỗ trợ LSP là clangd, dựa vào sự hiện diện của compile_commands.json, một tệp JSON có bản ghi các lệnh biên dịch cho từng tệp trong một dự án.

Làm cách nào để tạo compile_commands.json cho mã nguồn XLA?

Sử dụng tập lệnh build_tools/lint/generate_compile_commands.py. Lệnh gọi sau đây từ thư mục gốc của kho lưu trữ XLA sẽ tạo một tệp compile_commands.json tại chỗ: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py

Build Cleaner

XLA CI bên trong Google chạy các quy trình kiểm tra bổ sung để xác minh rằng tất cả các mục tiêu đều liệt kê chính xác mọi phần phụ thuộc trong tệp BUILD. Các quy trình này không được bật theo mặc định trong OSS Bazel CI. Việc chạy các lệnh sau trước khi gửi PR cho nhóm XLA sẽ giúp tăng tốc đáng kể thời gian cần thiết để hợp nhất PR, nếu không, bạn sẽ cần một số nhân viên Google sửa lỗi này cho bạn trong nội bộ hoặc thêm một vài vòng xem xét PR để sửa lỗi dựa trên ý kiến phản hồi của nhân viên Google.

Kiểm tra lớp

Việc tạo bằng --features=layering_check đảm bảo rằng bạn không vô tình đưa một tiêu đề vào thông qua phần phụ thuộc bắc cầu mà không liệt kê tiêu đề đó trong các phần phụ thuộc mục tiêu

Xoá các phần phụ thuộc không dùng đến khỏi tệp BUILD

Cài đặt công cụ 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

Cài đặt công cụ 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

Dùng bant để tạo các lệnh buildozer nhằm xoá các deps không dùng đến:

bant dwyu //xla/core/collectives:symmetric_memory

nếu cảm thấy may mắn, bạn có thể thực thi trực tiếp các lệnh này:

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