成員
- analysis_test_transition
- aspect
- configuration_field
- depset
- exec_group
- exec_transition
- 巨集
- materializer_rule
- module_extension
- 供應商
- repository_rule
- 規則
- 選取
- subrule
- tag_class
- 瀏覽權限
analysis_test_transition
transition analysis_test_transition(*, settings)
 建立要套用至分析測試規則依附元件的設定轉換。這項轉換只能套用至含有 analysis_test = True 的規則屬性。這類規則的功能受到限制 (例如,依附元件樹狀結構的大小有限),因此與使用 transition() 建立的轉場效果相比,使用這個函式建立的轉場效果潛在範圍有限。
這項函式主要用於簡化分析測試架構核心程式庫。如需最佳做法,請參閱說明文件 (或實作方式)。
參數
| 參數 | 說明 | 
|---|---|
| settings | dict;
                                     required 這個字典包含設定資訊,這些資訊應由這個設定轉換設定。鍵是建構設定標籤,值則是轉換後的新值。所有其他設定都不會變更。用來宣告分析測試必須設定的特定設定,才能通過測試。 | 
切面
Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], propagation_predicate=None, fragments=[], host_fragments=[], toolchains=[], doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])
參數
| 參數 | 說明 | 
|---|---|
| implementation | function;
                                     必要 實作這個層面的 Starlark 函式,且只有兩個參數:Target (套用層面的目標) 和 ctx (建立目標的規則環境)。目標的屬性可透過 ctx.rule欄位取得。在將某個層面套用至目標的分析階段,系統會評估這個函式。 | 
| attr_aspects | 字串序列;或函式;
                                     預設為 []接受屬性名稱清單,或 [實驗功能] 傳回屬性名稱清單的函式。這個層面會沿著目標屬性中指定的依附元件傳播,常見的值包括 deps和exports。清單也可以包含單一字串"*",沿著目標的所有依附元件傳播。 | 
| toolchains_aspects | 序列;或函式;
                                     預設為 []接受工具鍊類型清單,或 [實驗功能] 傳回工具鍊類型清單的函式。切面會傳播至符合這些工具鍊類型的目標工具鍊。 | 
| attrs | dict;預設為 {}宣告該層面所有屬性的字典。這個對應關係會將屬性名稱對應至屬性物件,例如 attr.label或attr.string(請參閱attr模組)。實作函式可將 Aspect 屬性做為ctx參數的欄位。以  明確屬性必須為  宣告的屬性會將  | 
| required_providers | sequence;
                                     預設為 []這個屬性可讓層面限制其傳播範圍,只傳播至規則會宣傳必要供應商的目標。這個值必須是包含個別供應商或供應商清單的清單,但不得同時包含兩者。舉例來說, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]是有效值,但[FooInfo, BarInfo, [BazInfo, QuxInfo]]無效。系統會自動將未巢狀化的供應商清單,轉換為包含一個供應商清單的清單。也就是說, 如要讓某些規則 (例如  | 
| required_aspect_providers | sequence;
                                     預設值為 []這個屬性可讓這個層面檢查其他層面。這個值必須是包含個別供應商或供應商清單的清單,但不得同時包含兩者。舉例來說, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]是有效值,但[FooInfo, BarInfo, [BazInfo, QuxInfo]]無效。系統會自動將未巢狀化的供應商清單,轉換為包含一個供應商清單的清單。也就是說, 如要讓另一個層面 (例如  | 
| provides | sequence;預設為 []實作函式必須傳回的供應商清單。 如果實作函式從傳回值中省略此處列出的任何類型的供應商,就會發生錯誤。不過,實作函式可能會傳回此處未列出的其他供應商。 清單中的每個元素都是  | 
| requires | Aspect 的sequence;預設為 []這個切面之前必須傳播的切面清單。 | 
| propagation_predicate | function 或 None;預設值為None實驗功能:傳回布林值的函式,指出是否應將層面傳播至目標。 | 
| fragments | 字串的序列;預設值為 []目標設定中,構面所需的設定片段名稱清單。 | 
| host_fragments | 字串的序列;預設值為 []主機設定中,構面要求的設定片段名稱清單。 | 
| toolchains | sequence;
                                     預設為 []如果已設定,則為這個層面所需的一組工具鍊。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,且可任意組合。系統會檢查目前的平台,找出工具鍊,並透過 ctx.toolchain提供給層面實作項目。 | 
| doc | string;或 None;預設為None可由文件生成工具擷取的層面說明。 | 
| apply_to_generating_rules | bool;預設為 False如果為 true,當這個層面套用至輸出檔案時,會改為套用至輸出檔案的產生規則。 舉例來說,假設某個層面透過 `deps` 屬性遞移傳播,並套用至目標 `alpha`。假設 `alpha` 具有 `deps = [':beta_output']`,其中 `beta_output` 是目標 `beta` 的已宣告輸出內容。假設 `beta` 具有目標 `charlie` 做為其中一個 `deps`。如果層面的 `apply_to_generating_rules=True`,則層面會透過 `alpha`、`beta` 和 `charlie` 傳播。如果為 False,則層面只會傳播至 `alpha`。 預設為 False。 | 
| exec_compatible_with | 字串的序列;
                                     預設為 []適用於這個層面所有例項的執行平台限制清單。 | 
| exec_groups | dict;或 None;預設為None。執行群組名稱 (字串) 的 Dict,對應至 exec_groups。如果已設定,可讓構面在單一例項內,對多個執行平台執行動作。詳情請參閱執行群組說明文件。 | 
| 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 | string;必要 包含延遲繫結值的設定片段名稱。 | 
| name | 字串;
                                     必要 要從設定片段取得的值名稱。 | 
depset
depset depset(direct=None, order="default", *, transitive=None)
direct 參數是 depset 的直接元素清單,而 transitive 參數則是 depset 清單,這些 depset 的元素會成為所建立 depset 的間接元素。將 depset 轉換為清單時,傳回元素的順序是由 order 參數指定。詳情請參閱「Depsets 總覽」。
depsset 的所有元素 (直接和間接) 都必須是相同類型,如運算式 type(x) 取得的類型。
由於系統會在疊代期間使用以雜湊為基礎的集合來排除重複項目,因此 depset 的所有元素都應可雜湊。不過,目前並非所有建構函式都會持續檢查這項不變量。使用 --incompatible_always_check_depset_elements 旗標啟用一致性檢查,這將是未來版本的預設行為;請參閱問題 10313。
此外,元素目前必須是不可變動的,但這項限制將在日後放寬。
 建立的 depsets 順序應與 transitive depsets 的順序相容。"default" 訂單可與任何其他訂單合併,其他訂單則只能與自己合併。
                  
      
參數
| 參數 | 說明 | 
|---|---|
| direct | 序列;或 None;
                                     預設為Nonedeps 集合的直接元素清單。 | 
| order | string;預設為 "default"新 deps 集合的遍歷策略。如要查看可能的值,請參閱這裡。 | 
| transitive | depset 的序列;或 None。
                                     預設為Nonedepset 清單,其中的元素會成為 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() 的專用版本,用於定義 exec 轉場效果。如需最佳做法,請參閱說明文件 (或實作方式)。只能從 Bazel 內建項目使用。
                  
      參數
| 參數 | 說明 | 
|---|---|
| implementation | callable;
                                     required | 
| inputs | string 的序列;必要 | 
| outputs | string 的序列;必要 | 
巨集
macro macro(*, implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)
BUILD 檔案或巨集 (舊版或符號) 中呼叫,以定義目標 (可能有多個)。macro(...) 傳回的值必須指派給 .bzl 檔案中的全域變數;全域變數的名稱會是巨集符號的名稱。
如需如何使用符號巨集的完整指南,請參閱「巨集」。
參數
| 參數 | 說明 | 
|---|---|
| implementation | function;
                                     required 實作這個巨集的 Starlark 函式。巨集屬性的值會以關鍵字引數的形式傳遞至實作函式。實作函式至少要有兩個具名參數 ( name和visibility),且如果巨集會繼承屬性 (請參閱下方的inherit_attrs),則必須有**kwargs剩餘關鍵字參數。按照慣例,巨集需要檢查、修改或傳遞至非「主要」目標的任何屬性,實作函式都應為這些屬性提供具名參數,而將傳遞至「主要」目標且不會變更的「大量」繼承屬性,則會以  實作函式不得傳回值。實作函式會呼叫規則或巨集符號,藉此「宣告目標」。 由符號巨集 (包括巨集實作函式遞移呼叫的任何 Starlark 函式) 宣告的任何目標或內部符號巨集名稱,必須等於  根據預設,符號巨集宣告的目標 (包括巨集實作函式遞移呼叫的任何 Starlark 函式) 只會顯示在包含定義巨集的 .bzl 檔案的套件中。如要宣告目標可從外部查看 (包括符號巨集的呼叫端),實作函式必須適當設定  巨集實作函式和它遞移呼叫的任何 Starlark 函式,都無法使用下列 API: 
 | 
| attrs | dict;預設為 {}這個巨集支援的屬性字典,類似於 rule.attrs。鍵是屬性名稱,值則是屬性物件 (例如 attr.label_list(...),請參閱 attr 模組) 或None。None項目表示巨集沒有該名稱的屬性,即使巨集會透過inherit_attrs繼承屬性 (請參閱下文) 也是如此。特別的  名稱開頭為  為限制記憶體用量,可宣告的屬性數量設有上限。 | 
| inherit_attrs | rule;或 macro;或 string;或 None;
                                     預設為None巨集應從中繼承屬性的規則符號、巨集符號,或內建通用屬性清單的名稱 (請參閱下文)。 如果  請注意,如果  繼承機制的運作方式如下: 
 如果繼承非必要屬性,系統會將屬性的預設值覆寫為  舉例來說,下列巨集會從  
def _my_cc_library_impl(name, visibility, tags, **kwargs):
    # Append a tag; tags attr was inherited from native.cc_library, and
    # therefore is None unless explicitly set by the caller of my_cc_library()
    my_tags = (tags or []) + ["my_custom_tag"]
    native.cc_library(
        name = name,
        visibility = visibility,
        tags = my_tags,
        **kwargs
    )
my_cc_library = macro(
    implementation = _my_cc_library_impl,
    inherit_attrs = native.cc_library,
    attrs = {
        "cxxopts": None,
        "copts": attr.string_list(default = ["-D_FOO"]),
    },
)
如果設定  按照慣例,巨集應將未經覆寫的繼承屬性,不變地傳遞至巨集包裝的「主要」規則或巨集符號。一般來說,大多數的繼承屬性在實作函式的參數清單中不會有參數,只會透過  | 
| finalizer | bool;預設值為 False。這個巨集是否為規則最終化工具。無論巨集在 BUILD檔案中的位置為何,系統都會在套件載入完成後評估巨集,也就是在定義所有非最終化工具目標之後。與一般符號巨集不同,規則終結器可以呼叫  | 
| doc | string;或 None;預設為None可由說明文件產生工具擷取的巨集說明。 | 
materializer_rule
callable materializer_rule(*, implementation, attrs={}, doc=None, allow_real_deps=False)Materializer 目標用於在分析時動態選取依附元件。依附於具體化目標的目標會看到具體化的依附元件,而不是具體化目標本身。
參數
| 參數 | 說明 | 
|---|---|
| implementation | function;
                                     必要 實作這項具體化規則的 Starlark 函式。這個函式必須只有一個參數:ctx。系統會在分析階段,針對規則的每個例項呼叫這個函式。Materializer 規則會傳回正好一個 MaterializedDepsInfo 提供者,指定要取代另一個目標屬性中這個規則任何例項的依附元件。 | 
| attrs | dict;預設為 {}用來宣告規則所有屬性的字典。這個對應關係會從屬性名稱對應至屬性物件 (請參閱 attr模組)。以_開頭的屬性為私有屬性,可用於新增標籤的隱含依附元件。系統會隱含新增name屬性,因此不得指定。系統會隱含新增visibility、deprecation、tags、testonly和features屬性,且無法覆寫。大多數規則只需要少數屬性。為限制記憶體用量,可宣告的屬性數量設有上限。宣告的屬性會將  | 
| doc | string;或 None;預設為None可由文件生成工具擷取的規則說明。 | 
| allow_real_deps | bool;
                                     default is FalseWhether to allow instances of this materializer rule to have real dependencies (non-dormant deps / non-for_dependency_resolution). 須加入許可清單。 | 
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)use_extension。
                  
      參數
| 參數 | 說明 | 
|---|---|
| implementation | 可呼叫;
                                     必要 實作這個模組擴充功能的函式。必須採用單一參數 module_ctx。系統會在建構開始時呼叫一次函式,判斷可用的 repo 集合。 | 
| tag_classes | dict;預設為 {}用來宣告擴充功能所用所有標記類別的字典。這個對應關係會從標記類別名稱對應到 tag_class物件。 | 
| doc | string;或 None;預設為None。模組擴充功能的說明,可由文件產生工具擷取。 | 
| environ | 字串的序列;預設為 []提供這個模組擴充功能依附的環境變數清單。如果該清單中的環境變數有所變更,系統會重新評估擴充功能。 | 
| os_dependent | bool;預設值為 False指出這個擴充功能是否與 OS 相依 | 
| arch_dependent | bool;預設值為 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
    ...如需供應器使用方式的完整指南,請參閱「規則 (供應器)」。
如未指定 init,則傳回 Provider 可呼叫值。
如果指定 init,則會傳回 2 個元素的元組:Provider 可呼叫值和原始建構函式可呼叫值。詳情請參閱「 規則 (自訂供應商的自訂初始化)」和下方的 init 參數討論。
                  
      
參數
| 參數 | 說明 | 
|---|---|
| doc | string;或 None;預設為None可由文件產生工具擷取的提供者說明。 | 
| fields | 字串的序列;或 dict;或 None;
                                     預設為None如果指定,則會限制允許的欄位集。 可能的值包括: 
 | 
| init | 可呼叫項目;或 None;
                                     預設為None可選的回呼,用於在例項化期間預先處理及驗證供應商的欄位值。如果指定 init,provider()會傳回 2 個元素的元組:一般提供者符號和原始建構函式。下文將詳細說明;如需直覺式討論和使用案例,請參閱「規則 (自訂供應商初始化)」。 假設  
 init回呼,則對符號P本身的呼叫,會做為對預設建構函式c的呼叫;換句話說,P(*args, **kwargs)會傳回c(*args, **kwargs)。例如:MyInfo = provider() m = MyInfo(foo = 1) m設為具有m.foo == 1的MyInfo例項。但如果指定  
 注意:上述步驟表示,如果  這樣一來, 指定  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 the function that implements this rule. 必須具備單一參數 repository_ctx。系統會在規則的每個例項載入階段呼叫這個函式。 | 
| attrs | dict;或 None;預設為None。用來宣告存放區規則所有屬性的字典。這個對應關係會從屬性名稱對應至屬性物件 (請參閱 attr模組)。開頭為_的屬性是私有屬性,可用於在檔案中新增對標籤的隱含依附元件 (存放區規則無法依附於產生的構件)。系統會隱含新增name屬性,因此不得指定。宣告的屬性會將  | 
| local | bool;預設值為 False表示這項規則會從本機系統擷取所有內容,且每次擷取時都應重新評估。 | 
| environ | string 的 sequence;預設為 []已淘汰。此參數已淘汰。請改用 repository_ctx.getenv。提供這個存放區規則依附的環境變數清單。如果該清單中的環境變數有所變更,系統會重新擷取存放區。 | 
| configure | bool;預設值為 False指出存放區會檢查系統是否用於設定 | 
| remotable | bool;預設為 False實驗功能。這項參數仍在實驗階段,因此隨時可能變動。因此請勿依賴這項功能。您可以設定 --experimental_repo_remote_execCompatible with remote execution | 
| 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=[], 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 | 函式;
                                     必要 實作這項規則的 Starlark 函式,必須只有一個參數:ctx。系統會在分析階段針對規則的每個例項呼叫函式。並存取使用者提供的屬性。它必須建立動作,以產生所有已宣告的輸出內容。 | 
| test | bool;預設值為 unbound。這項規則是否為測試規則,也就是是否可能成為 bazel 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遷移規則。用於定義預先宣告輸出的結構定義。與  這個引數的值可以是字典,也可以是產生字典的回呼函式。回呼的運作方式與計算的依附屬性類似:系統會比對函式的參數名稱與規則的屬性,因此舉例來說,如果您傳遞定義為  字典中的每個項目都會建立預先宣告的輸出內容,其中鍵是 ID,值則是決定輸出內容標籤的字串範本。在規則的實作函式中,這個 ID 會成為欄位名稱,用於存取  
 在實務上,最常見的替代預留位置是  | 
| executable | bool;預設值為 unbound這項規則是否視為可執行,也就是是否可能成為 bazel run指令的主體。預設值為False。詳情請參閱 規則頁面。 | 
| output_to_genfiles | bool;預設為 False如果為 true,檔案會產生在 genfiles 目錄中,而非 bin 目錄。除非您需要與現有規則相容 (例如為 C++ 產生標頭檔案),否則請勿設定這個標記。 | 
| fragments | 字串的序列;
                                     預設值為 []規則在目標設定中需要的設定片段名稱清單。 | 
| host_fragments | 字串序列;預設值為 []。規則在主機設定中需要的設定片段名稱清單。 | 
| _skylark_testable | bool;預設為 False(實驗功能) 如果為 true,這項規則會透過 Actions提供者公開其動作,供依附於該規則的規則檢查。呼叫 ctx.created_actions() 時,規則本身也會提供這個供應器。這項功能僅適用於測試 Starlark 規則的分析時間行為。這項標記日後可能會移除。 | 
| toolchains | sequence;
                                     預設為 []如果已設定,這項規則需要一組工具鍊。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,且可任意組合。系統會檢查目前的平台,並透過 ctx.toolchain將工具鍊提供給規則實作。 | 
| doc | string;或 None;預設為None可由文件生成工具擷取的規則說明。 | 
| provides | sequence;預設為 []實作函式必須傳回的供應商清單。 如果實作函式從傳回值中省略此處列出的任何類型的供應商,就會發生錯誤。不過,實作函式可能會傳回此處未列出的其他供應商。 清單中的每個元素都是  | 
| dependency_resolution_rule | bool;
                                     預設值為 False如果設定此屬性,規則可以透過屬性成為依附元件,這些屬性也會在實體化工具中標示為可用。如果規則的屬性設定了這個旗標,也必須在實體化工具中標示為可用。這樣標示的規則就無法依附於未標示的規則。 | 
| exec_compatible_with | 字串的序列;
                                     預設為 []執行平台上的限制清單,適用於這個規則類型的所有目標。 | 
| analysis_test | bool;預設為 False如果為 true,這項規則會視為分析測試。 注意:分析測試規則主要使用核心 Starlark 程式庫提供的基礎架構定義。如需相關指南,請參閱「測試」。 如果規則定義為分析測試規則,就可以在屬性上使用 analysis_test_transition 定義的設定轉換,但會受到一些限制: 
 | 
| build_setting | BuildSetting;或 None;
                                     預設值為None如果已設定,則說明這項規則的 build setting類型。請參閱config模組。如果設定此值,系統會自動將名為「build_setting_default」的必要屬性新增至這項規則,並根據這裡傳遞的值設定對應類型。 | 
| cfg | 預設值為 None如果已設定,則指向規則將套用至自身設定的設定轉換,然後再進行分析。 | 
| exec_groups | dict;或 None;預設為None。執行群組名稱 (字串) 的 Dict,對應至 exec_groups。如果設定此項,規則就能在單一目標內的多個執行平台執行動作。詳情請參閱執行群組說明文件。 | 
| 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 | sequence of Subrules;
                                     default is []Experimental: List of subrules used by this rule. | 
選取
unknown select(x, no_match_error='')
select() 是輔助函式,可讓規則屬性設定。詳情請參閱建構百科全書。
                  
      參數
| 參數 | 說明 | 
|---|---|
| x | dict;
                                     required 將設定條件對應至值的字典。每個鍵都是 Label 或標籤字串,用於識別 config_setting 或 constraint_value 例項。如要瞭解何時應使用標籤而非字串,請參閱巨集說明文件。如果啟用 --incompatible_resolve_select_keys_eagerly,系統會將鍵解析為Label物件,與包含此select呼叫的檔案套件相關。 | 
| no_match_error | string;預設值為 ''如果沒有相符的條件,則回報選用的自訂錯誤。 | 
子規則
Subrule subrule(*, implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
參數
| 參數 | 說明 | 
|---|---|
| implementation | 函式;
                                     必要 實作這個子規則的 Starlark 函式 | 
| attrs | dict;預設為 {}用來宣告子規則所有 (私有) 屬性的字典。 子規則只能有標籤型別 (即標籤或標籤清單) 的私人屬性。Bazel 會自動將這些標籤對應的已解析值,以具名引數的形式傳遞至子規則的實作函式 (因此實作函式必須接受與屬性名稱相符的具名參數)。這些值的類型如下: 
 | 
| toolchains | sequence;
                                     預設為 []如果已設定,這個子規則需要的一組工具鍊。清單可包含 String、Label 或 StarlarkToolchainTypeApi 物件,且可任意組合。系統會檢查目前的平台,找出工具鍊,並透過 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 來源檔案的目標瀏覽權限不同,後者控管檔案是否可做為其他目標的依附元件)。載入可見度適用於套件層級:如要載入模組,執行載入作業的檔案必須位於已獲授權可見該模組的套件中。無論模組的可見性為何,一律可在自己的套件中載入。
每個 .bzl 檔案只能呼叫 visibility() 一次,且只能在頂層呼叫,不能在函式內呼叫。建議將這項呼叫放在 load() 陳述式下方,以及判斷引數所需的任何簡短邏輯。
如果將 --check_bzl_visibility 標記設為 false,載入可見度違規事項會發出警告,但不會導致建構作業失敗。
                  
      
參數
| 參數 | 說明 | 
|---|---|
| value | 必要 套件規格字串清單或單一套件規格字串。 套件規格的格式與  
 不允許使用「@」語法,所有規格都會根據目前模組的存放區進行解讀。 如果  請注意,旗標  |