En İyi Uygulamalar

Sorun bildir Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfada, Bazel'i bildiğinizi varsayılarak Bazel'in özelliklerinden tam olarak yararlanmak için projelerinizi yapılandırmayla ilgili yönergeler ve öneriler sunulmaktadır.

Genel hedefler şunlardır:

  • Paralellik ve artımlılığa olanak tanımak için ayrıntılı bağımlılıklar kullanmak.
  • Bağımlılıkları iyi bir şekilde kapsamak için.
  • Kodu iyi yapılandırılmış ve test edilebilir hale getirmek için.
  • Anlaşılması ve sürdürülmesi kolay bir derleme yapılandırması oluşturmak için.

Bu kurallar zorunlu değildir. Çok az proje bu kuralların tümüne uyabilir. lint'in man sayfasında da belirtildiği gibi, "Katı kontrolde hata vermeyen gerçek bir program üreten ilk kişiye özel bir ödül verilecektir." Ancak bu ilkelerden mümkün olduğunca çoğunu daha okunabilir, hataya daha az açık ve daha hızlı üretilebilir hale getirmektir.

Bu sayfada, şurada açıklanan gereksinim düzeyleri kullanılmaktadır: bu RFC'yi inceleyin.

Derleme ve testleri çalıştırma

Bir proje, kararlı dalında bazel build //... ve bazel test //...'i her zaman başarıyla çalıştırabilmelidir. Gerekli hedefler ancak belirli koşullar altında derleme yapmayın (örneğin, (belirli bir platformda derlemeyin, lisans sözleşmeleri gerektirir) olmamalıdır. Mümkün olduğunca özel olarak etiketleyin (örneğin, "requires-osx"). Bu Etiketleme, hedeflere kıyasla daha hassas bir düzeyde filtrelenmesine olanak sağlar. "manuel" etiketi ile birlikte BUILD dosyasını inceleyen bir kişinin kısıtlamalara bağlıdır.

Üçüncü taraf bağımlılıkları

Üçüncü taraf bağımlılıklarını belirtebilirsiniz:

  • Bunları MODULE.bazel dosyasında uzak depo olarak tanımlayın.
  • İsterseniz bu dosyaları çalışma alanı dizininizin altındaki third_party/ adlı bir dizine de yerleştirebilirsiniz.

İkili programlara bağlı olarak

Mümkün olduğunda her şey kaynaktan derlenmelidir. Bu, genelde bunun yerine bir kitaplık (some-library.so) BUILD dosyasını yükleyin ve kaynaklarından some-library.so derleyin ve bu koda hedefi belirleyebilirsiniz.

Her zaman kaynaktan derleme, bir derlemenin uyumsuz flag'lerle veya farklı bir mimariyle oluşturulmuş. Kapsam, statik analiz veya dinamik analiz gibi yalnızca kaynakta çalışan bazı özellikler de vardır.

Sürüm oluşturma

Mümkün olduğunda tüm kodu başlıktan oluşturmayı tercih edin. Sürümler ne zaman sürümü hedef ada dahil etmeyin (örneğin, //guava, //guava-20.0 değil). Bu adlandırma, kitaplığın güncellenmesini kolaylaştırır (yalnızca bir hedefin güncellenmesi gerekir). Ayrıca elmas bağımlılığı sorunlarına karşı daha dirençlidir: Bir kitaplık guava-19.0'e, diğeri guava-20.0'a bağlıysa iki farklı sürüme bağımlı olmaya çalışan bir kitaplıkla karşılaşabilirsiniz. Her iki hedefi de bir guava kitaplığına yönlendirmek için yanıltıcı bir takma ad oluşturduysanız BUILD dosyaları yanıltıcıdır.

.bazelrc dosyasını kullanma

Projeye özgü seçenekler için workspace/.bazelrc yapılandırma dosyasını kullanın (bazelrc biçimine bakın).

Projeniz için kaynak denetimine kaydetmek istemediğiniz kullanıcı başına seçenekleri desteklemek istiyorsanız şu satırı ekleyin:

try-import %workspace%/user.bazelrc

(veya başka bir dosya adı) workspace/.bazelrc içinde ve .gitignore cihazınıza user.bazelrc ekleyin.

Paketler

Derlenebilir dosyalar içeren her dizin bir paket olmalıdır. Bir BUILD dosyası, alt dizinlerdeki dosyaları (srcs = ["a/b/C.java"] gibi) referans alıyorsa bu, söz konusu alt dizin için bir BUILD dosyası eklenmesi gerektiği anlamına gelir. Bu yapı ne kadar uzun süre var olursa yanlışlıkla dairesel bağımlılıkların oluşturulma olasılığı o kadar artar, hedefin kapsamı genişler ve giderek artan sayıda ters bağımlılık güncellenmelidir.