Kurallar
takma ad
alias(name, actual, compatible_with, deprecation, features, restricted_to, tags, target_compatible_with, testonly, visibility)
alias
kuralı, kurala ad verilebilecek başka bir ad oluşturur.
Takma ad yalnızca "normal" için çalışır belirler. Özellikle, package_group
ve test_suite
için diğer ad kullanılamaz.
Takma ad kuralının kendi görünürlük bildirimi vardır. Diğer tüm açılardan bakıldığında, bu kurala benzer (ör. testonly takma adda yok sayılır; yalnızca test amaçlı olma ( bunun yerine referans verilen kuralın kullanıldığı durumlar) kullanılır:
-
Komut satırında takma adından bahsedilirse testler çalıştırılmaz. Takma ad tanımlamak için
referans verilen testi çalıştıran bir
test_suite
kullanın.tests
içinde tek bir hedefi olan kural özelliğini gönderin. -
Ortam grupları tanımlanırken
environment
kurallarının takma adları desteklenir.--target_environment
komut satırında desteklenmez iki seçenekten birini seçebiliriz.
Örnekler
filegroup( name = "data", srcs = ["data.txt"], ) alias( name = "other", actual = ":data", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
actual
|
|
config_setting
config_setting(name, constraint_values, define_values, deprecation, distribs, features, flag_values, licenses, tags, testonly, values, visibility)
Aşağıdakiler için beklenen bir yapılandırma durumuyla (derleme işaretleri veya platform kısıtlamaları olarak ifade edilir) eşleşir: amacına hizmet eder. Şu öğe için seçiminizi inceleyin: nasıl kullanılır? Yapılandırılabilir özellikler başlıklı makaleyi inceleyin.
Örnekler
Aşağıdakiler, --compilation_mode=opt
veya
-c opt
(açık olarak komut satırında veya dolaylı olarak .bazelrc dosyalarından):
config_setting( name = "simple", values = {"compilation_mode": "opt"} )
Aşağıdaki, ARM'yi hedefleyen ve özel tanımlamayı uygulayan herhangi bir derlemeyle eşleşir
FOO=bar
(örneğin, bazel build --cpu=arm --define FOO=bar ...
):
config_setting( name = "two_conditions", values = { "cpu": "arm", "define": "FOO=bar" } )
Aşağıdakiler,
kullanıcı tanımlı işaret
--//custom_flags:foo=1
(açıkça komut satırında veya dolaylı olarak
.bazelrc dosyaları):
config_setting( name = "my_custom_flag_is_set", flag_values = { "//custom_flags:foo": "1" }, )
Aşağıdakiler, x86_64 mimarisi ve glibc platformuna sahip bir platformu hedefleyen tüm derlemelerle eşleşir
etiketli bir constraint_value
olduğu varsayıldığında, sürüm 2.25
//example:glibc_2_25
. Bir platformun, ek bir tanımlayıcı tanımlaması durumunda da eşleştiğini unutmayın.
değeri için daha yüksek değer sunar.
config_setting( name = "64bit_glibc_2_25", constraint_values = [ "@platforms//cpu:x86_64", "//example:glibc_2_25", ] )
config_setting
üst düzey komut satırı işaretleriyle eşleşmiyor, yine de eşleşebilir
bazılarını anlatacağım.
Notlar
- Birden fazla öğe oluşturulduğunda ne olacağını görmek için seçeneği inceleyin
config_setting
öğeleri mevcut yapılandırma durumuyla eşleşiyor. - Kısaltılmış biçimleri (ör.
--compilation_mode
--c
),values
tanımlarının tamamı tam formu kullanmalıdır. Bunlar otomatik olarak iki formdan birini kullanarak çağrıları eşleştirin. -
Bir işaret birden fazla değer alıyorsa (ör.
--copt=-Da --copt=-Db
veya liste türü) Starlark bayrağı),"a"
isevalues = { "flag": "a" }
eşleşir listenin herhangi bir yerinde mevcut olmalıdır.values = { "myflag": "a,b" }
aynı şekilde çalışır: Bu,--myflag=a --myflag=b
--myflag=a --myflag=b --myflag=c
,--myflag=a,b
ve--myflag=c,b,a
. Tam anlamlar işaretidir. Örneğin,--copt
aynı anda birden fazla değeri desteklemez. örnek:--copt=a,b
["a,b"]
üretirken--copt=a --copt=b
["a", "b"]
üretir (yanivalues = { "copt": "a,b" }
ilki ile eşleşir ancak ikincisiyle eşleşmez). Ancak--ios_multi_cpus
(Apple kuralları için) şur:-ios_multi_cpus=a,b
veios_multi_cpus=a --ios_multi_cpus=b
["a", "b"]
üretir. İşaret tanımlarını kontrol edin ve ve koşulları dikkatlice inceleyin. - Yerleşik derleme işaretleri tarafından modellenmeyen koşullar tanımlamanız gerekirse
Starlark tarafından tanımlanan işaretler.
--define
de kullanabilirsiniz, ancak bu daha zayıf teklif verir desteği vardır ve önerilmez. Görüntüleyin burayı tıklayın. - Farklı paketlerde aynı
config_setting
tanımlarını tekrarlamaktan kaçının. Bunun yerine, standart pakette tanımlanan ortak birconfig_setting
öğesine başvurun. values
define_values
veconstraint_values
aynıconfig_setting
içinde herhangi bir kombinasyonda kullanılabilir ancak en az bir kombinasyon olmalıdır belirli birconfig_setting
için ayarlanabilir.
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
constraint_values
|
constraint_values kümesi
(config_setting ) ile eşleşecektir. (Yürütme platformu
dikkate alınmalıdır.) Platformun sahip olduğu ek kısıtlama değerleri yoksayılır. Görüntüleyin
Yapılandırılabilir Derleme Özellikleri'ni inceleyin.
Aynı iki |
define_values
|
values ile aynı ancak
özellikle de --define bayrağı için.
Bunun anlamı şudur: config_setting( name = "a_and_b", values = { "define": "a=1", "define": "b=2", }) çalışmıyor, çünkü aynı anahtar ( config_setting( name = "a_and_b", define_values = { "a": "1", "b": "2", })
|
flag_values
|
values ile aynı ancak
için
kullanıcı tanımlı derleme işaretleri hakkında daha fazla bilgi edinin.
Bu, farklı bir özelliktir çünkü kullanıcı tanımlı işaretler, işlem yaparken etiket olarak yerleşik flag'lere rastgele dizeler referans verilir. |
values
|
Bu kural, 2023'e kadarki sürümlerden birine sahip yapılandırılmış hedefin
bunu bir Kolaylık sağlamak amacıyla, yapılandırma değerleri derleme işaretleri olarak (
önceki Bir işaret, komut satırında açıkça ayarlanmazsa varsayılan değeri kullanılır.
Bir anahtar sözlükte birden çok kez görünüyorsa yalnızca son örneği kullanılır.
Bir anahtar, komut satırında birden fazla kez ayarlanabilen bir işarete (ör.
|
dosya grubu
filegroup(name, srcs, data, compatible_with, deprecation, distribs, features, licenses, output_group, restricted_to, tags, target_compatible_with, testonly, visibility)
Hedef koleksiyonuna kolay bir ad vermek için filegroup
kullanın.
Daha sonra bunlara diğer kurallardan referans verilebilir.
Dizinlere doğrudan referans vermek yerine filegroup
kullanılması önerilir.
Derleme sistemi tüm dosyalar hakkında tam bilgiye sahip olmadığından ikincisi sessizdir
olduğundan, bu dosyalar değiştiğinde yeniden oluşturulmayabilir. Şununla birleştirildiğinde:
glob, filegroup
tüm dosyaların
açıkça bilinen URL'leri içerir.
Örnekler
İki kaynak dosyadan oluşan bir filegroup
oluşturmak için
filegroup( name = "mygroup", srcs = [ "a_file.txt", "some/subdirectory/another_file.txt", ], )
Veya bir test verisi dizini oluşturmak için bir glob
kullanın:
filegroup( name = "exported_testdata", srcs = glob([ "testdata/*.dat", "testdata/logs/**/*.log", ]), )
Bu tanımlardan yararlanmak için filegroup
öğesine herhangi bir kuraldan etiket ekleyin:
cc_library( name = "my_library", srcs = ["foo.cc"], data = [ "//my_package:exported_testdata", "//my_package:mygroup", ], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
srcs
|
Bir glob ifadesinin sonucu genellikle
|
data
|
|
output_group
|
Bir "çıktı grubu" bir hedefin çıktı yapılarının kategorisidir; nasıl uygulayacağımızı göreceğiz. |
Genquery
genquery(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, expression, features, licenses, opts, restricted_to, scope, strict, tags, target_compatible_with, testonly, visibility)
genquery()
,
Blaze sorgu dili ve sonucu dökümler
bir dosyaya koyabilirsiniz.
Derlemenin tutarlılığını sağlamak için sorgunun yalnızca
scope
hükümlerinde belirtilen hedeflerin geçişli olarak kapatılması
özelliğini gönderin. Bu kuralı ihlal eden sorgular yürütme sırasında şu durumlarda başarısız olur:
strict
belirtilmemiş veya doğru (strict
yanlışsa,
kapsam dışı hedefler bir uyarıyla atlanır). İlgili içeriği oluşturmak için kullanılan
bunun olmamasını sağlamanın en kolay yolu, aynı etiketlerden bahsetmektir.
sorgu ifadesinde olduğu gibidir.
Burada ve komutta izin verilen sorgular arasındaki tek fark
satırı, joker karakter hedefleme özelliklerini içeren sorgular (ör.
//pkg:*
veya //pkg:all
) burada kullanılamaz.
Bunun iki nedeni vardır: Birincisi, çünkü genquery
bir sorgu kullanabilirsiniz. ve ikinci olarak, BUILD
dosya
joker karakter bağımlılıklarını desteklemez (ör. deps=["//a/..."]
izin verilmez).
Genquery çıkışı, --order_output=full
kullanılarak sıralanır.
deterministik çıktıları uygulamaya koymalısınız.
Çıkış dosyasının adı kuralın adıdır.
Örnekler
Bu örnekte, belirtilen hedefi bir dosyaya yükleyebilirsiniz.
genquery( name = "kiwi-deps", expression = "deps(//kiwi:kiwi_lib)", scope = ["//kiwi:kiwi_lib"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
expression
|
a/BUILD dosyasındaki bu özellikte bulunan :b etiketi,
hedef //:b .
|
opts
|
bazel query öğesine geçirilebilecek seçenekler. Bazı sorgu seçeneklerine izin verilmiyor
burada: --keep_going , --query_file , --universe_scope ,
--order_results ve --order_output . Burada belirtilmeyen seçenekler
, bazel query komut satırındaki gibi varsayılan değerlerine sahip olur.
|
scope
|
|
strict
|
|
Genrule
genrule(name, srcs, outs, cmd, cmd_bash, cmd_bat, cmd_ps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exec_tools, executable, features, licenses, local, message, output_licenses, output_to_bindir, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)
genrule
, kullanıcı tanımlı Bash komutunu kullanarak bir veya daha fazla dosya oluşturur.
Genrule, görev için belirli bir kural yoksa kullanabileceğiniz genel derleme kurallarıdır.
Örneğin, Bash tek satırlık bir hazırlayabilirsiniz. Ancak C++ dosyalarını derlemeniz gerekiyorsa
yerine mevcut cc_*
kuralları uygulanır, çünkü
sizin için.
Testleri çalıştırmak için genrule kullanmayın. Test ve test için özel dağıtımlar vardır
diğer sonuçları da alabilirsiniz. Genellikle testlerin çalıştırılması gerekir
hedef mimari üzerinde çalışmaya devam eder. Genrule ise yürütülürken
üzerine konuşacağız (ikisi farklı olabilir). Genel bir amaca ihtiyacınız varsa
test kuralı için sh_test
kullanın.
Çapraz derlemede dikkat edilmesi gereken noktalar
Aşağıdakilerle ilgili daha fazla bilgi için kullanıcı kılavuzuna bakın: bir video hazırladı.
Genrules derleme sırasında çalışırken, çıkışları genellikle derlemeden sonra, dağıtım veya teşvik etmek anlamına gelir. Mikrodenetleyici için C kodu derleme örneğini düşünün: Derleyici, C kodunu kabul eder kaynak dosyalarını kullanır ve mikrodenetleyicide çalışan kod oluşturur. Oluşturulan kod açık bir şekilde oluşturmak için kullanılan CPU'da, ancak C derleyicisinde (kaynaktan derlendiyse) çalıştırılamaz sahip olması gerekir.
Derleme sistemi, derlemenin üzerinde çalıştığı makineleri tanımlamak için ana makine yapılandırmasını kullanır ve derleme çıkışının oluşturulduğu makineleri açıklayan hedef yapılandırma çalışması gerekiyordu. Her birini yapılandırma seçenekleri sunar ve çakışmaları önlemek için ilgili dosyaları ayrı dizinlere yerleştirin.
Genrule'lar için derleme sistemi, bağımlılıkların uygun şekilde oluşturulmasını sağlar:
srcs
, (gerekirse) hedef yapılandırması için oluşturulur,
tools
, ana makine yapılandırması için oluşturulmuştur ve çıkış şu şekilde kabul edilir:
target yapılandırması için olduğundan emin olun. Ayrıca
"Yap" değişkenlerini ilgili araçlara geçirebilir.
Genrule, kasıtlı olarak hiçbir deps
özelliği tanımlamaz: Diğer yerleşik kurallar,
otomatik olarak nasıl yapılacağını belirlemek için kurallar arasında iletilen dile bağlı meta bilgiler
ancak bu düzeyde otomasyon genel kurallar için mümkün değildir. Genrules çalışmaları
tamamen dosya ve Runfiles düzeyinde olur.
Özel Durumlar
Ana makine-ana makine derlemesi: Bazı durumlarda derleme sisteminin,
çıkışı da derleme sırasında yürütülebilir. Örneğin bir genrule, özel derleyici oluşturuyorsa
sonra başka bir gen kural da kullanılırsa, ilkinin çıktısını
ana makine yapılandırmasıdır. Çünkü derleyici, diğer genel kuralda bu aşamada çalışır. Böyle durumlarda
derleme sistemi doğru şeyi otomatik olarak yapar: srcs
ve sonraki
Ana makine yapılandırması için hedef yerine ilk genel kuralın outs
kadarı
yapılandırma. Daha fazla bilgi için kullanım kılavuzuna bakın
bilgisi.
JDK ve C++ Araçları: JDK'dan veya C++ derleyici paketinden bir araç kullanmak için derleme sistemi, kullanılabilecek bir dizi değişken sağlar. "Marka" bölümüne bakın değişkeni bolca fırsat sunuyor.
Genel ortam
Genrule komutu, bir komut çalıştırıldığında başarısız olacak şekilde yapılandırılan bir Bash kabuğu tarafından yürütülür
veya ardışık düzenin başarısız olması durumunda set -e -o pipefail
.
Derleme aracı, Bash komutunu
yalnızca PATH
, PWD
,
TMPDIR
ve birkaç tane daha.
Derlemelerin tekrar oluşturulabilir olmasını sağlamak için kullanıcının kabuğunda tanımlanan çoğu değişken
ortamın genrule komutuna geçirilmemesini sağlar. Ancak, Bazel (
Blaze), kullanıcının PATH
ortam değişkeninin değerini geçirir.
PATH
değerinde yapılan herhangi bir değişiklik, Bazel'in komutu yeniden yürütmesine neden olur.
yardımcı oluyorum.
Bir genrule komutu, şu işlemler dışında ağa erişmemelidir: komutun alt öğelerini içerir (ancak bu şu anda zorunlu değildir).
Derleme sistemi mevcut çıkış dosyalarını otomatik olarak siler, ancak gerekli üst öğeleri dizinleri kontrol eder. Ayrıca, hata durumunda çıkış dosyalarını da kaldırır.
Genel Tavsiye
- Bir genel kural tarafından çalıştırılan araçların deterministik ve hermetik olduğundan emin olun. Proje yöneticisinin zaman damgaları kullanabilir ve kümeler ve haritalar için sabit bir sıralamanın yanı sıra, çıkışa yalnızca göreli dosya yollarını yazar, mutlak yollar içermez. Bu kurala uyulmaması, beklenmedik yapı davranışına yol açabilir (Bazel'in beklediğiniz bir kuralı yeniden oluşturmaması) ve önbellek performansını düşürür.
$(location)
öğesini çıkışlar, araçlar ve kaynaklar için yoğun bir şekilde kullanın. Nedeni: çıkış dosyalarının farklı yapılandırmalar için ayrılması, genrule'lar sabit kodlu uygulamalara ve/veya mutlak yollardır.- Aynı veya çok benzer genelerlerin kullanılması ihtimaline karşı ortak bir Starlark makrosu yazın birden çok yer olduğunu görebilirsiniz. Genel kural karmaşıksa bir senaryoda veya bir Starlark kuralı. Bu sayede okunabilirliği ve test edilebilirliği iyileştirebilirsiniz.
- Çıkış kodunun, kuralın başarılı veya başarısız olduğunu doğru şekilde gösterdiğinden emin olun.
- stdout veya stderr'e bilgilendirme amaçlı iletiler yazmayın. Bu, hata ayıklama için kullanışlı olsa da kolayca gürültüye dönüşebilir. başarılı bir genel kuralın sessiz olması gerekir. Diğer yandan, başarısız bir genel iyi hata mesajları vermelidir.
$$
evaluates to a$
, a literal dollar-sign, so in order to invoke a shell command containing dollar-signs such asls $(dirname $x)
, one must escape it thus:ls $$(dirname $$x)
.- Sembol bağlantılar ve dizinler oluşturmaktan kaçının. Bazel, dizin/sembol bağlantıyı kopyalamaz genrules tarafından oluşturulan yapı ve dizinler için bağımlılık kontrolü sağlam değil.
- Diğer kurallarda genel kurala referans verirken genel kuralın etiketini veya
ayrı ayrı çıkış dosyalarının etiketlerini tanımlar. Bazen tek bir yaklaşım daha okunabilir, bazen
other: Bir tüketici kuralının
srcs
öğesinde çıkışlara ada göre referansta bulunmak önlenir. istemeden genrule ilgili diğer çıkışları toplamak birçok çıktı üretir.
Örnekler
Bu örnek, foo.h
oluşturur. Hiç kaynak yok çünkü komut,
herhangi bir giriş. "İkili" tarafından çalıştırılan bir perl komut dosyası, genrule ile aynı pakettedir.
genrule( name = "foo", srcs = [], outs = ["foo.h"], cmd = "./$(location create_foo.pl) > \"$@\"", tools = ["create_foo.pl"], )
Aşağıdaki örnekte, filegroup
özelliğinin nasıl kullanılacağı gösterilmektedir
ve başka bir genrule
öğesinin çıktıları. Bunun yerine $(SRCS)
kullanıldığında
açık $(location)
yönergesi de kullanılabilir; bu örnekte ikincisi
bir şablondur.
genrule( name = "concat_all_files", srcs = [ "//some:files", # a filegroup with multiple files in it ==> $(locations) "//other:gen", # a genrule with a single output ==> $(location) ], outs = ["concatenated.txt"], cmd = "cat $(locations //some:files) $(location //other:gen) > $@", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. Bu kurala Başka bir BUILD dokümanın srcs veya deps bölümü
kurallar. Kural, kaynak dosyalar oluşturuyorsa
srcs özelliği için de kullanılmaktadır.
|
srcs
|
Bu özellik,
Derleme sistemi, genrule çalıştırmadan önce bu ön koşulların derlenmesini sağlar
komut; orijinal derleme isteğiyle aynı yapılandırma kullanılarak oluşturulurlar. İlgili içeriği oluşturmak için kullanılan
bu önkoşullara ilişkin dosyaların adları, komutta
|
outs
|
Çıkış dosyaları, paket sınırlarını geçmemelidir. Çıkış dosya adları pakete göre yorumlanır.
Genrule komutunun her çıkış dosyasını önceden belirlenmiş bir konumda oluşturması beklenir.
Konum, |
cmd
|
$(location)
ve "Yap" hükümlerine tabidir değişkeni değiştirmeyin.
cmd_bash , cmd_ps ve cmd_bat ,
(hiçbiri geçerli değilse)
Komut satırı uzunluğu, platform sınırını (Linux/macOS'te 64K, Windows'da 8K) aşıyorsa
sonra genrule, komutu bir komut dosyasına yazar ve sorunu çözmek için o komut dosyasını yürütür. Bu
tüm cmd özellikleri ( |
cmd_bash
|
Bu özelliğin önceliği, |
cmd_bat
|
Bu özelliğin önceliği,
|
cmd_ps
|
Bu özelliğin önceliği
Powershell'in kullanımını kolaylaştırmak ve hataya daha az açık hale getirmek için aşağıdaki komutu çalıştırıyoruz genrule öğesinde Powershell komutunu yürütmeden önce ortamı ayarlama
|
exec_tools
|
tools özelliği (bu bağımlılıklar hariç)
ana makine yapılandırması yerine kuralın yürütme platformu için yapılandırılır.
Yani exec_tools içindeki bağımlılıklar aynı
sınırlamalarını, tools bağımlılıkları olarak değerlendiriyoruz. Özellikle, abonelik veya kontrol gibi
ana makine yapılandırmasını kendi geçişli bağımlılıkları için kullanıyor. Görüntüleyin
Daha fazla bilgi için tools .
Blaze ekibi, tüm |
executable
|
Bu işareti True (Doğru) değerine ayarlamak, çıktının yürütülebilir bir dosya olduğu ve
Oluşturulan yürütülebilir dosya için veri bağımlılıklarının tanımlanması desteklenmiyor. |
local
|
Doğru değerine ayarlanırsa bu seçenek,
Bu, "yerel" sağlamaya eşdeğerdir etiket olarak ( |
message
|
Bu derleme adımı yürütüldüğünde yazdırılacak bir ilerleme mesajı. Varsayılan olarak
"Çıkış oluşturuluyor" mesajı (ya da eşit derecede yamsız) bir şeyler
tercih edebilirsiniz. |
output_licenses
|
common attributes
|
output_to_bindir
|
Doğru değerine ayarlanırsa bu seçenek çıkış dosyalarının |
tools
|
Derleme sistemi, genrule komutunu çalıştırmadan önce bu ön koşulların derlenmesini sağlar;
ana makine kullanılarak oluşturulurlar
yapılandırma dâhildir. Bir
tek
|
test_suite
test_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, tests, visibility)
test_suite
, "faydalı" olarak kabul edilen bir dizi testi tanımlar ne kadar önemli olduğunu gördük. Bu
projelerin test setlerini tanımlamasına olanak tanır. Örneğin, "testler", "bizim
ve ekibin stresini
ölçmenizi sağlıyor" "tüm küçük testler" olabilir. blaze test
komutu bu sıralamaya uyar
kuruluşun: blaze test //some/test:suite
gibi bir çağrı için önce Blaze
//some/test:suite
hedefi tarafından geçişli olarak dahil edilen tüm test hedeflerini numaralandırır (
çağrısına "test_suite genişletmesi" yazın. Ardından Blaze, bu hedefleri oluşturup test eder.
Örnekler
Mevcut paketteki tüm küçük testleri çalıştıracak bir test paketi.
test_suite( name = "small_tests", tags = ["small"], )
Belirli bir test grubunu çalıştıran bir test paketi:
test_suite( name = "smoke_tests", tests = [ "system_unittest", "public_api_unittest", ], )
Mevcut pakette stabil olmayan tüm testleri çalıştırmak için kullanılan bir test paketi.
test_suite( name = "non_flaky_test", tags = ["-flaky"], )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Bu hedef için benzersiz bir ad. |
tags
|
"-" ile başlayan etiketler negatif etiket olarak kabul edilir. İlgili içeriği oluşturmak için kullanılan önce "-" karakteri, etiketin bir parçası olarak kabul edilmediğinden paket etiketi "-küçük" bir testin "small" ile eşleşir seçin. Diğer tüm etiketler dikkate alınır pozitif etiketlerdir. İsteğe bağlı olarak, pozitif etiketleri daha açık hale getirmek için etiketler "+" karakteri olacaktır. Bu karakter, etiket metninin parçası olarak değerlendirilmez. Google yalnızca olumlu ve olumsuz ayrımların daha kolay okunmasını sağlıyor. Yalnızca pozitif etiketlerin tümüyle ve negatiflerin hiçbiri ile eşleşen kuralları test edin etiketleri test paketine dahil edilir. Bunun, hata kontrolünün başarısız olacağı filtrelenen testlerdeki bağımlılıklar atlanır. ve atlanan bağımlılıkları testlerin yine de yasal olması (ör. görünürlük kısıtlamaları nedeniyle engellenmemesi) gerekir.
Bir testin
Birlikte kullanılamayan etiketlere sahip testleri içeren bir |
tests
|
Dilinden bağımsız olarak burada tüm
|