En İyi Uygulamalar

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

Bu sayfada Bazel hakkında bilginiz olduğu varsayılarak yönergeler ve projelerinizi yapılandırma ve Bazel'ın özelliklerinden en iyi şekilde yararlanma konusunda tavsiye almaktı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.
  • Anlaması ve bakımı kolay bir derleme yapılandırması oluşturmak için.

Bu yönergeler şart değildir: az sayıda proje bu kurallara uyacaktır hepsinde yardımcı olur. Lint'in man sayfasında şöyle diyor: "Yararlanabileceğiniz oluşturmak için yapay zeka ile hiçbir hata üretmeyen gerçek bir program sıkı bir kontrol gerekiyor." 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 her zaman bazel build //... ve bazel test //... kararlı dalında başarıyla oluşturuldu. 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ı WORKSPACE 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ğu sürece her şeyin kaynaktan derlenmesi gerekir. 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ş. Bir de kapsam, statik analiz veya dinamik analiz gibi yalnızca kaynak üzerinde çalışı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ığına karşı daha dirençlidir. sorunlar: bir kitaplık guava-19.0 uygulamasına, diğeri de guava-20.0 özelliğine bağımlıysa iki farklı sürüme bağlı kalmaya çalışan bir kitaplık elde edebilirsiniz. Her iki hedefi 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ı kullanılıyor

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

Projeniz için desteklemek istemediğiniz kullanıcı başına sunulan seçenekleri desteklemek istiyorsanız kontrol etmek istiyorsanız aşağıdaki 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. BUILD dosyası, alt dizinlerdeki dosyalara başvurur (srcs = ["a/b/C.java"] gibi). söz konusu alt dizine bir BUILD dosyasının eklenmesi gerektiğine dair bir işaret. Ne kadar uzun döngüsel bağımlılıklar da o kadar büyük ihtimalle yanlışlıkla oluşturulduğunda hedefin kapsamı daralır ve sayısı arttıkça güncellenmesi gerekecektir.