clangd ব্যবহার করে LSP সেট আপ করা হচ্ছে
পটভূমি
Emacs, Vim, অথবা VS Code এর মতো এডিটরগুলি LSP , ল্যাঙ্গুয়েজ সার্ভার প্রোটোকলের মাধ্যমে কোড নেভিগেশন, কোড সম্পূর্ণকরণ, ইনলাইন কম্পাইলার ত্রুটি বার্তা এবং অন্যান্য বৈশিষ্ট্যগুলিকে সমর্থন করে। LSP সমর্থন সহ একটি সাধারণ ভাষা সার্ভার হল clangd , যা compile_commands.json এর উপস্থিতির উপর নির্ভর করে, একটি JSON ফাইল যার একটি প্রকল্পের প্রতিটি ফাইলের জন্য কম্পাইল কমান্ডের রেকর্ড থাকে।
XLA সোর্স কোডের জন্য compile_commands.json কিভাবে তৈরি করব?
build_tools/lint/generate_compile_commands.py স্ক্রিপ্টটি ব্যবহার করুন। XLA repo root থেকে নিম্নলিখিত আমন্ত্রণটি একটি compile_commands.json ফাইল তৈরি করে: bazel aquery "mnemonic(CppCompile, //xla/...)" --output=jsonproto | python3 build_tools/lint/generate_compile_commands.py
বিল্ড ক্লিনার
গুগলের ভেতরে XLA CI অতিরিক্ত পরীক্ষা চালায় যাতে যাচাই করা যায় যে সমস্ত টার্গেট BUILD ফাইলের সমস্ত নির্ভরতা সঠিকভাবে তালিকাভুক্ত করে, যা OSS Bazel CI-তে ডিফল্টভাবে সক্রিয় থাকে না। XLA টিমে PR পাঠানোর আগে নিম্নলিখিত কমান্ডগুলি চালানো PR মার্জ করতে যে সময় লাগে তা ব্যাপকভাবে দ্রুততর করবে কারণ অন্যথায় আপনার অভ্যন্তরীণভাবে এই সংশোধনগুলি করার জন্য কিছু Googler-এর প্রয়োজন হবে, অথবা Googler-এর প্রতিক্রিয়ার উপর ভিত্তি করে সেগুলি ঠিক করার জন্য আরও কয়েকটি PR পর্যালোচনার প্রয়োজন হবে।
লেয়ারিং চেক
--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
ব্যান্ট টুল ইনস্টল করুন:
# 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
অব্যবহৃত deps অপসারণের জন্য buildozer কমান্ড তৈরি করতে bant ব্যবহার করুন:
bant dwyu //xla/core/collectives:symmetric_memory
যদি আপনি ভাগ্যবান বোধ করেন, তাহলে আপনি সরাসরি এগুলি কার্যকর করতে পারেন:
. <(bant dwyu //xla/core/collectives:symmetric_memory)