สมาชิก
- analysis_test_transition
- มุมมอง
- configuration_field
- depset
- exec_group
- module_extension
- ผู้ให้บริการ
- repository_rule
- กฎ
- เลือก
- กฎย่อย
- tag_class
- การเปิดเผย
analysis_test_transition
transition analysis_test_transition(settings)
สร้างการเปลี่ยนการกำหนดค่าเพื่อใช้กับทรัพยากร Dependency ของกฎการวิเคราะห์-การทดสอบ การเปลี่ยนนี้ใช้ได้กับแอตทริบิวต์ของกฎที่มี 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=[])สร้างมุมมองใหม่ ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในค่าส่วนกลาง โปรดดูรายละเอียดเพิ่มเติมในข้อมูลเบื้องต้นเกี่ยวกับมุมมอง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
ต้องระบุ ฟังก์ชัน Starlark ที่นำองค์ประกอบนี้ไปใช้โดยมีพารามิเตอร์ 2 ตัว ได้แก่ เป้าหมาย (เป้าหมายที่ใช้ด้านที่ระบุ) และ ctx (บริบทของกฎที่ใช้สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายมีให้ใช้งานผ่านช่อง ctx.rule ฟังก์ชันนี้จะได้รับการประเมินในระหว่างช่วงการวิเคราะห์สำหรับการใช้แต่ละแง่มุมกับเป้าหมาย
|
attr_aspects
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการชื่อแอตทริบิวต์ ลักษณะเผยแพร่ไปพร้อมกับทรัพยากร 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
|
ลำดับของมุมมอง ค่าเริ่มต้นคือ [] รายการด้านที่ต้องมีการเผยแพร่ก่อนส่วนนี้ |
fragments
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] รายการชื่อส่วนย่อยของการกำหนดค่าที่ด้านนี้ต้องใช้ในการกำหนดค่าเป้าหมาย |
host_fragments
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการชื่อของส่วนย่อยการกำหนดค่าที่ด้านนี้ต้องใช้ในการกำหนดค่าโฮสต์ |
toolchains
|
ลำดับ
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดเครื่องมือที่กฎนี้ต้องใช้ รายการนี้อาจมีออบเจ็กต์ 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" สมมติว่า "beta" มีการเผยแพร่เป้าหมาย "beta" มีการเผยแพร่ "charlie" เป็นเป้าหมายหนึ่งและมีการใช้ "alpha_additional" เป็นแอตทริบิวต์ "alpha_apply" เป็น False_rules` เท็จโดยค่าเริ่มต้น |
exec_compatible_with
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับอินสแตนซ์ทั้งหมดของส่วนนี้ |
exec_groups
|
dict หรือ None ค่าเริ่มต้นคือ None คำสั่งของกลุ่มการดำเนินการ (สตริง) เป็น exec_group s หากมีการตั้งค่า จะทำให้แง่มุมต่างๆ เรียกใช้การดำเนินการบนแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มได้ภายในอินสแตนซ์เดียว โปรดดูข้อมูลเพิ่มเติมในเอกสารของกลุ่มการดำเนินการ
|
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] ทดลอง: รายการกฎย่อยที่มุมมองนี้ใช้ |
configuration_field
LateBoundDefault configuration_field(fragment, name)อ้างอิงค่าเริ่มต้นที่มีขอบเขตล่าช้าสำหรับแอตทริบิวต์ประเภท label ค่าจะเป็น 'late-bound' หากต้องมีการกำหนดค่าก่อนกำหนดค่า แอตทริบิวต์ที่ใช้ค่านี้เป็นค่าต้องเป็นแบบส่วนตัว
ตัวอย่างการใช้:
การกำหนดแอตทริบิวต์ของกฎ:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
การเข้าถึงในการใช้งานกฎ:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
fragment
|
ต้องระบุ ชื่อของส่วนย่อยการกำหนดค่าซึ่งมีค่าที่ขอบเขตส่งท้าย |
name
|
ต้องระบุ ชื่อของค่าที่จะรับจาก Fragment การกำหนดค่า |
Depset
depset depset(direct=None, order="default", *, transitive=None)สร้าง Depset พารามิเตอร์
direct
คือรายการองค์ประกอบโดยตรงของ Depset และพารามิเตอร์ transitive
คือรายการของ Depset ที่มีองค์ประกอบกลายเป็นองค์ประกอบโดยอ้อมของ Depset ที่สร้างขึ้น พารามิเตอร์ order
จะระบุลำดับการส่งคืนองค์ประกอบเมื่อแปลง Depset เป็นรายการ ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของรายการ
องค์ประกอบทั้งหมด (โดยตรงและโดยอ้อม) ของดีเซตต้องเป็นประเภทเดียวกัน ตามที่ได้รับจากนิพจน์ type(x)
เนื่องจากชุดที่ใช้แฮชใช้เพื่อกำจัดข้อมูลซ้ำระหว่างทำซ้ำ องค์ประกอบทั้งหมดของ Depset จึงควรแฮชได้ อย่างไรก็ตาม ปัจจุบันค่าไม่แปรผันนี้ยังไม่ได้รับการตรวจสอบอย่างสม่ำเสมอในตัวสร้างทั้งหมด ใช้แฟล็ก --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน นี่จะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ องค์ประกอบต่างๆ จะต้องเปลี่ยนแปลงไม่ได้ในปัจจุบัน แม้ว่าจะมีการผ่อนปรนข้อจำกัดนี้ในอนาคต
ลำดับของ Depset ที่สร้างควรใช้ร่วมกันได้กับลำดับของ Depset transitive
คำสั่งซื้อ "default"
ใช้ร่วมกับคำสั่งซื้ออื่นๆ ได้ คำสั่งซื้ออื่นๆ ทั้งหมดจะใช้ร่วมกับคำสั่งซื้ออื่นได้เท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
sequence หรือ None
ค่าเริ่มต้นคือ None รายการองค์ประกอบ direct ของ Depset |
order
|
ค่าเริ่มต้นคือ "default" กลยุทธ์การส่งผ่านสำหรับ Depset ใหม่ ดูค่าที่เป็นไปได้ที่นี่ |
transitive
|
ลำดับของ depset หรือ None โดยค่าเริ่มต้นคือ None รายการของ Depset ที่องค์ประกอบจะกลายเป็นองค์ประกอบโดยอ้อมของ Depset |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])สร้างกลุ่มการดำเนินการที่ใช้สร้างการดำเนินการสำหรับแพลตฟอร์มการดำเนินการที่เจาะจงระหว่างการใช้งานกฎได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
toolchains
|
sequence; ค่าเริ่มต้นคือ [] ชุดเครื่องมือเชนที่กลุ่มการดำเนินการนี้ต้องการ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้ |
exec_compatible_with
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการ |
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
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] แสดงรายการตัวแปรสภาพแวดล้อมที่ส่วนขยายโมดูลนี้ใช้อ้างอิง หากตัวแปรสภาพแวดล้อมในรายการนั้นเปลี่ยนแปลง ระบบจะประเมินส่วนขยายอีกครั้ง |
os_dependent
|
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายนี้ขึ้นอยู่กับระบบปฏิบัติการหรือไม่ |
arch_dependent
|
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายนี้ขึ้นอยู่กับสถาปัตยกรรมหรือไม่ |
ผู้ให้บริการ
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
และค่าเรียกได้ของเครื่องมือสร้างดิบ ดูรายละเอียดได้ที่ กฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการที่กำหนดเอง) และการสนทนาเกี่ยวกับพารามิเตอร์ init
ด้านล่าง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
doc
|
string หรือ None ค่าเริ่มต้นคือ None คำอธิบายของผู้ให้บริการที่เครื่องมือสร้างเอกสารดึงข้อมูลได้ |
fields
|
sequence ของ strings หรือ dict หรือ None
ค่าเริ่มต้นคือ None หากระบุไว้ ให้จำกัดชุดช่องที่อนุญาตให้ใช้ ค่าที่เป็นไปได้มีดังนี้
|
init
|
เรียกได้ หรือ None
ค่าเริ่มต้นคือ None เป็นโค้ดเรียกกลับที่ไม่บังคับสำหรับการประมวลผลล่วงหน้าและตรวจสอบความถูกต้องของค่าในช่องของผู้ให้บริการในระหว่างการทำอินสแตนซ์ หากระบุ init แล้ว provider() จะแสดงผล Tuple ของ 2 องค์ประกอบ ได้แก่ สัญลักษณ์ผู้ให้บริการปกติและ ตัวสร้างดิบต่อไปนี้เป็นคำอธิบายโดยละเอียด โปรดดูกฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการ) สำหรับการสนทนาและกรณีการใช้งานที่เข้าใจง่าย ให้
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
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] ระบุรายการตัวแปรสภาพแวดล้อมที่กฎที่เก็บนี้ใช้อยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะดึงข้อมูลที่เก็บอีกครั้ง |
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) แอตทริบิวต์ที่ขึ้นต้นด้วย _ จะเป็นแบบส่วนตัว และใช้เพื่อเพิ่มทรัพยากร Dependency แบบโดยนัยในป้ายกำกับได้ มีการเพิ่มแอตทริบิวต์ name โดยนัยและต้องไม่ระบุ แอตทริบิวต์ visibility , deprecation , tags , testonly และ features มีการเพิ่มโดยนัยและลบล้างไม่ได้ กฎส่วนใหญ่ต้องการแอตทริบิวต์เพียงไม่กี่รายการ ฟังก์ชันของกฎจะกำหนดขนาดของแอตทริบิวต์เพื่อจำกัดการใช้งานหน่วยความจำ
|
outputs
|
dict หรือ None หรือ function
ค่าเริ่มต้นคือ None เลิกใช้งาน พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ ---incompatible_no_rule_outputs_param ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น เลิกใช้งานพารามิเตอร์นี้แล้ว ย้ายข้อมูลกฎเพื่อใช้ OutputGroupInfo หรือ attr.output แทน สคีมาสำหรับการกำหนดเอาต์พุตที่ประกาศไว้ล่วงหน้า ซึ่งต่างจากแอตทริบิวต์ ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชันเรียกกลับที่สร้างพจนานุกรม โค้ดเรียกกลับทำงานคล้ายกับแอตทริบิวต์ทรัพยากร Dependency ที่คำนวณ กล่าวคือ ชื่อพารามิเตอร์ของฟังก์ชันจะจับคู่กับแอตทริบิวต์ของกฎ ตัวอย่างเช่น หากคุณส่ง แต่ละรายการในพจนานุกรมจะสร้างเอาต์พุตที่ประกาศไว้ล่วงหน้าซึ่งคีย์เป็นตัวระบุ และค่าคือเทมเพลตสตริงที่กำหนดป้ายกำกับของเอาต์พุต ในฟังก์ชันการใช้งานของกฎ ตัวระบุจะกลายเป็นชื่อช่องที่ใช้เข้าถึง
ในทางปฏิบัติ ตัวยึดตำแหน่งที่ใช้แทนที่พบบ่อยที่สุดคือ |
executable
|
bool; ค่าเริ่มต้นคือ unbound พิจารณาว่ากฎนี้ถือว่าเป็นปฏิบัติการหรือไม่ กล่าวคือ ระบุว่ากฎนี้อาจอยู่ภายใต้คำสั่ง blaze run หรือไม่ โดยมีค่าเริ่มต้นเป็น False ดูข้อมูลเพิ่มเติมได้ที่ หน้ากฎ
|
output_to_genfiles
|
ค่าเริ่มต้นคือ False หากเป็น "จริง" ระบบจะสร้างไฟล์ในไดเรกทอรี genfiles แทนไดเรกทอรี bin อย่าตั้งค่าธงนี้ ยกเว้นในกรณีที่คุณต้องการเพื่อให้เข้ากันได้กับกฎที่มีอยู่ (เช่น เมื่อสร้างไฟล์ส่วนหัวสำหรับ C++) |
fragments
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการชื่อส่วนย่อยของการกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าเป้าหมาย |
host_fragments
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการชื่อของส่วนย่อยการกำหนดค่าที่กฎต้องใช้ในการกำหนดค่าโฮสต์ |
_skylark_testable
|
ค่าเริ่มต้นคือ False (ทดลอง) หากเป็นจริง กฎนี้จะแสดงการดำเนินการเพื่อรับการตรวจสอบตามกฎที่ขึ้นอยู่กับการดำเนินการผ่านผู้ให้บริการ Actions นอกจากนี้ ผู้ให้บริการยังใช้กับกฎได้โดยเรียก ctx.created_actions()ควรใช้สำหรับการทดสอบลักษณะการทำงานในเวลาวิเคราะห์ของกฎ Starlark เท่านั้น ธงนี้อาจถูกนำออกในอนาคต |
toolchains
|
ลำดับ
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดเครื่องมือที่กฎนี้ต้องใช้ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้ คุณจะพบเครื่องมือเชนได้โดยการตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการนำกฎไปใช้ผ่านทาง ctx.toolchain
|
incompatible_use_toolchain_transition
|
ค่าเริ่มต้นคือ False เลิกใช้งานแล้ว ไม่มีการใช้งานอีกต่อไปและควรนำออก |
doc
|
string หรือ None
ค่าเริ่มต้นคือ None คำอธิบายของกฎที่แยกได้ด้วยเครื่องมือสร้างเอกสาร |
provides
|
ค่าเริ่มต้นคือ [] รายชื่อผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดงผล นี่เป็นข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นผู้ให้บริการประเภทใดก็ตามที่ระบุไว้ที่นี่ออกจากค่าที่แสดงผล อย่างไรก็ตาม ฟังก์ชันการใช้งานอาจแสดงผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่ องค์ประกอบแต่ละรายการของรายการคือออบเจ็กต์ |
exec_compatible_with
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับเป้าหมายทั้งหมดของกฎประเภทนี้ |
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 จะเริ่มต้นแอตทริบิวต์ของกฎ ระบบจะเรียกใช้ฟังก์ชันเมื่อมีการโหลดสำหรับอินสแตนซ์แต่ละรายการของกฎ ระบบจะเรียกใช้ด้วยค่าของแอตทริบิวต์สาธารณะที่กำหนดโดยกฎ (ไม่ใช่ด้วยแอตทริบิวต์ทั่วไป เช่น และต้องแสดงผลพจนานุกรมจากชื่อแอตทริบิวต์เป็นค่าที่ต้องการ แอตทริบิวต์ที่ไม่ได้แสดงผลจะไม่ได้รับผลกระทบ การแสดง ระบบจะประเมิน Initializer ก่อนค่าเริ่มต้นที่ระบุไว้ในการกำหนดแอตทริบิวต์ ดังนั้น หากพารามิเตอร์ในลายเซ็นของโปรแกรมเริ่มต้นมีค่าเริ่มต้น พารามิเตอร์จะแทนที่ค่าเริ่มต้นจากการกำหนดแอตทริบิวต์ (ยกเว้นหากแสดงผล ในทำนองเดียวกัน หากพารามิเตอร์ในลายเซ็นของโปรแกรมเริ่มต้นไม่มีค่าเริ่มต้น ระบบจะบังคับใช้พารามิเตอร์ดังกล่าว การยกเว้นการตั้งค่าเริ่มต้น/ที่จําเป็นสําหรับการกำหนดแอตทริบิวต์ในกรณีที่เป็นแนวทางปฏิบัติที่ดี แนวทางปฏิบัติที่ดีคือการใช้ ในกรณีของกฎแบบขยาย การเริ่มต้นทั้งหมดเรียกว่าการดำเนินการตั้งแต่ย่อยไปจนถึงระดับบน โปรแกรมเริ่มต้นแต่ละตัวจะส่งเฉพาะแอตทริบิวต์สาธารณะที่เครื่องมือเริ่มต้นรู้จักเท่านั้น |
parent
|
ค่าเริ่มต้นคือ None ทดลอง: กฎ Stalark ที่ขยายขึ้น เมื่อตั้งค่าแล้ว แอตทริบิวต์สาธารณะจะถูกรวมและผู้ให้บริการที่โฆษณา กฎตรงกับ executable และ test จากระดับบนสุด ค่า fragments , toolchains , exec_compatible_with และ exec_groups จะรวมกัน ไม่สามารถตั้งค่าพารามิเตอร์เดิมหรือพารามิเตอร์ที่เลิกใช้งานแล้วได้
|
extendable
|
bool หรือ ป้ายกำกับ หรือ สตริง หรือ None
ค่าเริ่มต้นคือ None ทดลอง: ป้ายกำกับของรายการที่อนุญาตซึ่งกำหนดกฎที่จะขยายกฎนี้ได้ สามารถตั้งค่าเป็น "จริง/เท็จ" เพื่ออนุญาต/ไม่อนุญาตตลอดเวลาได้ด้วย โดยค่าเริ่มต้น Bazel จะอนุญาตส่วนขยายเสมอ |
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] ทดลอง: รายการกฎย่อยที่กฎนี้ใช้ |
เลือก
unknown select(x, no_match_error='')
select()
เป็นฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์ของกฎกำหนดค่าได้ ดูรายละเอียดได้ที่สารานุกรมสร้าง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
required ไดเรกทอรีที่แมปเงื่อนไขการกําหนดค่ากับค่า แต่ละคีย์คือป้ายกำกับหรือสตริงป้ายกำกับที่ระบุอินสแตนซ์ config_setting หรือrestriction_value ดูเอกสารเกี่ยวกับมาโครเพื่อดูว่าควรใช้ป้ายกำกับแทนสตริงเมื่อใด |
no_match_error
|
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กำหนดเองที่ไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขที่ตรงกัน |
กฎย่อย
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])สร้างอินสแตนซ์ใหม่ของกฎย่อย ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในตัวแปรร่วมก่อนจึงจะใช้งานได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
จำเป็น ฟังก์ชัน Starlark ที่นำกฎย่อยนี้ไปใช้ |
attrs
|
dict; ค่าเริ่มต้นคือ {} พจนานุกรมสำหรับประกาศแอตทริบิวต์ (ส่วนตัว) ทั้งหมดของกฎย่อย กฎย่อยจะมีได้เฉพาะแอตทริบิวต์ส่วนตัวที่พิมพ์ด้วยป้ายกำกับ (เช่น ป้ายกำกับหรือรายการป้ายกำกับ) Bazel จะส่งค่าที่แก้ไขแล้วซึ่งเกี่ยวข้องกับป้ายกำกับเหล่านี้ไปยังฟังก์ชันการใช้งานของกฎย่อยโดยอัตโนมัติเป็นอาร์กิวเมนต์ที่มีชื่อ (ดังนั้นต้องมีฟังก์ชันการใช้งานเพื่อยอมรับพารามิเตอร์ที่มีชื่อซึ่งตรงกับชื่อแอตทริบิวต์) ประเภทของค่าเหล่านี้ได้แก่
|
toolchains
|
ลำดับ
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดเครื่องมือที่กฎย่อยนี้ต้องใช้ รายการนี้อาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi รวมกันแบบใดก็ได้ คุณจะพบเชนเครื่องมือได้โดยตรวจสอบแพลตฟอร์มปัจจุบัน และมอบให้กับการติดตั้งใช้งานกฎย่อยผ่าน ctx.toolchains
|
fragments
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการชื่อส่วนย่อยของการกำหนดค่าที่กฎย่อยต้องใช้ในการกำหนดค่าเป้าหมาย |
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 ซึ่งควบคุมว่าไฟล์ดังกล่าวอาจปรากฏเป็นปลายทางของเป้าหมายอื่นๆ หรือไม่) การเปิดเผยโหลดทำงานที่ระดับแพ็กเกจ: หากต้องการโหลดโมดูล ไฟล์ที่โหลดต้องปรากฏในแพ็กเกจที่ให้สิทธิ์การเปิดเผยโมดูลแล้ว โมดูลจะโหลดภายในแพ็กเกจของตนเองได้เสมอ โดยไม่คำนึงถึงระดับการเข้าถึง
สามารถเรียกใช้ visibility()
ได้เพียงครั้งเดียวต่อไฟล์ .bzl และเรียกใช้ที่ระดับบนสุดเท่านั้น ไม่ใช่ในฟังก์ชัน รูปแบบที่แนะนำคือวางการเรียกใช้นี้ด้านล่างคำสั่ง load()
และตรรกะสั้นๆ ที่จำเป็นในการระบุอาร์กิวเมนต์
หากตั้งค่าแฟล็ก --check_bzl_visibility
เป็น "เท็จ" การละเมิดระดับการเข้าถึงโหลดจะส่งคำเตือน แต่การสร้างบิลด์จะไม่ล้มเหลว
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
value
|
ต้องระบุ รายการสตริงข้อมูลจำเพาะของแพ็กเกจ หรือสตริงข้อกำหนดแพ็กเกจเดียว ข้อมูลจำเพาะของแพ็กเกจมีรูปแบบเดียวกันกับ
ไม่สามารถใช้ไวยากรณ์ "@" ได้ ระบบจะตีความข้อกำหนดทั้งหมดที่เกี่ยวข้องกับที่เก็บของโมดูลปัจจุบัน หาก โปรดทราบว่าแฟล็ก |