En İyi Uygulamalar

Sorun bildir Kaynağı görüntüle Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bu sayfada, Bazel'e aşina olduğunuz varsayılır ve projelerinizi Bazel'in özelliklerinden tam olarak yararlanacak şekilde yapılandırma konusunda yönergeler ve tavsiyeler verilir.

Genel hedefler şunlardır:

  • Paralelliğe ve artımlılığa izin vermek 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 bakımı kolay bir derleme yapılandırması oluşturmak için.

Bu kurallar zorunlu değildir. Çok az proje bu kuralların tamamına uyabilir. Lint'in kılavuz sayfasında belirtildiği gibi, "Sıkı kontrolle hata üretmeyen gerçek bir programı ilk oluşturan kişiye özel bir ödül verilir." Ancak bu ilkelerin mümkün olduğunca çoğunu dahil etmek, projeyi daha okunabilir, daha az hataya açık ve daha hızlı oluşturulabilir hale getirecektir.

Bu sayfada, bu RFC'de açıklanan şart düzeyleri kullanılır.

Derleme ve testleri çalıştırma

Bir proje, kararlı dalında her zaman bazel build //... ve bazel test //... başarılı bir şekilde çalıştırabilmelidir. Gerekli olan ancak belirli durumlarda (ör. belirli derleme işaretleri gerektiren,belirli bir platformda derlenmeyen, lisans sözleşmeleri gerektiren) oluşturulmayan hedefler mümkün olduğunca spesifik olarak etiketlenmelidir (ör. "requires-osx"). Bu etiketleme, hedeflerin "manuel" etiketinden daha ayrıntılı bir düzeyde filtrelenmesine olanak tanır ve BUILD dosyasını inceleyen birinin, hedefin kısıtlamalarını anlamasına yardımcı olur.

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

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

  • Bunları MODULE.bazel dosyasında uzak depolar olarak bildirin.
  • Alternatif olarak, bunları çalışma alanı dizininizin altında third_party/ adlı bir dizine yerleştirebilirsiniz.

İkili programlara bağlı olarak

Mümkün olduğunda her şey kaynaktan derlenmelidir. Genel olarak bu, some-library.so kitaplığına bağlı kalmak yerine BUILD dosyası oluşturup kaynaklarından some-library.so oluşturacağınız ve ardından bu hedefe bağlı kalacağınız anlamına gelir.

Her zaman kaynaktan derleme yapmak, derlemenin uyumsuz işaretlerle veya farklı bir mimariyle oluşturulmuş bir kitaplığı kullanmamasını sağlar. Ayrıca, yalnızca kaynakta çalışan kapsam, statik analiz veya dinamik analiz gibi bazı özellikler de vardır.

Sürüm oluşturma

Mümkün olduğunda tüm kodu baştan oluşturmayı tercih edin. Sürümlerin kullanılması gerektiğinde sürümü hedef adına eklemeyin (ö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 dayanıklıdır: Bir kitaplık guava-19.0'ya, bir diğeri ise guava-20.0'ya bağlıysa iki farklı sürüme bağlı olmaya çalışan bir kitaplıkla karşılaşabilirsiniz. Her iki hedefi de tek 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 özel seçenekler için workspace/.bazelrc yapılandırma dosyanızı kullanın (bkz. bazelrc biçimi).

Projenizde, kaynak kontrolüne eklemek 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 dosyanızda ve .gitignore dosyanıza user.bazelrc ekleyin.

Açık kaynaklı bazelrc-preset.bzl{: .external} Bazel sürümünüzle eşleşen özel bir bazelrc dosyası oluşturur ve önerilen işaretlerin ön ayarını sağlar.

Paketler

Derlenebilir dosyalar içeren her dizin bir paket olmalıdır. Bir BUILD dosyası, alt dizinlerdeki dosyalara (ör. srcs = ["a/b/C.java"]) referans veriyorsa bu, söz konusu alt dizine bir BUILD dosyasının eklenmesi gerektiğinin işaretidir. Bu yapı ne kadar uzun süre var olursa döngüsel bağımlılıkların yanlışlıkla oluşturulma, bir hedefin kapsamının genişleme ve artan sayıda ters bağımlılığın güncellenme olasılığı o kadar yüksek olur.