เมธอดส่วนกลางที่ใช้ได้ในไฟล์ .bzl ทั้งหมด
สมาชิก
- analysis_test_transition
- aspect
- configuration_field
- depset
- exec_group
- exec_transition
- module_extension
- provider
- repository_rule
- rule
- select
- 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=[])สร้างแง่มุมใหม่ ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในค่าร่วม โปรดดูรายละเอียดเพิ่มเติมในข้อมูลเบื้องต้นเกี่ยวกับ Aspects
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
ต้องระบุ ฟังก์ชัน Starlark ที่ใช้แง่มุมนี้ โดยมีพารามิเตอร์ 2 รายการ ได้แก่ Target (เป้าหมายที่จะใช้แง่มุม) และ ctx (บริบทกฎที่สร้างเป้าหมาย) แอตทริบิวต์ของเป้าหมายจะแสดงผ่านช่อง ctx.rule ฟังก์ชันนี้จะได้รับการประเมินในช่วงการวิเคราะห์สำหรับการใช้งานแต่ละครั้งกับเป้าหมาย
|
attr_aspects
|
sequence ของ strings
ค่าเริ่มต้นคือ [] รายการชื่อแอตทริบิวต์ โดยแง่มุมจะเผยแพร่ไปตามข้อกําหนดซึ่งระบุไว้ในแอตทริบิวต์ของเป้าหมายที่มีชื่อเหล่านี้ ค่าที่พบบ่อยที่นี่ ได้แก่ deps และ exports รายการนี้อาจมีสตริง "*" รายการเดียวเพื่อนำไปใช้กับรายการที่เกี่ยวข้องทั้งหมดของเป้าหมาย
|
toolchains_aspects
|
sequence
ค่าเริ่มต้นคือ [] รายการประเภท Toolchain ข้อมูลพร็อพเพอร์ตี้จะนำไปใช้กับเครื่องมือทางเทคนิคเป้าหมายที่ตรงกับประเภทเครื่องมือทางเทคนิคเหล่านี้ |
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 ที่ส่วนนี้ต้องการ รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ StarlarkToolchainTypeApi ผสมกันก็ได้ เครื่องมือจะพบได้โดยการดูแพลตฟอร์มปัจจุบัน และส่งไปยังการใช้งานแอสเปคผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
bool;
default is False เลิกใช้งานแล้ว ไม่ควรนำมาใช้อีกต่อไป |
doc
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายแง่มุมที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้ |
apply_to_generating_rules
|
bool;
ค่าเริ่มต้นคือ False หากเป็น "จริง" เมื่อใช้กับไฟล์เอาต์พุต แอตทริบิวต์จะมีผลกับกฎการสร้างของไฟล์เอาต์พุตแทน ตัวอย่างเช่น สมมติว่าแง่มุมหนึ่งเผยแพร่ผ่านแอตทริบิวต์ "deps" โดยผ่านแอตทริบิวต์ "deps" และนำไปใช้ในการกำหนดเป้าหมาย "อัลฟ่า" สมมติว่าแง่มุมหนึ่งเผยแพร่ผ่านแอตทริบิวต์ "deps" โดยผ่านแอตทริบิวต์ "deps" และถูกนำไปใช้เพื่อกำหนดเป้าหมาย "อัลฟ่า" สมมติว่าข้อเสนอ "อัลฟ่า" มีการเผยแพร่ผ่านแอตทริบิวต์ "deps" โดยส่งผ่านแอตทริบิวต์ "deps" และแสดงสมมติว่า "อัลฟา" มี "อัลฟา" มี "deps = [':เบต้า_เอาต์พุต']` โดยที่ "เบต้า_เอาต์พุต" จะส่งต่อผ่านแอตทริบิวต์ "deps" และนำมาใช้กับการกำหนดเป้าหมาย "อัลฟ่า" สมมติว่า "อัลฟา" มี "อัลฟา" มี "deps = [':เบต้า_เอาต์พุต']` โดยที่ "เบต้า_เอาต์พุต" ผ่านแอตทริบิวต์ "เดป" และนำมาใช้กับการกำหนดเป้าหมาย "อัลฟ่า" สมมติว่า "อัลฟ่า" มี "อัลฟ่า" สมมติว่า "อัลฟา" มี "deps = [':เบต้า_เอาต์พุต']` โดยที่ "เบต้า_เอาต์พุต" เป็นเอาต์พุตที่ประกาศของเป้าหมาย "เบต้า" สมมติว่า "เบต้า" สมมติว่า "เบต้า" มี "เบต้า" ที่บรรลุ "บททดสอบ เท็จโดยค่าเริ่มต้น |
exec_compatible_with
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] นี่คือรายการข้อจํากัดในแพลตฟอร์มการดําเนินการที่มีผลกับอินสแตนซ์ทั้งหมดของด้านนี้ |
exec_groups
|
dict หรือ None
ค่าเริ่มต้นคือ None Dict ของชื่อกลุ่มการดําเนินการ (สตริง) เป็น 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
|
string;
required ชื่อของค่าที่จะรับจากส่วนย่อยการกำหนดค่า |
Depset
depset depset(direct=None, order="default", *, transitive=None)สร้าง depset พารามิเตอร์
direct
คือรายการองค์ประกอบโดยตรงของชุดข้อมูล ที่พารามิเตอร์ transitive
คือรายการชุดข้อมูลที่มีองค์ประกอบกลายเป็นองค์ประกอบโดยอ้อมของชุดข้อมูลที่สร้างขึ้น ลำดับที่ระบบจะแสดงองค์ประกอบเมื่อแปลงชุดข้อมูล Dependency เป็นลิสต์จะระบุโดยพารามิเตอร์ order
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ Depset
องค์ประกอบทั้งหมด (ทั้งโดยตรงและโดยอ้อม) ของชุดข้อมูล Dependency ต้องเป็นประเภทเดียวกันตามที่ได้จากนิพจน์ type(x)
เนื่องจากชุดที่อิงตามแฮชใช้เพื่อกำจัดรายการที่ซ้ำกันระหว่างการทำซ้ำ องค์ประกอบทั้งหมดของ depset จึงควรเป็นแฮชได้ อย่างไรก็ตาม ปัจจุบันยังไม่มีการตรวจสอบค่าคงที่นี้อย่างสม่ำเสมอในคอนสตรัคเตอร์ทั้งหมด ใช้แฟล็ก --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน ซึ่งจะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ ขณะนี้องค์ประกอบต้องเป็นแบบคงที่ แต่เราจะผ่อนปรนข้อจำกัดนี้ในอนาคต
ลําดับของ depset ที่สร้างขึ้นควรเข้ากันได้กับลําดับของ depset transitive
คำสั่งซื้อ "default"
ใช้ได้กับคำสั่งซื้ออื่นๆ ส่วนคำสั่งซื้ออื่นๆ ทั้งหมดจะใช้งานได้เฉพาะกับคำสั่งซื้อของตัวเองเท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
sequence หรือ None
ค่าเริ่มต้นคือ None ซึ่งเป็นรายการองค์ประกอบ direct ของ depset |
order
|
สตริง;
ค่าเริ่มต้นคือ "default" กลยุทธ์การเรียกดูชุดข้อมูลใหม่ ดูค่าที่เป็นไปได้ได้ที่นี่ |
transitive
|
sequence ของ depset หรือ None ;
ค่าเริ่มต้นคือ None รายการของ Depset ที่มีเอลิเมนต์ที่จะกลายเป็นองค์ประกอบโดยอ้อมของ Depset |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])สร้างกลุ่มการดำเนินการที่ใช้สร้างการดำเนินการสำหรับแพลตฟอร์มการดำเนินการที่เจาะจงได้ในระหว่างการใช้กฎ
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] ชุดเครื่องมือทางเทคนิคที่กลุ่มการดำเนินการนี้ต้องใช้ รายการอาจมีออบเจ็กต์ String, Label หรือ StarlarkToolchainTypeApi ผสมผสานกันอย่างไรก็ได้ |
exec_compatible_with
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] นี่คือรายการข้อจํากัดในแพลตฟอร์มการดําเนินการ |
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition()
เวอร์ชันพิเศษที่ใช้กำหนดการเปลี่ยนผู้บริหาร ดูแนวทางปฏิบัติแนะนำได้ในเอกสารประกอบ (หรือการใช้งาน) ใช้ได้จาก Bazel ในตัวเท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
สามารถโทรได้
ต้องระบุ |
inputs
|
ลําดับสตริง
ต้องระบุ |
outputs
|
ลําดับสตริง
ต้องระบุ |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)สร้างส่วนขยายโมดูลใหม่ จัดเก็บไว้ในค่าส่วนกลางเพื่อให้ส่งออกและใช้ในไฟล์ MODULE.bazel กับ
use_extension
ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
callable;
required ฟังก์ชันที่ใช้ส่วนขยายโมดูลนี้ ต้องรับพารามิเตอร์เดียว module_ctx ระบบจะเรียกใช้ฟังก์ชันนี้ 1 ครั้งในช่วงเริ่มต้นของการสร้างเพื่อระบุชุดที่เก็บที่มีอยู่
|
tag_classes
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมเพื่อประกาศคลาสแท็กทั้งหมดที่ใช้โดยส่วนขยาย โดยแมปจากชื่อคลาสแท็กไปยังออบเจ็กต์ tag_class
|
doc
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายส่วนขยายของโมดูลที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้ |
environ
|
ลําดับสตริง
ค่าเริ่มต้นคือ [] ให้รายการตัวแปรสภาพแวดล้อมที่ส่วนขยายโมดูลนี้ใช้ หากตัวแปรสภาพแวดล้อมในรายการมีการเปลี่ยนแปลง ระบบจะประเมินส่วนขยายอีกครั้ง |
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
|
string หรือ None
ค่าเริ่มต้นคือ None คำอธิบายของผู้ให้บริการที่ดึงข้อมูลได้ด้วยเครื่องมือสร้างเอกสาร |
fields
|
ลําดับของ สตริง หรือ dict หรือ None
ค่าเริ่มต้นคือ None หากระบุ จะจํากัดชุดช่องที่อนุญาต ค่าที่เป็นไปได้มีดังนี้
|
init
|
callable หรือ None
ค่าเริ่มต้นคือ None การเรียกกลับที่ไม่บังคับสําหรับการประมวลผลก่อนการทํางานและตรวจสอบค่าช่องของผู้ให้บริการระหว่างการสร้างอินสแตนซ์ หากระบุ 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=[])สร้างกฎใหม่ที่สามารถเรียกใช้จากไฟล์ BUILD หรือมาโครเพื่อสร้างเป้าหมาย
คุณต้องกําหนดกฎให้กับตัวแปรส่วนกลางในไฟล์ .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 ใช้ธงนี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนำโค้ดที่กำลังจะเกิดขึ้นในเร็วๆ นี้ เลิกใช้งานพารามิเตอร์นี้แล้ว ย้ายข้อมูลกฎเพื่อใช้ OutputGroupInfo หรือ attr.output แทน สคีมาสําหรับกําหนดเอาต์พุตที่ประกาศไว้ล่วงหน้า ผู้ใช้ไม่ได้ระบุป้ายกำกับสำหรับไฟล์เหล่านี้ ซึ่งแตกต่างจากแอตทริบิวต์ ค่าของอาร์กิวเมนต์นี้คือพจนานุกรมหรือฟังก์ชัน Callback ที่สร้างพจนานุกรม ฟังก์ชัน Callback ทํางานคล้ายกับแอตทริบิวต์ความเกี่ยวข้องที่คำนวณแล้ว โดยระบบจะจับคู่ชื่อพารามิเตอร์ของฟังก์ชันกับแอตทริบิวต์ของกฎ เช่น หากคุณส่ง รายการแต่ละรายการในพจนานุกรมจะสร้างเอาต์พุตที่ประกาศไว้ล่วงหน้า โดยที่คีย์เป็นตัวระบุและค่าคือเทมเพลตสตริงที่กำหนดป้ายกำกับของเอาต์พุต ในฟังก์ชันการใช้งานของกฎ ตัวระบุจะกลายเป็นชื่อช่องที่ใช้เข้าถึง
ในทางปฏิบัติ ตัวยึดตําแหน่งการแทนที่ที่ใช้กันมากที่สุดคือ |
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 ที่กฎนี้ต้องใช้ รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ StarlarkToolchainTypeApi ผสมกันก็ได้ ระบบจะค้นหา Toolchain โดยตรวจสอบแพลตฟอร์มปัจจุบัน และส่งไปยังการใช้งานกฎผ่าน ctx.toolchain
|
incompatible_use_toolchain_transition
|
bool;
default is False เลิกใช้งานแล้ว ไม่ควรนำมาใช้อีกต่อไป |
doc
|
สตริง หรือ 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 คำสั่งสำหรับชื่อกลุ่มการดำเนินการ (สตริง) เป็น 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 การทดลอง: ป้ายกำกับของรายการที่อนุญาตซึ่งกําหนดว่ากฎใดสามารถขยายกฎนี้ได้ และยังตั้งค่าเป็น "จริง/เท็จ" เพื่ออนุญาต/ไม่อนุญาตให้ขยายเสมอได้อีกด้วย โดยค่าเริ่มต้น Bazel จะอนุญาตส่วนขยายเสมอ |
subrules
|
ลําดับกฎย่อย
ค่าเริ่มต้นคือ [] การทดลอง: รายการกฎย่อยที่กฎนี้ใช้ |
เลือก
unknown select(x, no_match_error='')
select()
คือฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์กฎกําหนดค่าได้ ดูรายละเอียดได้ที่สร้างสารานุกรม
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
dict;
ต้องระบุ คำสั่งที่แมปเงื่อนไขการกำหนดค่ากับค่า คีย์แต่ละรายการคือป้ายกํากับหรือสตริงป้ายกํากับที่ระบุอินสแตนซ์ config_setting หรือ constraint_value ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูกรณีที่ควรใช้ป้ายกํากับแทนสตริง |
no_match_error
|
สตริง
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กำหนดเองซึ่งไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขที่ตรงกัน |
กฎย่อย
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])สร้างอินสแตนซ์ใหม่ของกฎย่อย ผลลัพธ์ของฟังก์ชันนี้ต้องจัดเก็บในตัวแปรร่วมก่อนจึงจะใช้งานได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
implementation
|
function;
ต้องระบุ ฟังก์ชัน Starlark ที่ใช้งานกฎย่อยนี้ |
attrs
|
dict;
ค่าเริ่มต้นคือ {} คําจํานวนมาเพื่อประกาศแอตทริบิวต์ (ส่วนตัว) ทั้งหมดของกฎย่อย กฎย่อยอาจมีได้เฉพาะแอตทริบิวต์ส่วนตัวที่เป็นประเภทป้ายกำกับ (เช่น ป้ายกำกับหรือรายการป้ายกำกับ) Bazel จะส่งค่าที่แก้ไขแล้วซึ่งสอดคล้องกับป้ายกำกับเหล่านี้ไปยังฟังก์ชันการใช้งานของกฎย่อยโดยอัตโนมัติในรูปแบบอาร์กิวเมนต์ที่มีชื่อ (ดังนั้นฟังก์ชันการใช้งานจึงต้องยอมรับพารามิเตอร์ที่มีชื่อซึ่งตรงกับชื่อแอตทริบิวต์) ประเภทของค่าเหล่านี้จะเป็นดังนี้
|
toolchains
|
sequence;
ค่าเริ่มต้นคือ [] หากมีการตั้งค่า ชุดของ Toolchain ที่กฎย่อยนี้ต้องใช้ รายการอาจมีออบเจ็กต์สตริง ป้ายกำกับ หรือ 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)สร้างออบเจ็กต์ tag_class ใหม่ ซึ่งกําหนดสคีมาแอตทริบิวต์สําหรับคลาสของแท็ก ซึ่งเป็นออบเจ็กต์ข้อมูลที่ส่วนขยายของโมดูลใช้ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
attrs
|
dict;
ค่าเริ่มต้นคือ {} คําจํานวนเงินเพื่อประกาศแอตทริบิวต์ทั้งหมดของคลาสแท็กนี้ โดยจะแมปจากชื่อแอตทริบิวต์ไปยังออบเจ็กต์แอตทริบิวต์ (ดูโมดูล attr) โปรดทราบว่าแอตทริบิวต์ที่ประกาศจะไม่แปลง |
doc
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายคลาสแท็กที่เครื่องมือสร้างเอกสารประกอบสามารถดึงข้อมูลได้ |
การเปิดเผย
None
visibility(value)
ตั้งค่าระดับการมองเห็นการโหลดของโมดูล .bzl ที่กําลังเริ่มต้น
ระดับการมองเห็นการโหลดของโมดูลจะกำหนดว่าไฟล์ BUILD และ .bzl อื่นๆ จะโหลดโมดูลนั้นหรือไม่ (ซึ่งแตกต่างจากการเปิดเผยเป้าหมายของไฟล์ต้นฉบับ .bzl ที่เกี่ยวข้อง ซึ่งควบคุมว่าไฟล์ดังกล่าวอาจปรากฏเป็นทรัพยากร Dependency ของเป้าหมายอื่นๆ หรือไม่) การมองเห็นการโหลดจะทำงานในระดับแพ็กเกจ: หากต้องการโหลดโมดูล ไฟล์ที่ทำการโหลดต้องอยู่ในแพ็กเกจที่ได้รับสิทธิ์เข้าถึงโมดูล คุณสามารถโหลดโมดูลภายในแพ็กเกจของตนเองได้เสมอ โดยไม่คำนึงถึงระดับการมองเห็น
visibility()
สามารถเรียกใช้ได้เพียงครั้งเดียวต่อไฟล์ .bzl และจะต้องอยู่ที่ระดับบนสุดเท่านั้น โดยต้องไม่อยู่ภายในฟังก์ชัน รูปแบบที่แนะนำคือให้เรียกนี้ด้านล่างคำสั่ง load()
และตรรกะสั้นๆ ที่จำเป็นในการกำหนดอาร์กิวเมนต์
หากตั้งค่าการทำเครื่องหมาย --check_bzl_visibility
เป็น "เท็จ" การละเมิดระดับการมองเห็นโหลดจะแสดงคำเตือน แต่ไม่ทำให้บิลด์ล้มเหลว
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
value
|
ต้องระบุ รายการสตริงข้อมูลจำเพาะของแพ็กเกจหรือสตริงข้อมูลจำเพาะของแพ็กเกจเดียว ข้อกำหนดเฉพาะของแพ็กเกจใช้รูปแบบเดียวกับ
ไม่อนุญาตให้ใช้ไวยากรณ์ "@" ระบบจะตีความข้อกำหนดทั้งหมดตามที่เก็บของโมดูลปัจจุบัน หาก โปรดทราบว่า Flag |