En İyi Uygulamalar

Sorun bildirin Kaynağı göster

Bu sayfada Bazel hakkında bilgi sahibi olduğunuz varsayılır ve Bazel'ın özelliklerinden en iyi şekilde yararlanmak için projelerinizi yapılandırmaya yönelik kurallar ve öneriler sunulur.

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ın iyi kapsanmasını sağlamak 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: Birkaç proje, tümüne uyum sağlayabilir. lint için kullanılan man sayfasında belirtildiği gibi: "Katı denetimle hata vermeyen gerçek bir program oluşturan ilk kişiye özel bir ödül verilecek." Ancak bu ilkelerin mümkün olduğunca çoğunun dahil edilmesi, bir projeyi daha okunabilir, hataya daha az açık ve daha hızlı oluşturulmasını sağlamalıdır.

Bu sayfa bu RFC'de açıklanan gereklilik düzeylerini kullanır.

Derleme ve test çalıştırma

Bir proje bazel build //... ve bazel test //... özelliklerini kararlı dalında her zaman başarıyla çalıştırabilmelidir. Gerekli olan ancak belirli durumlarda oluşturulmayan hedefler (örneğin, belirli derleme işaretleri gerektir, belirli bir platformda derleme, lisans sözleşmeleri gerektir) mümkün olduğunca spesifik şekilde etiketlenmelidir (örneğin, "requires-osx"). Bu etiketleme, hedeflerin "manuel" etiketinden daha ayrıntılı bir düzeyde filtrelenmesini sağlar ve BUILD dosyasını inceleyen bir kişinin, hedef kısıtlamalarını anlamasını sağlar.

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

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

  • Bunları WORKSPACE dosyasında uzak depo olarak bildirin.
  • Dilerseniz çalışma alanı dizininizin altındaki third_party/ adlı bir dizine de ekleyebilirsiniz.

İkili programlara bağlı olarak

Her şey mümkün olduğunda kaynaktan derlenmelidir. Diğer bir deyişle, some-library.so kitaplığına bağlı kalmak yerine BUILD dosyası oluşturup kaynaklarından some-library.so oluşturursunuz ve ardından bu hedefe bağımlı olursunuz.

Kaynaktan her zaman derleme oluşturmak, derlemelerin uyumlu olmayan işaretlerle veya farklı bir mimariyle oluşturulmuş bir kitaplığı kullanmamasını sağlar. Kapsam, statik analiz veya dinamik analiz gibi yalnızca kaynakta çalışan bazı özellikler de vardır.

Sürüm oluşturma

Mümkünse tüm kodu kafadan oluşturmayı tercih edin. Sürümlerin kullanılması gerektiğinde, sürümü hedef adına dahil etmekten kaçının (örneğin, //guava-20.0 yerine //guava). Bu adlandırma, kitaplığın güncellenmesini kolaylaştırır (yalnızca bir hedefin güncellenmesi gerekir). Elmas bağımlılık sorunlarına karşı da daha dayanıklıdır: Bir kitaplık guava-19.0 ve bir kitaplık guava-20.0 bağımlıysa iki farklı sürüme bağımlı olacak bir kitaplığınız olabilir. 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ı olur.

.bazelrc dosyasını kullanma

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

Projenizde, kaynak kontrolüne göz atmak istemediğiniz kullanıcı başına seçenekleri desteklemek istiyorsanız şu satırı ekleyin:

try-import %workspace%/user.bazelrc

workspace/.bazelrc dosyanızdaki (veya başka bir dosya adı) ve .gitignore dosyanıza user.bazelrc ekleyin.

Paketler

Oluşturulabilir dosyalar içeren her dizin bir paket olmalıdır. Bir BUILD dosyası, alt dizinlerdeki (ör. srcs = ["a/b/C.java"]) dosyalara işaret ediyorsa BUILD dosyasının söz konusu alt dizine eklenmesi gerekir. Bu yapı ne kadar uzun süre geçerli olursa yanlışlıkla döngüsel bağımlıların oluşturulması o kadar olasıdır, bir hedefin kapsamı süzülür ve artan ters bağımlılıkların sayısı güncellenir.