เมธอดส่วนกลางที่ใช้ได้ในไฟล์ .bzl ทั้งหมด
สมาชิก
- analysis_test_transition
- aspect
- configuration_field
- depset
- exec_group
- exec_transition
- module_extension
- provider
- repository_rule
- rule
- เลือก
- subrule
- tag_class
- visibility
analysis_test_transition
transition analysis_test_transition(settings)
สร้างการเปลี่ยนการกำหนดค่าที่จะนำไปใช้กับการอ้างอิงของกฎการทดสอบการวิเคราะห์ การเปลี่ยนนี้ใช้ได้กับแอตทริบิวต์ของกฎที่มี analysis_test = True
เท่านั้น กฎดังกล่าวมีข้อจำกัดด้านความสามารถ (เช่น ขนาดของต้นไม้ความเกี่ยวข้องถูกจำกัด) ดังนั้นทรานซิชันที่สร้างโดยใช้ฟังก์ชันนี้จึงมีขอบเขตที่จำกัดเมื่อเทียบกับทรานซิชันที่สร้างโดยใช้ transition()
ฟังก์ชันนี้ออกแบบมาเพื่ออำนวยความสะดวกให้กับไลบรารีหลักของ เฟรมเวิร์กการทดสอบการวิเคราะห์เป็นหลัก ดูแนวทางปฏิบัติแนะนำได้ในเอกสารประกอบ (หรือการใช้งาน)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
settings
|
dict;
ต้องระบุ พจนานุกรมที่มีข้อมูลเกี่ยวกับการตั้งค่าการกําหนดค่าที่ควรตั้งค่าตามการเปลี่ยนการกําหนดค่านี้ คีย์คือป้ายกํากับการตั้งค่าบิลด์ และค่าคือค่าใหม่หลังการเปลี่ยน การตั้งค่าอื่นๆ ทั้งหมดจะไม่มีการเปลี่ยนแปลง ใช้คำสั่งนี้เพื่อประกาศการตั้งค่าการกําหนดค่าที่เฉพาะเจาะจงซึ่งการทดสอบการวิเคราะห์จําเป็นต้องตั้งค่าเพื่อให้ผ่าน |
เฉพาะด้าน
Aspect aspect(implementation, attr_aspects=[], toolchains_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
|
function;
ต้องระบุ ฟังก์ชัน Starlark ที่ใช้แง่มุมนี้ โดยมีพารามิเตอร์ 2 รายการ ได้แก่ Target (เป้าหมายที่จะใช้แง่มุม) และ ctx (บริบทกฎที่สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายจะแสดงผ่านช่อง ctx.rule ระบบจะประเมินฟังก์ชันนี้ในระหว่างระยะการวิเคราะห์สําหรับการใช้แง่มุมกับเป้าหมายแต่ละรายการ
|
attr_aspects
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการชื่อแอตทริบิวต์ โดยแง่มุมจะเผยแพร่ไปตามข้อกําหนดซึ่งระบุไว้ในแอตทริบิวต์ของเป้าหมายที่มีชื่อเหล่านี้ ค่าทั่วไปในที่นี้ได้แก่ deps และ exports รายการนี้อาจมีสตริงเดียว "*" เพื่อกระจายไปยังทรัพยากร Dependency ทั้งหมดของเป้าหมายด้วย
|
toolchains_aspects
|
sequence;
ค่าเริ่มต้นคือ [] รายการประเภทเครื่องมือ ข้อมูลพร็อพเพอร์ตี้จะนำไปใช้กับเครื่องมือทางเทคนิคเป้าหมายที่ตรงกับประเภทเครื่องมือทางเทคนิคเหล่านี้ |
attrs
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ประกาศแอตทริบิวต์ทั้งหมดของมิติข้อมูล โดยจะแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ เช่น attr.label หรือ attr.string (ดูโมดูล attr ) แอตทริบิวต์ของลักษณะจะพร้อมใช้งานสำหรับฟังก์ชันการใช้งานเป็นช่องของพารามิเตอร์ ctx แอตทริบิวต์ที่ระบุโดยนัยซึ่งขึ้นต้นด้วย แอตทริบิวต์ที่ชัดเจนต้องเป็นประเภท แอตทริบิวต์ที่ประกาศจะแปลง |
required_providers
|
sequence;
ค่าเริ่มต้นคือ [] แอตทริบิวต์นี้ช่วยให้แง่มุมจำกัดการนำไปใช้ได้เฉพาะกับเป้าหมายที่มีกฎโฆษณาผู้ให้บริการที่จำเป็นเท่านั้น ค่าต้องเป็นรายการที่มีผู้ให้บริการรายเดียวหรือรายการผู้ให้บริการ แต่ต้องไม่ใช่ทั้ง 2 อย่าง ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้องแต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้องระบบจะแปลงรายชื่อผู้ให้บริการที่ไม่ซ้อนกันเป็นรายชื่อที่มีรายชื่อผู้ให้บริการ 1 รายการโดยอัตโนมัติ กล่าวคือ หากต้องการให้กฎบางอย่าง (เช่น |
required_aspect_providers
|
sequence;
ค่าเริ่มต้นคือ [] แอตทริบิวต์นี้ช่วยให้แง่มุมนี้ตรวจสอบแง่มุมอื่นๆ ได้ ค่าต้องเป็นรายการที่มีผู้ให้บริการรายเดียวหรือรายการผู้ให้บริการ แต่ต้องไม่ใช่ทั้ง 2 อย่าง ตัวอย่างเช่น [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] เป็นค่าที่ถูกต้อง แต่ [FooInfo, BarInfo, [BazInfo, QuxInfo]] ไม่ถูกต้องระบบจะแปลงรายการผู้ให้บริการแบบไม่ฝังเป็นรายการที่มีรายการผู้ให้บริการรายการเดียวโดยอัตโนมัติ กล่าวคือ หากต้องการให้ด้านอื่น (เช่น |
provides
|
sequence;
ค่าเริ่มต้นคือ [] รายชื่อผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดงผล ระบบจะแสดงข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นผู้ให้บริการประเภทใดประเภทหนึ่งจากรายการค่าที่แสดงผล อย่างไรก็ตาม ฟังก์ชันการติดตั้งใช้งานอาจแสดงผลผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่ องค์ประกอบแต่ละรายการของลิสต์คือออบเจ็กต์ |
requires
|
ลําดับของ Aspect
ค่าเริ่มต้นคือ [] รายนามของ Aspect ที่ต้องนำไปใช้ก่อน Aspect นี้ |
fragments
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] ชื่อรายการของข้อมูลโค้ดการกําหนดค่าที่แอ็สเปีร์ต้องใช้ในการกําหนดค่าเป้าหมาย |
host_fragments
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] รายการชื่อของส่วนย่อยการกำหนดค่าที่ด้านต้องใช้ในการกำหนดค่าโฮสต์ |
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากตั้งค่าไว้ ชุด Toolchain ที่ส่วนนี้ต้องการ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ เครื่องมือจะพบได้โดยการดูแพลตฟอร์มปัจจุบัน และส่งไปยังการใช้งานแอสเปคผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
bool;
default is False เลิกใช้งานแล้ว ไม่ควรนำมาใช้อีกต่อไป |
doc
|
string หรือ None
ค่าเริ่มต้นคือ None คำอธิบายด้านที่ดึงมาได้ด้วยเครื่องมือสร้างเอกสาร |
apply_to_generating_rules
|
bool;
ค่าเริ่มต้นคือ False หากเป็น "จริง" เมื่อใช้กับไฟล์เอาต์พุต แอตทริบิวต์จะมีผลกับกฎการสร้างของไฟล์เอาต์พุตแทน ตัวอย่างเช่น สมมติว่าแง่มุมหนึ่งจะส่งผ่านผ่านแอตทริบิวต์ "deps" และนำไปใช้กับเป้าหมาย "alpha" สมมติว่า "alpha" มี "deps = [':beta_output']` โดยที่ "beta_output" คือเอาต์พุตที่ประกาศของเป้าหมาย "beta" สมมติว่า "beta" มีเป้าหมาย "charlie" เป็นหนึ่งใน "deps" ของมัน หาก "apply_to_generating_rules=True" สําหรับแง่มุมนั้น แง่มุมจะส่งผ่านผ่าน "alpha", "beta" และ "charlie" หากเป็น False แง่มุมจะส่งผ่านไปยัง "alpha" เท่านั้น เท็จโดยค่าเริ่มต้น |
exec_compatible_with
|
ลำดับของสตริง ค่าเริ่มต้นคือ [] รายการข้อจำกัดในแพลตฟอร์มการดำเนินการที่ใช้กับอินสแตนซ์ทั้งหมดของลักษณะนี้ |
exec_groups
|
dict หรือ None
ค่าเริ่มต้นคือ None Dict ของชื่อกลุ่มการดําเนินการ (สตริง) เป็น exec_group s หากตั้งค่าไว้ จะช่วยให้แง่มุมทําการบนแพลตฟอร์มการดําเนินการหลายแพลตฟอร์มภายในอินสแตนซ์เดียวได้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับกลุ่มการดําเนินการ
|
subrules
|
ลําดับกฎย่อย
ค่าเริ่มต้นคือ [] การทดลอง: รายการกฎย่อยที่แง่มุมนี้ใช้ |
configuration_field
LateBoundDefault configuration_field(fragment, name)
ตัวอย่างการใช้:
การกําหนดแอตทริบิวต์ของกฎ:
'_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)
direct
คือรายการองค์ประกอบโดยตรงของ Depset และพารามิเตอร์ transitive
คือรายการของ Depset ที่มีองค์ประกอบที่กลายเป็นองค์ประกอบโดยอ้อมของ Depset ที่สร้างขึ้น ลำดับที่ระบบจะแสดงองค์ประกอบเมื่อแปลงชุดข้อมูล Dependency เป็นลิสต์จะระบุโดยพารามิเตอร์ order
ดูข้อมูลเพิ่มเติมในภาพรวมของ Depset
องค์ประกอบทั้งหมด (ทั้งทางตรงและทางอ้อม) ของช่วง ต้องเป็นประเภทเดียวกันตามที่นิพจน์ type(x)
ได้รับ
เนื่องจากชุดที่อิงตามแฮชใช้เพื่อกำจัดรายการที่ซ้ำกันระหว่างการทำซ้ำ องค์ประกอบทั้งหมดของ depset จึงควรเป็นแฮชได้ อย่างไรก็ตาม ปัจจุบันยังไม่มีการตรวจสอบค่าคงที่นี้อย่างสม่ำเสมอในคอนสตรัคเตอร์ทั้งหมด ใช้ Flag --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน ซึ่งจะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ องค์ประกอบต่างๆ ในปัจจุบันต้องเปลี่ยนแปลงไม่ได้ แม้ว่าการจำกัดจะมีการผ่อนปรนในอนาคตก็ตาม
ลําดับของ depset ที่สร้างขึ้นควรเข้ากันได้กับลําดับของ depset transitive
คำสั่งซื้อ "default"
ใช้ได้กับคำสั่งซื้ออื่นๆ ทั้งหมด แต่คำสั่งซื้ออื่นๆ ใช้ได้เฉพาะกับคำสั่งซื้อนั้นๆ เท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
sequence หรือ None
ค่าเริ่มต้นคือ None ซึ่งเป็นรายการองค์ประกอบ direct ของ depset |
order
|
สตริง;
ค่าเริ่มต้นคือ "default" กลยุทธ์การเรียกดูชุดข้อมูลใหม่ ดูค่าที่เป็นไปได้ที่นี่ |
transitive
|
ลําดับ depset หรือ None
ค่าเริ่มต้นคือ None รายการ depset ที่องค์ประกอบจะกลายเป็นองค์ประกอบโดยอ้อมของ depset |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] ชุดเครื่องมือทางเทคนิคที่กลุ่มการดำเนินการนี้ต้องใช้ รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ StarlarkToolchainTypeApi ผสมกันก็ได้ |
exec_compatible_with
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] นี่คือรายการข้อจํากัดในแพลตฟอร์มการดําเนินการ |
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition()
เวอร์ชันเฉพาะที่ใช้เพื่อกำหนดการเปลี่ยนสถานะการดําเนินการ ดูแนวทางปฏิบัติแนะนำได้ในเอกสารประกอบ (หรือการใช้งาน) ใช้ได้จาก Bazel ในตัวเท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
callable;
ต้องระบุ |
inputs
|
ลําดับสตริง
ต้องระบุ |
outputs
|
ลําดับสตริง
ต้องระบุ |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)
use_extension
ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
callable;
required ฟังก์ชันที่ใช้ส่วนขยายโมดูลนี้ ต้องรับพารามิเตอร์เดียว module_ctx จะมีการเรียกใช้ฟังก์ชันครั้งเดียวเมื่อเริ่มต้นบิลด์เพื่อระบุชุดที่เก็บที่มีอยู่
|
tag_classes
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมเพื่อประกาศคลาสแท็กทั้งหมดที่ใช้โดยส่วนขยาย โดยแมปจากชื่อคลาสแท็กไปยังออบเจ็กต์ tag_class
|
doc
|
string หรือ None
ค่าเริ่มต้นคือ None คำอธิบายส่วนขยายโมดูลที่ดึงข้อมูลได้ด้วยเครื่องมือสร้างเอกสาร |
environ
|
sequence ของ string
ค่าเริ่มต้นคือ [] แสดงรายการตัวแปรสภาพแวดล้อมที่ส่วนขยายโมดูลนี้ใช้อยู่ หากตัวแปรสภาพแวดล้อมในรายการนั้นมีการเปลี่ยนแปลง ระบบจะประเมินส่วนขยายอีกครั้ง |
os_dependent
|
bool;
default is False Indicates whether this extension is OS-dependent or not |
arch_dependent
|
bool;
default is False Indicates whether this extension is architecture-dependent or not |
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
ระบบจะแสดงผล tupple ที่มี 2 องค์ประกอบ ได้แก่ ค่าที่เรียกใช้ได้ของ Provider
และค่าที่เรียกใช้ได้ของ ตัวสร้างแบบดิบ ดูรายละเอียดได้ที่กฎ (การเริ่มต้นที่กำหนดเองของผู้ให้บริการที่กำหนดเอง) และการพูดคุยเกี่ยวกับพารามิเตอร์ init
ด้านล่าง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
doc
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายของผู้ให้บริการที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้ |
fields
|
ลําดับของ สตริง หรือ dict หรือ None
ค่าเริ่มต้นคือ None หากระบุ จะจํากัดชุดช่องที่อนุญาต ค่าที่เป็นไปได้มีดังนี้
|
init
|
Callable หรือ None
ค่าเริ่มต้นคือ None Callback ที่ไม่บังคับสำหรับการประมวลผลล่วงหน้าและตรวจสอบความถูกต้องของค่าในช่องของผู้ให้บริการในระหว่างการสร้างอินสแตนซ์ หากระบุ init provider() จะแสดงผล tupple ที่มี 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)
module_extension()
หรือใช้โดย use_repo_rule()
ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
callable;
required ฟังก์ชันที่ใช้กฎนี้ ต้องมีพารามิเตอร์เดียว repository_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ในระหว่างระยะการโหลดสําหรับอินสแตนซ์แต่ละรายการของกฎ
|
attrs
|
dict หรือ None
ค่าเริ่มต้นคือ None พจนานุกรมสำหรับประกาศแอตทริบิวต์ทั้งหมดของกฎที่เก็บ โดยจะแมปจากชื่อแอตทริบิวต์กับออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr ) แอตทริบิวต์ที่ขึ้นต้นด้วย _ เป็นแอตทริบิวต์ส่วนตัว และใช้เพื่อเพิ่มการพึ่งพาโดยนัยในป้ายกำกับลงในไฟล์ได้ (กฎของที่เก็บข้อมูลต้องไม่ขึ้นอยู่กับอาร์ติแฟกต์ที่สร้างขึ้น) ระบบจะเพิ่มแอตทริบิวต์ name โดยปริยายและไม่จำเป็นต้องระบุ
แอตทริบิวต์ที่ประกาศจะแปลง |
local
|
bool;
ค่าเริ่มต้นคือ False ระบุว่ากฎนี้จะดึงข้อมูลทั้งหมดจากระบบในเครื่องและควรได้รับการประเมินใหม่ทุกครั้งที่ดึงข้อมูล |
environ
|
ลำดับ ของสตริง
ค่าเริ่มต้นคือ [] เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้ว ย้ายข้อมูลไปยัง repository_ctx.getenv แทนแสดงรายการตัวแปรสภาพแวดล้อมที่กฎที่เก็บข้อมูลนี้ใช้ หากตัวแปรสภาพแวดล้อมในรายการนั้นเปลี่ยนแปลง ระบบจะดึงข้อมูลพื้นที่เก็บข้อมูลอีกครั้ง |
configure
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าที่เก็บจะตรวจสอบระบบเพื่อวัตถุประสงค์ในการกําหนดค่า |
remotable
|
bool;
ค่าเริ่มต้นคือ False ทดลอง พารามิเตอร์นี้ยังอยู่ในขั้นทดลองและอาจมีการเปลี่ยนแปลงได้ทุกเมื่อ โปรดอย่าใช้ข้อมูลนี้ ซึ่งอาจเปิดใช้ในการทดสอบโดยการตั้งค่า --experimental_repo_remote_exec ใช้งานได้กับการดำเนินการจากระยะไกล |
doc
|
สตริง หรือ 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=[], dependency_resolution_rule=False, exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])
ต้องกำหนดกฎให้กับตัวแปรร่วมในไฟล์ .bzl ชื่อของตัวแปรร่วมเป็นชื่อกฎ
กฎทดสอบต้องมีชื่อที่ลงท้ายด้วย _test
ส่วนกฎอื่นๆ ทั้งหมดต้องไม่มีคำต่อท้ายนี้ (ข้อจํากัดนี้มีผลกับกฎเท่านั้น โดยจะไม่มีผลกับเป้าหมายของกฎ)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
ต้องระบุ ฟังก์ชัน 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 ใช้ Flag นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนําออกที่กําลังจะเกิดขึ้น พารามิเตอร์นี้เลิกใช้งานแล้ว ย้ายข้อมูลกฎเพื่อใช้ OutputGroupInfo หรือ attr.output แทน สคีมาสำหรับกำหนดเอาต์พุตที่ประกาศล่วงหน้า ผู้ใช้ไม่ได้ระบุป้ายกำกับสำหรับไฟล์เหล่านี้ ซึ่งแตกต่างจากแอตทริบิวต์ ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชัน Callback ที่สร้างพจนานุกรม การเรียกกลับทำงานคล้ายกับแอตทริบิวต์ทรัพยากร Dependency ที่คำนวณแล้ว กล่าวคือ ชื่อพารามิเตอร์ของฟังก์ชันจะมีการจับคู่กับแอตทริบิวต์ของกฎ ตัวอย่างเช่น หากคุณส่ง รายการแต่ละรายการในพจนานุกรมจะสร้างเอาต์พุตที่ประกาศไว้ล่วงหน้า โดยที่คีย์เป็นตัวระบุและค่าคือเทมเพลตสตริงที่กำหนดป้ายกำกับของเอาต์พุต ในฟังก์ชันการใช้งานของกฎ ตัวระบุจะกลายเป็นชื่อช่องที่ใช้เข้าถึง
ในทางปฏิบัติ ตัวยึดตำแหน่งที่ใช้แทนที่ใช้กันมากที่สุดคือ |
executable
|
bool;
ค่าเริ่มต้นคือ unbound ระบุว่ากฎนี้เป็นไฟล์ปฏิบัติการหรือไม่ กล่าวคือ อาจเป็นหัวเรื่องของคำสั่ง blaze run หรือไม่ ค่าเริ่มต้นคือ False ดูข้อมูลเพิ่มเติมได้ที่หน้ากฎ
|
output_to_genfiles
|
bool;
ค่าเริ่มต้นคือ False หากเป็น "จริง" ระบบจะสร้างไฟล์ในไดเรกทอรี genfiles แทนไดเรกทอรี bin โปรดอย่าตั้งค่า Flag นี้ เว้นแต่ว่าคุณต้องการใช้เพื่อให้เข้ากันได้กับกฎที่มีอยู่ (เช่น เมื่อสร้างไฟล์ส่วนหัวสำหรับ C++) |
fragments
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] ชื่อรายการของข้อมูลโค้ดการกําหนดค่าที่กฎจําเป็นในการกําหนดค่าเป้าหมาย |
host_fragments
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] รายการชื่อของข้อมูลโค้ดการกําหนดค่าที่กฎจําเป็นในการกําหนดค่าโฮสต์ |
_skylark_testable
|
bool;
ค่าเริ่มต้นคือ False (ทดลอง) หากเป็น "จริง" กฎนี้จะแสดงการดำเนินการเพื่อให้กฎที่ขึ้นอยู่กับกฎนี้ตรวจสอบผ่านผู้ให้บริการ Actions ผู้ให้บริการยังพร้อมใช้งานสำหรับกฎเองด้วยโดยเรียกใช้ ctx.created_actions()ควรใช้เพื่อทดสอบลักษณะการทํางานของกฎ Starlark ในเวลาวิเคราะห์เท่านั้น ระบบอาจนำธงนี้ออกในอนาคต |
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดของ Toolchain ที่กฎนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ ระบบจะค้นหา Toolchain โดยตรวจสอบแพลตฟอร์มปัจจุบัน และส่งไปยังการใช้งานกฎผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
bool;
default is False เลิกใช้งานแล้ว ไม่ควรนำมาใช้อีกต่อไป |
doc
|
string หรือ None
ค่าเริ่มต้นคือ None คำอธิบายของกฎที่ดึงข้อมูลได้ด้วยเครื่องมือสร้างเอกสาร |
provides
|
sequence;
ค่าเริ่มต้นคือ [] เป็นรายการผู้ให้บริการที่ฟังก์ชันการใช้งานต้องแสดงผล ระบบจะแสดงข้อผิดพลาดหากฟังก์ชันการใช้งานละเว้นผู้ให้บริการประเภทใดประเภทหนึ่งจากรายการค่าที่แสดงผล อย่างไรก็ตาม ฟังก์ชันการติดตั้งใช้งานอาจแสดงผลผู้ให้บริการเพิ่มเติมที่ไม่ได้ระบุไว้ที่นี่ องค์ประกอบแต่ละรายการของลิสต์คือออบเจ็กต์ |
dependency_resolution_rule
|
bool;
ค่าเริ่มต้นคือ False หากตั้งค่า กฎอาจเป็นข้อกำหนดผ่านแอตทริบิวต์ที่ทําเครื่องหมายว่าพร้อมใช้งานใน Materializer ด้วย แอตทริบิวต์ทั้งหมดของกฎที่มีชุดธงนี้ต้องทำเครื่องหมายเป็นมีอยู่ใน Materializer ด้วย การทำเครื่องหมายนี้เพื่อให้กฎที่ทำเครื่องหมายไว้ไม่สามารถใช้กฎที่ไม่ได้ทำเครื่องหมายไว้ |
exec_compatible_with
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] นี่คือรายการข้อจํากัดในแพลตฟอร์มการดําเนินการที่ใช้กับเป้าหมายทั้งหมดของกฎประเภทนี้ |
analysis_test
|
bool;
ค่าเริ่มต้นคือ False หากเป็นจริง ระบบจะถือว่ากฎนี้เป็นการทดสอบการวิเคราะห์ หมายเหตุ: กฎการทดสอบการวิเคราะห์กำหนดโดยใช้โครงสร้างพื้นฐานที่มีอยู่ในไลบรารี Starlark หลักเป็นหลัก ดูคำแนะนำได้ที่การทดสอบ หากมีการกําหนดกฎเป็นกฎการทดสอบการวิเคราะห์ ระบบจะอนุญาตให้ใช้การเปลี่ยนการกำหนดค่าที่กําหนดโดยใช้ analysis_test_transition ในแอตทริบิวต์ของกฎ แต่จะต้องยอมรับข้อจํากัดบางอย่าง ดังนี้
|
build_setting
|
BuildSetting หรือ None
ค่าเริ่มต้นคือ None หากตั้งค่าไว้ จะอธิบายว่า build setting ของกฎนี้เป็นประเภทใด ดูได้ที่ข้อบังคับ config หากตั้งค่านี้ ระบบจะเพิ่มแอตทริบิวต์ที่ต้องระบุชื่อ "build_setting_default" ลงในกฎนี้โดยอัตโนมัติ โดยมีประเภทที่สอดคล้องกับค่าที่ส่งมาที่นี่
|
cfg
|
ค่าเริ่มต้นคือ None หากตั้งค่าไว้ การชี้ไปยังการเปลี่ยนการกำหนดค่าที่กฎจะมีผลกับการกำหนดค่าของตนเองก่อนการวิเคราะห์ |
exec_groups
|
dict หรือ None
ค่าเริ่มต้นคือ None Dict ของชื่อกลุ่มการดําเนินการ (สตริง) เป็น exec_group s หากตั้งค่าไว้ กฎจะอนุญาตให้เรียกใช้การดำเนินการในแพลตฟอร์มการดำเนินการหลายแพลตฟอร์มภายในเป้าหมายเดียว ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับกลุ่มการดําเนินการ
|
initializer
|
ค่าเริ่มต้นคือ None การทดสอบ: ฟังก์ชัน Stalark เริ่มต้นแอตทริบิวต์ของกฎ ระบบจะเรียกใช้ฟังก์ชันนี้เมื่อโหลดอินสแตนซ์ของกฎแต่ละรายการ โดยเรียกใช้ด้วย โดยต้องแสดงผลพจนานุกรมจากชื่อแอตทริบิวต์ไปยังค่าที่ต้องการ แอตทริบิวต์ที่ไม่ได้ส่งคืนจะไม่ได้รับผลกระทบ การแสดงผล ระบบจะประเมินตัวเริ่มต้นก่อนค่าเริ่มต้นที่ระบุไว้ในคําจํากัดความของแอตทริบิวต์ ดังนั้น หากพารามิเตอร์ในลายเซ็นของตัวแปรเริ่มต้นมีค่าเริ่มต้น ระบบจะเขียนทับค่าเริ่มต้นจากคําจํากัดความแอตทริบิวต์ (ยกเว้นในกรณีที่แสดงผล ในทํานองเดียวกัน หากพารามิเตอร์ในลายเซ็นของตัวแปรเริ่มต้นไม่มีค่าเริ่มต้น พารามิเตอร์นั้นจะกลายเป็นพารามิเตอร์ที่ต้องระบุ ในกรณีเช่นนี้ คุณควรละเว้นการตั้งค่าเริ่มต้น/บังคับในคำจำกัดความของแอตทริบิวต์ แนวทางปฏิบัติแนะนำคือใช้ ในกรณีที่มีกฎเพิ่มเติม เงื่อนไขเริ่มต้นทั้งหมดจะเรียกว่า ดำเนินการต่อจากระดับย่อยไปยังระดับบน เงื่อนไขเริ่มต้นแต่ละรายการจะส่งเฉพาะแอตทริบิวต์สาธารณะที่รู้จักเท่านั้น |
parent
|
ค่าเริ่มต้นคือ None การทดลอง: กฎ Stalark ที่ขยาย เมื่อตั้งค่า ระบบจะผสานแอตทริบิวต์สาธารณะและผู้ให้บริการที่โฆษณาไว้ กฎจับคู่ executable และ test จากรายการหลัก ระบบจะผสานค่าของ fragments , toolchains , exec_compatible_with และ exec_groups คุณอาจไม่ได้ตั้งค่าพารามิเตอร์เดิมหรือที่เลิกใช้งานแล้ว การเปลี่ยนการกำหนดค่าขาเข้า cfg ของรายการหลักจะมีผลหลังจากการกำหนดค่าขาเข้าของกฎนี้
|
extendable
|
bool; หรือ Label; หรือ string; หรือ None ;
ค่าเริ่มต้นคือ None การทดลอง: ป้ายกำกับของรายการที่อนุญาตซึ่งกําหนดว่ากฎใดสามารถขยายกฎนี้ได้ นอกจากนี้ยังตั้งค่าเป็น True/False เพื่ออนุญาต/ไม่อนุญาตการขยายเวลาเสมอได้ด้วย โดยค่าเริ่มต้น Bazel จะอนุญาตส่วนขยายเสมอ |
subrules
|
ลำดับของกฎย่อย
ค่าเริ่มต้นคือ [] ทดลอง: รายการกฎย่อยที่กฎนี้ใช้ |
เลือก
unknown select(x, no_match_error='')
select()
คือฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์กฎกําหนดค่าได้ ดูรายละเอียดได้ที่สร้างสารานุกรม
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
dict;
ต้องระบุ คำสั่งที่แมปเงื่อนไขการกำหนดค่ากับค่า คีย์แต่ละรายการคือป้ายกํากับหรือสตริงป้ายกํากับที่ระบุอินสแตนซ์ config_setting หรือ constraint_value ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูกรณีที่ควรใช้ป้ายกํากับแทนสตริง |
no_match_error
|
string;
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กําหนดเองซึ่งไม่บังคับที่จะรายงานหากไม่มีเงื่อนไขที่ตรงกัน |
กฎย่อย
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
required ฟังก์ชัน Starlark จะใช้กฎย่อยนี้ |
attrs
|
dict;
ค่าเริ่มต้นคือ {} คําจํานวนมาเพื่อประกาศแอตทริบิวต์ (ส่วนตัว) ทั้งหมดของกฎย่อย กฎย่อยจะมีได้เฉพาะแอตทริบิวต์ส่วนตัวที่เป็นประเภทป้ายกำกับ (ได้แก่ ป้ายกำกับหรือรายการป้ายกำกับ) Bazel ส่งต่อค่าที่ได้ซึ่งสอดคล้องกับป้ายกำกับเหล่านี้ไปยังฟังก์ชันการใช้งานของกฎย่อยเป็นอาร์กิวเมนต์ที่มีชื่อโดยอัตโนมัติ (ดังนั้นฟังก์ชันการใช้งานจึงต้องยอมรับพารามิเตอร์ที่มีชื่อซึ่งตรงกับชื่อแอตทริบิวต์) ประเภทของค่าเหล่านี้ได้แก่
|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากตั้งค่าไว้ ชุดเครื่องมือทางเทคนิคที่กฎย่อยนี้กำหนด รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ StarlarkToolchainTypeApi ผสมกันก็ได้ ระบบจะค้นหา Toolchain โดยตรวจสอบแพลตฟอร์มปัจจุบัน และส่งไปยังการใช้งานกฎย่อยผ่าน ctx.toolchains โปรดทราบว่าต้องเปิดใช้ AEG ในกฎที่ใช้หากตั้งค่าพารามิเตอร์นี้ ในกรณีที่ยังไม่ได้ย้ายข้อมูลไปยัง AEG โปรดดู https://bazel.build/extending/auto-exec-groups#migration-aegs
|
fragments
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] ชื่อรายการของข้อมูลโค้ดการกําหนดค่าที่กฎย่อยต้องการในการกําหนดค่าเป้าหมาย |
subrules
|
ลําดับกฎย่อย
ค่าเริ่มต้นคือ [] ลิสต์กฎย่อยอื่นๆ ที่จําเป็นต่อกฎย่อยนี้ |
tag_class
tag_class tag_class(attrs={}, *, doc=None)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
attrs
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมเพื่อประกาศแอตทริบิวต์ทั้งหมดของคลาสแท็กนี้ โดยจะแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) โปรดทราบว่าแอตทริบิวต์ที่ประกาศจะไม่แปลง |
doc
|
string หรือ None
ค่าเริ่มต้นคือ None คําอธิบายของคลาสแท็กที่ดึงข้อมูลได้ด้วยเครื่องมือสร้างเอกสาร |
การเปิดเผย
None
visibility(value)
ตั้งค่าระดับการมองเห็นการโหลดของโมดูล .bzl ที่กําลังเริ่มต้น
ระดับการมองเห็นการโหลดของโมดูลจะกำหนดว่าไฟล์ BUILD และ .bzl อื่นๆ จะโหลดโมดูลนั้นหรือไม่ (การดำเนินการนี้แตกต่างจากระดับการเข้าถึงเป้าหมายของไฟล์ซอร์ส .bzl ที่เกี่ยวข้อง ซึ่งจะควบคุมว่าไฟล์อาจปรากฏเป็นข้อกำหนดของเป้าหมายอื่นๆ หรือไม่) การมองเห็นการโหลดจะทำงานในระดับแพ็กเกจ: หากต้องการโหลดโมดูล ไฟล์ที่ทำการโหลดต้องอยู่ในแพ็กเกจที่ได้รับสิทธิ์เข้าถึงโมดูล โมดูลจะโหลดภายในแพ็กเกจของตัวเองได้เสมอ ไม่ว่าจะมีการแสดงผลหรือไม่ก็ตาม
visibility()
สามารถเรียกใช้ได้เพียงครั้งเดียวต่อไฟล์ .bzl และจะต้องอยู่ที่ระดับบนสุดเท่านั้น โดยต้องไม่อยู่ภายในฟังก์ชัน รูปแบบที่แนะนำคือให้เรียกนี้ด้านล่างคำสั่ง load()
และตรรกะสั้นๆ ที่จำเป็นในการกำหนดอาร์กิวเมนต์
หากตั้งค่าการทำเครื่องหมาย --check_bzl_visibility
เป็น "เท็จ" การละเมิดระดับการมองเห็นโหลดจะแสดงคำเตือน แต่ไม่ทำให้บิลด์ล้มเหลว
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
value
|
ต้องระบุ รายการสตริงข้อมูลจำเพาะของแพ็กเกจหรือสตริงข้อมูลจำเพาะของแพ็กเกจเดียว ข้อกำหนดเฉพาะของแพ็กเกจใช้รูปแบบเดียวกับ
ไม่อนุญาตให้ใช้ไวยากรณ์ "@" ระบบจะตีความข้อกำหนดทั้งหมดตามที่เก็บของโมดูลปัจจุบัน หาก โปรดทราบว่า Flag |