เมธอดส่วนกลางที่ใช้ได้ในไฟล์ .bzl ทั้งหมด
สมาชิก
- analysis_test_transition
- มุม
- configuration_field
- depset
- exec_group
- module_extension
- ผู้ให้บริการ
- repository_rule
- กฎ
- เลือก
- กฎย่อย
- tag_class
- การเปิดเผย
analysis_test_transition
transition analysis_test_transition(settings)
สร้างการเปลี่ยนการกำหนดค่าที่จะนำไปใช้กับการอ้างอิงของกฎการทดสอบการวิเคราะห์ การเปลี่ยนนี้ใช้ได้กับแอตทริบิวต์ของกฎที่มี analysis_test = True
เท่านั้น กฎดังกล่าวมีข้อจำกัดในเรื่องความสามารถ (เช่น ขนาดของแผนผังทรัพยากร Dependency มีจำกัด) การเปลี่ยนที่สร้างขึ้นโดยใช้ฟังก์ชันนี้จึงถูกจำกัดในขอบเขตที่เป็นไปได้เมื่อเทียบกับการเปลี่ยนที่สร้างโดยใช้ transition()
ฟังก์ชันนี้ออกแบบมาเพื่อช่วยอำนวยความสะดวกในไลบรารีหลักของเฟรมเวิร์กการทดสอบการวิเคราะห์เป็นหลัก ดูแนวทางปฏิบัติแนะนำในเอกสาร (หรือการใช้งาน)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
settings
|
ต้องระบุ พจนานุกรมที่มีข้อมูลเกี่ยวกับการตั้งค่า ซึ่งควรตั้งค่าโดยการเปลี่ยนการกำหนดค่านี้ คีย์คือการสร้างป้ายกำกับการตั้งค่า และค่าต่างๆ เป็นค่าใหม่หลังการเปลี่ยน การตั้งค่าอื่นๆ ทั้งหมดจะไม่เปลี่ยนแปลง ใช้คำสั่งนี้เพื่อประกาศการตั้งค่าที่กำหนดซึ่งการทดสอบการวิเคราะห์จำเป็นต้องมีการตั้งค่าเพื่อให้ผ่าน |
เฉพาะด้าน
Aspect aspect(implementation, attr_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])สร้างมุมมองใหม่ ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในค่าร่วม โปรดดูรายละเอียดเพิ่มเติมในข้อมูลเบื้องต้นเกี่ยวกับ Aspects
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
ต้องระบุ ฟังก์ชัน Starlark ที่ใช้งานลักษณะนี้โดยมีพารามิเตอร์ 2 ตัว ได้แก่ กำหนดเป้าหมาย (เป้าหมายที่ใช้ลักษณะนี้) และ ctx (บริบทของกฎที่ใช้สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายจะแสดงผ่านช่อง ctx.rule ฟังก์ชันนี้จะได้รับการประเมินในช่วงการวิเคราะห์สำหรับการใช้งานแต่ละครั้งกับเป้าหมาย
|
attr_aspects
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการชื่อแอตทริบิวต์ ส่วนจะแผ่กระจายไปตามทรัพยากร Dependency ที่ระบุในแอตทริบิวต์ของเป้าหมายที่มีชื่อเหล่านี้ ค่าทั่วไปในที่นี้ได้แก่ deps และ exports รายการนี้อาจมีสตริงเดียว "*" เพื่อกระจายไปยังทรัพยากร Dependency ทั้งหมดของเป้าหมายด้วย
|
attrs
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ประกาศแอตทริบิวต์ทั้งหมดของลักษณะ โดยจะแมปจากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ เช่น "attr.label" หรือ "attr.string" (ดูโมดูล attr) แอตทริบิวต์ Aspect พร้อมใช้งานสําหรับฟังก์ชันการใช้งานเป็นช่องของพารามิเตอร์ ctx แอตทริบิวต์โดยนัยที่ขึ้นต้นด้วย แอตทริบิวต์ที่ชัดเจนต้องมีประเภท |
required_providers
|
ค่าเริ่มต้นคือ [] แอตทริบิวต์นี้ช่วยให้ลักษณะจำกัดการนำไปใช้งานเฉพาะกับเป้าหมายที่มีกฎที่โฆษณาผู้ให้บริการที่จำเป็นเท่านั้น ค่าต้องเป็นรายการที่มีผู้ให้บริการแต่ละรายหรือรายชื่อผู้ให้บริการอย่างใดอย่างหนึ่ง ไม่ใช่ทั้ง 2 รายการ ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้องแต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้องระบบจะแปลงรายชื่อผู้ให้บริการที่ไม่ซ้อนกันเป็นรายชื่อที่มีรายชื่อผู้ให้บริการ 1 รายการโดยอัตโนมัติ กล่าวคือ หากต้องการทำให้เป้าหมายกฎบางอย่าง (เช่น |
required_aspect_providers
|
ค่าเริ่มต้นคือ [] แอตทริบิวต์นี้ช่วยให้ลักษณะนี้ตรวจสอบด้านอื่นๆ ได้ ค่าต้องเป็นรายการที่มีผู้ให้บริการแต่ละรายหรือรายชื่อผู้ให้บริการอย่างใดอย่างหนึ่ง ไม่ใช่ทั้ง 2 รายการ ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้องแต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้องระบบจะแปลงรายชื่อผู้ให้บริการที่ไม่ซ้อนกันเป็นรายชื่อที่มีรายชื่อผู้ให้บริการ 1 รายการโดยอัตโนมัติ กล่าวคือ หากต้องการให้ด้านอื่น (เช่น |
provides
|
ค่าเริ่มต้นคือ [] รายชื่อผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดง โดยจะเกิดข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นประเภทผู้ให้บริการที่ระบุไว้ที่นี่ในค่าการแสดงผล แต่ฟังก์ชันการใช้งานอาจแสดงผลผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่ องค์ประกอบแต่ละรายการของรายการเป็นออบเจ็กต์ |
requires
|
sequence ของ Aspect
ค่าเริ่มต้นคือ [] รายการด้านที่ต้องเผยแพร่ก่อนด้านนี้ |
fragments
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการของชื่อของส่วนย่อยการกำหนดค่าที่ด้านต้องการในการกำหนดค่าเป้าหมาย |
host_fragments
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการของชื่อของส่วนย่อยการกำหนดค่าที่ด้านต้องการในการกำหนดค่าโฮสต์ |
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดของ Toolchain ที่กฎนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ คุณจะพบเครื่องมือเชนได้โดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการใช้งานกฎผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
ค่าเริ่มต้นคือ False เลิกใช้งานแล้ว เลิกใช้งานไปแล้วและควรนำออก |
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None คำอธิบายของด้านที่ดึงมาได้ด้วยเครื่องมือสร้างเอกสาร |
apply_to_generating_rules
|
ค่าเริ่มต้นคือ False หากเป็น "จริง" ระบบจะใช้ลักษณะดังกล่าวกับกฎการสร้างของไฟล์เอาต์พุตแทนเมื่อใช้กับไฟล์เอาต์พุต ตัวอย่างเช่น สมมติว่าลักษณะกระจายผ่านแอตทริบิวต์ "deps" และถูกนำไปใช้กับเป้าหมาย "alpha" สมมติว่า "alpha" มี "deps = [":beta_output"]" โดยที่ "beta_output" คือเอาต์พุตที่ประกาศของเป้าหมาย "beta" สมมติว่า "เบต้า" มีเป้าหมายเป็น "ชาร์ลี" เป็นหนึ่งใน "deps" หากเป็น "apply_to_generating_rules=True" สำหรับด้านนี้ มุมมองจะเผยแพร่ผ่าน "อัลฟา" "เบต้า" และ "ชาร์ลี" หากเป็น "เท็จ" มุมมองจะเผยแพร่ไปที่ "อัลฟ่า" เท่านั้น เท็จโดยค่าเริ่มต้น |
exec_compatible_with
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการข้อจำกัดบนแพลตฟอร์มการดำเนินการที่ใช้กับอินสแตนซ์ทั้งหมดของด้านนี้ |
exec_groups
|
dict; หรือ None ;
ค่าเริ่มต้นคือ None คำสั่งของชื่อกลุ่มการดำเนินการ (สตริง) ไปยัง exec_group s หากตั้งค่าไว้ จะอนุญาตให้ส่วนต่างๆ เรียกใช้การดำเนินการในแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มภายในอินสแตนซ์เดียว ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของกลุ่มการดำเนินการ
|
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] ทดลอง: รายการกฎย่อยที่ใช้ในลักษณะนี้ |
configuration_field
LateBoundDefault configuration_field(fragment, name)อ้างอิงค่าเริ่มต้นที่มีขอบเขตล่าช้าสำหรับแอตทริบิวต์ประเภท label ค่าคือ "ขอบเขตล่าช้า" หากจำเป็นต้องมีการกำหนดค่าก่อนที่จะระบุค่า แอตทริบิวต์ที่ใช้ค่านี้เป็นค่าต้องเป็นแบบส่วนตัว
ตัวอย่างการใช้:
การกำหนดแอตทริบิวต์กฎ:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
การเข้าถึงในการใช้งานกฎ:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
fragment
|
ต้องระบุ ชื่อของส่วนย่อยการกำหนดค่าซึ่งมีค่าขอบเขตท้าย |
name
|
ต้องระบุ ชื่อของค่าที่จะได้รับจากส่วนย่อยการกำหนดค่า |
Depset
depset depset(direct=None, order="default", *, transitive=None)สร้าง depset พารามิเตอร์
direct
คือรายการองค์ประกอบโดยตรงของ Depset และพารามิเตอร์ transitive
คือรายการของ Depset ที่มีองค์ประกอบที่กลายเป็นองค์ประกอบโดยอ้อมของ Depset ที่สร้างขึ้น พารามิเตอร์ order
จะระบุลำดับการแสดงผลองค์ประกอบเมื่อแปลงค่า Depset เป็นรายการ ดูข้อมูลเพิ่มเติมในภาพรวมของ Depset
องค์ประกอบทั้งหมด (ทางตรงและทางอ้อม) ของช่วง ต้องเป็นประเภทเดียวกันตามที่นิพจน์ type(x)
ได้รับ
เนื่องจากมีการใช้ชุดตามแฮชเพื่อกำจัดรายการที่ซ้ำระหว่างการทำซ้ำ องค์ประกอบทั้งหมดของ Depset จึงควรแฮชได้ อย่างไรก็ตาม ค่าแปรปรวนนี้ยังไม่ได้รับการตรวจสอบอย่างสอดคล้องกันในตัวสร้างทั้งหมดในขณะนี้ ใช้แฟล็ก --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน นี่คือลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ องค์ประกอบต่างๆ ในปัจจุบันต้องเปลี่ยนแปลงไม่ได้ แม้ว่าการจำกัดนี้จะมีการผ่อนปรนในอนาคต
ลำดับของ Depset ที่สร้างควรเข้ากันได้กับลำดับของ Depset transitive
คำสั่งซื้อ "default"
ใช้ได้กับคำสั่งซื้ออื่นๆ ส่วนคำสั่งซื้ออื่นๆ ทั้งหมดจะใช้งานได้เฉพาะกับคำสั่งซื้อของตัวเองเท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
sequence; หรือ None ;
ค่าเริ่มต้นคือ None รายการเอลิเมนต์ direct ของ Depset |
order
|
ค่าเริ่มต้นคือ "default" กลยุทธ์การส่งผ่านสำหรับ Depset ใหม่ ดูค่าที่เป็นไปได้ที่นี่ |
transitive
|
sequence ของ depset; หรือ None ;
ค่าเริ่มต้นคือ None รายการ Depset ที่มีเอลิเมนต์ที่จะกลายเป็นองค์ประกอบโดยอ้อมของ Depset |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])สร้างกลุ่มการดำเนินการที่ใช้สร้างการดำเนินการสำหรับแพลตฟอร์มการดำเนินการที่เจาะจงระหว่างการใช้กฎได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] ชุด Toolchains ที่กลุ่มการดำเนินการนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ |
exec_compatible_with
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการ |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)สร้างส่วนขยายโมดูลใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้ส่งออกและใช้ในไฟล์ MODULE.bazel ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
ต้องระบุ ฟังก์ชันที่ใช้ส่วนขยายโมดูลนี้ ต้องใช้พารามิเตอร์เดียว module_ctx จะมีการเรียกใช้ฟังก์ชันครั้งเดียวเมื่อเริ่มต้นบิลด์เพื่อระบุชุดที่เก็บที่มีอยู่
|
tag_classes
|
ค่าเริ่มต้นคือ {} พจนานุกรมเพื่อประกาศคลาสของแท็กทั้งหมดที่ส่วนขยายใช้ โดยจะแมปจากชื่อคลาสแท็กกับออบเจ็กต์ tag_class
|
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None คำอธิบายของส่วนขยายโมดูลที่ดึงมาได้ด้วยเครื่องมือสร้างเอกสาร |
environ
|
sequence ของ strings
ค่าเริ่มต้นคือ [] แสดงรายการตัวแปรสภาพแวดล้อมที่ส่วนขยายโมดูลนี้อ้างอิงอยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะประเมินส่วนขยายอีกครั้ง |
os_dependent
|
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายนี้อิงตามระบบปฏิบัติการหรือไม่ |
arch_dependent
|
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายนี้ขึ้นอยู่กับสถาปัตยกรรมหรือไม่ |
provider
unknown provider(doc=None, *, fields=None, init=None)กำหนดสัญลักษณ์ผู้ให้บริการ อาจมีการสร้างอินสแตนซ์ผู้ให้บริการโดยการเรียกใช้หรือใช้เป็นคีย์โดยตรงในการเรียกข้อมูลอินสแตนซ์ของผู้ให้บริการรายนั้นจากเป้าหมาย ตัวอย่าง:
MyInfo = provider() ... def _my_library_impl(ctx): ... my_info = MyInfo(x = 2, y = 3) # my_info.x == 2 # my_info.y == 3 ...
โปรดดูที่กฎ (ผู้ให้บริการ) สำหรับคำแนะนำที่ครอบคลุมเกี่ยวกับวิธีใช้ผู้ให้บริการ
แสดงผลค่าที่เรียกใช้ได้ Provider
หากไม่ได้ระบุ init
หากระบุ init
จะแสดงผล Tuple ที่มี 2 องค์ประกอบ ได้แก่ ค่าที่เรียกใช้ได้ Provider
และค่าที่เรียกใช้ได้ของ raw Constructor โปรดดูรายละเอียดที่หัวข้อ กฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการที่กำหนดเอง) และการสนทนาเกี่ยวกับพารามิเตอร์ init
ด้านล่าง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None รายละเอียดของผู้ให้บริการที่ดึงข้อมูลได้ด้วยเครื่องมือสร้างเอกสาร |
fields
|
sequence ของ strings หรือ dict; หรือ None ;
ค่าเริ่มต้นคือ None หากระบุ จะจำกัดชุดของช่องที่อนุญาต ค่าที่เป็นไปได้มีดังนี้
|
init
|
Callable;
หรือ None ;
ค่าเริ่มต้นคือ None การเรียกกลับแบบไม่บังคับสำหรับการประมวลผลล่วงหน้าและตรวจสอบค่าในช่องของผู้ให้บริการระหว่างการสร้างอินสแตนซ์ หากระบุ init แล้ว provider() จะแสดงผล Tuple ที่มี 2 องค์ประกอบ ได้แก่ สัญลักษณ์ผู้ให้บริการปกติและตัวสร้าง RAWคำอธิบายที่ละเอียดแม่นยำตามมา โปรดดูที่กฎ (การกำหนดค่าเริ่มต้นที่กำหนดเองของผู้ให้บริการ) เพื่อให้การสนทนาและกรณีการใช้งานที่เข้าใจง่าย อนุญาตให้
init การเรียกสัญลักษณ์ P จะทำหน้าที่เป็นการเรียกฟังก์ชันตัวสร้างเริ่มต้น c กล่าวคือ P(*args, **kwargs) จะแสดง c(*args, **kwargs) เช่นMyInfo = provider() m = MyInfo(foo = 1)จะทำให้ m เป็นอินสแตนซ์ MyInfo ที่มี m.foo == 1 อย่างตรงไปตรงมาแต่ในกรณีที่ระบุ
หมายเหตุ: ขั้นตอนข้างต้นกล่าวเป็นนัยว่าเกิดข้อผิดพลาดหาก เมื่อใช้วิธีนี้ การเรียกกลับ เมื่อระบุ MyInfo, _new_myinfo = provider(init = ...) |
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)สร้างกฎที่เก็บใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้โหลดและเรียกใช้งานจากไฟล์ WORKSPACE ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
ต้องระบุ ฟังก์ชันที่ใช้กฎนี้ ต้องมีพารามิเตอร์เดียว repository_ctx จะมีการเรียกฟังก์ชันนี้ในช่วงการโหลดสำหรับกฎแต่ละรายการ
|
attrs
|
dict; หรือ None ;
ค่าเริ่มต้นคือ None สำหรับประกาศแอตทริบิวต์ทั้งหมดของกฎ โดยจะแมปจากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) แอตทริบิวต์ที่ขึ้นต้นด้วย _ เป็นแบบส่วนตัวและใช้เพื่อเพิ่มทรัพยากร Dependency โดยนัยไปยังป้ายกำกับไปยังไฟล์ได้ (กฎที่เก็บต้องไม่อ้างอิงอาร์ติแฟกต์ที่สร้างขึ้น) มีการเพิ่มแอตทริบิวต์ name โดยปริยายและต้องไม่ระบุไว้
|
local
|
ค่าเริ่มต้นคือ False ระบุว่ากฎนี้ดึงข้อมูลทุกอย่างจากระบบภายในและควรมีการประเมินอีกครั้งทุกครั้งที่ดึงข้อมูล |
environ
|
sequence ของ strings
ค่าเริ่มต้นคือ [] แสดงรายการตัวแปรสภาพแวดล้อมที่กฎที่เก็บนี้อ้างอิงอยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะดึงข้อมูลที่เก็บอีกครั้ง |
configure
|
ค่าเริ่มต้นคือ False ระบุว่าที่เก็บจะตรวจสอบระบบเพื่อวัตถุประสงค์ในการกำหนดค่า |
remotable
|
ค่าเริ่มต้นคือ False ทดลอง พารามิเตอร์นี้อยู่ในขั้นทดลองและอาจเปลี่ยนแปลงได้ตลอดเวลา โปรดอย่าพึ่งพา ซึ่งอาจเปิดใช้ในการทดสอบโดยการตั้งค่า ---experimental_repo_remote_exec ใช้งานได้กับการดำเนินการจากระยะไกล |
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None คำอธิบายของกฎที่เก็บที่สามารถดึงข้อมูลโดยเครื่องมือการสร้างเอกสาร |
กฎ
callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])สร้างกฎใหม่ที่สามารถเรียกใช้จากไฟล์ BUILD หรือมาโครเพื่อสร้างเป้าหมาย
ต้องกำหนดกฎให้กับตัวแปรร่วมในไฟล์ .bzl ชื่อของตัวแปรร่วมก็คือชื่อของกฎ
กฎการทดสอบต้องมีชื่อที่ลงท้ายด้วย _test
ขณะที่กฎอื่นๆ ทั้งหมดต้องไม่มีคำต่อท้ายนี้ (ข้อจำกัดนี้มีผลกับกฎเท่านั้น ไม่ใช้กับเป้าหมาย)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
ต้องระบุ ฟังก์ชัน Starlark ที่ใช้กฎนี้ ต้องมีพารามิเตอร์เพียง 1 ตัวเท่านั้น ได้แก่ ctx จะมีการเรียกฟังก์ชันนี้ในช่วงการวิเคราะห์สำหรับแต่ละอินสแตนซ์ของกฎ มีสิทธิ์เข้าถึงแอตทริบิวต์ที่ผู้ใช้ให้ไว้ ต้องสร้างการดำเนินการเพื่อสร้างเอาต์พุตที่ประกาศทั้งหมด |
test
|
bool;
ค่าเริ่มต้นคือ unbound กฎนี้เป็นกฎทดสอบหรือไม่ กล่าวคือ อาจเป็นหัวเรื่องของคำสั่ง blaze test หรือไม่ กฎการทดสอบทั้งหมดจะถือว่าเป็นปฏิบัติการโดยอัตโนมัติ ก็ไม่จำเป็น (และไม่สนับสนุน) ที่จะต้องตั้งค่า executable = True สำหรับกฎทดสอบอย่างชัดแจ้ง ค่าเริ่มต้นคือ False ดูข้อมูลเพิ่มเติมได้ที่ หน้ากฎ
|
attrs
|
dict;
ค่าเริ่มต้นคือ {} สำหรับประกาศแอตทริบิวต์ทั้งหมดของกฎ โดยจะแมปจากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) แอตทริบิวต์ที่ขึ้นต้นด้วย _ เป็นแบบส่วนตัว และใช้เพื่อเพิ่มการขึ้นต่อกันโดยนัยในป้ายกำกับได้ มีการเพิ่มแอตทริบิวต์ name โดยปริยายและต้องไม่ระบุไว้ ระบบจะเพิ่มแอตทริบิวต์ visibility , deprecation , tags , testonly และ features โดยปริยายและลบล้างไม่ได้ กฎส่วนใหญ่ต้องการแอตทริบิวต์เพียงไม่กี่อย่าง หากต้องการจำกัดการใช้งานหน่วยความจำ ฟังก์ชันของกฎจะกำหนดขีดจำกัดขนาดของแอตทริบิวต์
|
outputs
|
dict; หรือ None ; หรือ function
ค่าเริ่มต้นคือ None เลิกใช้งาน พารามิเตอร์นี้เลิกใช้งานแล้วและจะนำออกเร็วๆ นี้ โปรดอย่าพึ่งพา ถูกปิดใช้ด้วย ---incompatible_no_rule_outputs_param ใช้ธงนี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนำออกในเร็วๆ นี้ เลิกใช้งานพารามิเตอร์นี้แล้ว โปรดย้ายข้อมูลกฎเพื่อใช้ OutputGroupInfo หรือ attr.output แทน สคีมาสำหรับกำหนดเอาต์พุตที่ประกาศล่วงหน้า ผู้ใช้ไม่ได้ระบุป้ายกำกับให้ไฟล์เหล่านี้ ซึ่งต่างจากแอตทริบิวต์ ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชัน Callback ที่สร้างพจนานุกรม การเรียกกลับทำงานคล้ายกับแอตทริบิวต์ทรัพยากร Dependency ที่คำนวณแล้ว กล่าวคือ ชื่อพารามิเตอร์ของฟังก์ชันจะมีการจับคู่กับแอตทริบิวต์ของกฎ เช่น หากคุณส่ง แต่ละรายการในพจนานุกรมจะสร้างเอาต์พุตที่ประกาศไว้ล่วงหน้าโดยที่คีย์เป็นตัวระบุ และค่าคือเทมเพลตสตริงที่กำหนดป้ายกำกับของเอาต์พุตนั้น ในฟังก์ชันการใช้งานของกฎ ตัวระบุจะกลายเป็นชื่อช่องที่ใช้เข้าถึง
ในทางปฏิบัติ ตัวยึดตำแหน่งที่ใช้แทนที่ใช้กันมากที่สุดคือ |
executable
|
bool;
ค่าเริ่มต้นคือ unbound กฎนี้ถือว่าเป็นไฟล์ปฏิบัติการหรือไม่ กล่าวคือ อาจเป็นหัวเรื่องของคำสั่ง blaze run หรือไม่ โดยมีค่าเริ่มต้นเป็น False ดูข้อมูลเพิ่มเติมได้ที่ หน้ากฎ
|
output_to_genfiles
|
ค่าเริ่มต้นคือ False หากเป็นจริง ระบบจะสร้างไฟล์ในไดเรกทอรี genfiles แทนไดเรกทอรี bin โปรดอย่าตั้งค่าแฟล็กนี้ ยกเว้นในกรณีที่คุณต้องการใช้เพื่อความเข้ากันได้กับกฎที่มีอยู่ (เช่น เมื่อสร้างไฟล์ส่วนหัวสำหรับ C++) |
fragments
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการของชื่อของส่วนย่อยการกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าเป้าหมาย |
host_fragments
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการของชื่อของส่วนย่อยการกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าโฮสต์ |
_skylark_testable
|
ค่าเริ่มต้นคือ False (ทดลอง) หากเป็นจริง กฎนี้จะแสดงการดำเนินการสำหรับการตรวจสอบตามกฎที่ขึ้นอยู่กับผู้ให้บริการ Actions นอกจากนี้ ผู้ให้บริการยังใช้งานกฎได้โดยเรียกใช้ ctx.created_actions()ซึ่งควรใช้เพื่อทดสอบลักษณะการทํางานเวลาวิเคราะห์ของกฎ Starlark เท่านั้น ระบบอาจนำธงนี้ออกในอนาคต |
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดของ Toolchain ที่กฎนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ คุณจะพบเครื่องมือเชนได้โดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการใช้งานกฎผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
ค่าเริ่มต้นคือ False เลิกใช้งานแล้ว เลิกใช้งานไปแล้วและควรนำออก |
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None คำอธิบายของกฎที่ดึงมาได้ด้วยเครื่องมือสร้างเอกสาร |
provides
|
ค่าเริ่มต้นคือ [] รายชื่อผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดง โดยจะเกิดข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นประเภทผู้ให้บริการที่ระบุไว้ที่นี่ในค่าการแสดงผล แต่ฟังก์ชันการใช้งานอาจแสดงผลผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่ องค์ประกอบแต่ละรายการของรายการเป็นออบเจ็กต์ |
exec_compatible_with
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับเป้าหมายทั้งหมดของกฎประเภทนี้ |
analysis_test
|
ค่าเริ่มต้นคือ False หากจริง ระบบจะถือว่ากฎนี้เป็นการทดสอบการวิเคราะห์ หมายเหตุ: กฎการทดสอบการวิเคราะห์กำหนดโดยใช้โครงสร้างพื้นฐานที่มีอยู่ในไลบรารี Starlark หลักเป็นหลัก ดูแนวทางได้ที่การทดสอบ หากกฎกำหนดเป็นกฎการทดสอบการวิเคราะห์ กฎดังกล่าวจะได้รับอนุญาตให้ใช้การเปลี่ยนการกำหนดค่าที่กำหนดไว้โดยใช้ analysis_test_transition ในแอตทริบิวต์ แต่เลือกใช้ข้อจำกัดบางอย่างดังนี้
|
build_setting
|
BuildSetting; หรือ None ;
ค่าเริ่มต้นคือ None หากตั้งค่าไว้ ให้อธิบายว่ากฎ build setting นี้เป็นประเภทใด ดูโมดูล config หากตั้งค่าไว้ แอตทริบิวต์ที่จำเป็นซึ่งมีชื่อว่า "build_setting_default" จะเพิ่มในกฎนี้โดยอัตโนมัติ โดยมีประเภทที่สอดคล้องกับค่าที่ป้อนที่นี่
|
cfg
|
ค่าเริ่มต้นคือ None หากตั้งค่าไว้ จะชี้ไปยังการเปลี่ยนการกำหนดค่าที่กฎจะมีผลกับการกำหนดค่าของตนเองก่อนการวิเคราะห์ |
exec_groups
|
dict; หรือ None ;
ค่าเริ่มต้นคือ None คำสั่งของชื่อกลุ่มการดำเนินการ (สตริง) ไปยัง exec_group s หากตั้งค่าไว้ จะอนุญาตให้กฎเรียกใช้การดำเนินการในแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มภายในเป้าหมายเดียว ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของกลุ่มการดำเนินการ
|
initializer
|
ค่าเริ่มต้นคือ None ทดลอง: ฟังก์ชัน Stalark จะเริ่มต้นทำงานตามแอตทริบิวต์ของกฎ จะมีการเรียกใช้ฟังก์ชันนี้เมื่อโหลดสำหรับกฎแต่ละอินสแตนซ์ โดยจะเรียกใช้ด้วยค่าของแอตทริบิวต์สาธารณะที่กำหนดโดยกฎ (ไม่ใช่กับแอตทริบิวต์ทั่วไป เช่น โดยจะต้องแสดงผลพจนานุกรมจากชื่อแอตทริบิวต์เป็นค่าที่ต้องการ แอตทริบิวต์ที่ไม่ได้ส่งคืนจะไม่ได้รับผลกระทบ การแสดงผล ตัวกำหนดค่าเริ่มต้นจะได้รับการประเมินก่อนค่าเริ่มต้นที่ระบุในคำจำกัดความของแอตทริบิวต์ ดังนั้น หากพารามิเตอร์ในลายเซ็นของเริ่มต้นมีค่าเริ่มต้น พารามิเตอร์นี้จะเขียนทับค่าเริ่มต้นจากคําจํากัดความของแอตทริบิวต์ (ยกเว้นในกรณีที่แสดงผล ในทำนองเดียวกัน หากพารามิเตอร์ในลายเซ็นของเริ่มต้นไม่มีค่าเริ่มต้น พารามิเตอร์จะกลายเป็นแบบบังคับ ในกรณีเช่นนี้ คุณควรละเว้นการตั้งค่าเริ่มต้น/บังคับในคำจำกัดความของแอตทริบิวต์ เราขอแนะนำให้ใช้ ในกรณีที่มีกฎเพิ่มเติม เงื่อนไขเริ่มต้นทั้งหมดจะเรียกว่า ดำเนินการต่อจากระดับย่อยไปยังระดับบน เงื่อนไขเริ่มต้นแต่ละรายการจะส่งเฉพาะแอตทริบิวต์สาธารณะที่รู้จักเท่านั้น |
parent
|
ค่าเริ่มต้นคือ None ทดลอง: กฎ Stalark ที่จะขยายออกไป เมื่อตั้งค่าแอตทริบิวต์สาธารณะ แอตทริบิวต์สาธารณะจะรวมเข้าด้วยกันกับผู้ให้บริการที่โฆษณา กฎตรงกับ executable และ test จากระดับบนสุด รวมค่าของ fragments , toolchains , exec_compatible_with และ exec_groups คุณอาจไม่ได้ตั้งค่าพารามิเตอร์เดิมหรือที่เลิกใช้งานแล้ว การเปลี่ยนการกำหนดค่าที่เข้ามาใหม่ cfg ของระดับบนสุดจะมีผลหลังจากการกำหนดค่าขาเข้าของกฎนี้
|
extendable
|
bool; หรือ ป้ายกำกับ หรือ string หรือ None ;
ค่าเริ่มต้นคือ None ทดลอง: ป้ายกำกับของรายการที่อนุญาตซึ่งระบุว่ากฎใดจะขยายกฎนี้ได้ และยังตั้งค่าเป็น "จริง/เท็จ" เพื่ออนุญาต/ไม่อนุญาตให้ขยายเสมอได้อีกด้วย โดยค่าเริ่มต้น Bazel จะอนุญาตส่วนขยายเสมอ |
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] ทดลอง: รายการกฎย่อยที่กฎนี้ใช้ |
เลือก
unknown select(x, no_match_error='')
select()
คือฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์กฎ configurable ได้ ดูรายละเอียดได้ที่สารานุกรมสร้าง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
ต้องระบุ คำสั่งที่แมปเงื่อนไขการกำหนดค่ากับค่า แต่ละคีย์คือ Label หรือสตริงป้ายกํากับที่ระบุอินสแตนซ์ config_setting หรือrestrict_value ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูว่าเมื่อใดควรใช้ป้ายกำกับแทนสตริง |
no_match_error
|
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กำหนดเองที่ไม่บังคับที่จะรายงานหากไม่มีเงื่อนไขที่ตรงกัน |
กฎย่อย
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])สร้างอินสแตนซ์ใหม่ของกฎย่อย ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในตัวแปรร่วมก่อนจึงจะใช้งานได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
ต้องระบุ ฟังก์ชัน Starlark ที่นำกฎย่อยนี้ไปใช้ |
attrs
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมสำหรับประกาศแอตทริบิวต์ (ส่วนตัว) ทั้งหมดของกฎย่อย กฎย่อยจะมีได้เฉพาะแอตทริบิวต์ส่วนตัวที่เป็นประเภทป้ายกำกับ (ได้แก่ ป้ายกำกับหรือรายการป้ายกำกับ) Bazel ส่งต่อค่าที่ได้ซึ่งสอดคล้องกับป้ายกำกับเหล่านี้ไปยังฟังก์ชันการใช้งานของกฎย่อยเป็นอาร์กิวเมนต์ที่มีชื่อโดยอัตโนมัติ (ดังนั้นฟังก์ชันการใช้งานจึงต้องยอมรับพารามิเตอร์ที่มีชื่อซึ่งตรงกับชื่อแอตทริบิวต์) ประเภทของค่าเหล่านี้ได้แก่
|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดของ Toolchain ของกฎย่อยนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ คุณจะพบเครื่องมือเชนโดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการใช้งานกฎย่อยผ่าน ctx.toolchains
|
fragments
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการของชื่อของส่วนย่อยการกำหนดค่าที่กฎย่อยต้องใช้ในการกำหนดค่าเป้าหมาย |
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] รายการกฎย่อยอื่นๆ ที่จำเป็นสำหรับกฎย่อยนี้ |
tag_class
tag_class tag_class(attrs={}, *, doc=None)สร้างออบเจ็กต์ tag_class ใหม่ซึ่งกำหนดสคีมาแอตทริบิวต์สำหรับคลาสแท็ก ซึ่งเป็นออบเจ็กต์ข้อมูลที่ส่วนขยายโมดูลใช้ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
attrs
|
ค่าเริ่มต้นคือ {} พจนานุกรมสำหรับประกาศแอตทริบิวต์ทั้งหมดของคลาสแท็กนี้ โดยจะแมปจากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) |
doc
|
string; หรือ None ;
ค่าเริ่มต้นคือ None คำอธิบายของคลาสแท็กที่ดึงมาได้ด้วยเครื่องมือสร้างเอกสาร |
การเปิดเผย
None
visibility(value)
ตั้งค่าการแสดงการโหลดของโมดูล .bzl ที่กำลังเริ่มต้น
ระดับการมองเห็นโหลดของโมดูลจะเป็นตัวกำหนดว่าไฟล์ BUILD และ .bzl อื่นๆ จะสามารถโหลดได้หรือไม่ (ซึ่งแตกต่างจากการเปิดเผยเป้าหมายของไฟล์ต้นฉบับ .bzl ที่เกี่ยวข้อง ซึ่งควบคุมว่าไฟล์ดังกล่าวอาจปรากฏเป็นทรัพยากร Dependency ของเป้าหมายอื่นๆ หรือไม่) ระดับการเข้าถึงการโหลดจะทำงานในระดับแพ็กเกจ: หากต้องการโหลดโมดูล ไฟล์ที่โหลดต้องอยู่ในแพ็กเกจที่ให้สิทธิ์ระดับการเข้าถึงโมดูล คุณสามารถโหลดโมดูลภายในแพ็กเกจของตนเองได้เสมอ โดยไม่คำนึงถึงระดับการมองเห็น
สามารถเรียก visibility()
ได้เพียงครั้งเดียวต่อไฟล์ .bzl และจะเรียกที่ระดับบนสุดเท่านั้น ไม่ใช่ภายในฟังก์ชัน รูปแบบที่แนะนำคือให้เรียกนี้ด้านล่างคำสั่ง load()
และตรรกะสั้นๆ ที่จำเป็นในการกำหนดอาร์กิวเมนต์
หากตั้งค่าการทำเครื่องหมาย --check_bzl_visibility
เป็น "เท็จ" การละเมิดระดับการมองเห็นโหลดจะแสดงคำเตือน แต่ไม่ทำให้บิลด์ล้มเหลว
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
value
|
ต้องระบุ รายการสตริงข้อกำหนดแพ็กเกจหรือสตริงข้อกำหนดแพ็กเกจเดียว ข้อกำหนดเฉพาะของแพ็กเกจมีรูปแบบเดียวกับ
สัญลักษณ์ "@" ไม่อนุญาตให้ใช้ไวยากรณ์ ระบบจะตีความข้อกำหนดทั้งหมดโดยสัมพันธ์กับที่เก็บของโมดูลปัจจุบัน หาก โปรดทราบว่าแฟล็ก |