メンバー
- analysis_test_transition
- アスペクト
- configuration_field
- depset
- exec_group
- exec_transition
- macro
- materializer_rule
- module_extension
- プロバイダ
- repository_rule
- rule
- select
- subrule
- tag_class
- visibility
analysis_test_transition
transition analysis_test_transition(*, settings)
 分析テストルールの依存関係に適用される構成の移行を作成します。この移行は、analysis_test = True を含むルールの属性にのみ適用できます。このようなルールは機能が制限されているため(依存関係ツリーのサイズが制限されているなど)、この関数を使用して作成されたトランジションは、transition() を使用して作成されたトランジションと比較して、潜在的なスコープが制限されます。
この関数は、主に Analysis Test Framework コア ライブラリを容易にするために設計されています。ベスト プラクティスについては、ドキュメント(または実装)をご覧ください。
パラメータ
| パラメータ | 説明 | 
|---|---|
| settings | dict;
                                     必須 この構成の移行で設定される構成設定に関する情報を含む辞書。キーはビルド設定ラベルで、値は移行後の新しい値です。その他の設定は変更されません。分析テストに合格するために設定する必要がある特定の構成設定を宣言するために使用します。 | 
アスペクト
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(ターゲットが作成されるルール コンテキスト)の 2 つのみです。ターゲットの属性は ctx.ruleフィールドで取得できます。この関数は、ターゲットへのアスペクトの各適用について、分析フェーズで評価されます。 | 
| attr_aspects | 文字列のシーケンス、または関数。デフォルトは []です。 属性名のリスト、または [試験運用] 属性名のリストを返す関数を受け入れます。アスペクトは、これらの名前のターゲットの属性で指定された依存関係に沿って伝播します。一般的な値には、 depsやexportsなどがあります。リストには、ターゲットのすべての依存関係に沿って伝播する単一の文字列"*"を含めることもできます。 | 
| toolchains_aspects | sequence、または function。デフォルトは []です。ツールチェーン タイプのリスト、または [試験運用版] ツールチェーン タイプのリストを返す関数を受け入れます。アスペクトは、これらのツールチェーン タイプに一致するターゲット ツールチェーンに伝播されます。 | 
| attrs | dict;
                                     デフォルトは {}アスペクトのすべての属性を宣言するディクショナリ。属性名から attr.labelやattr.stringなどの属性オブジェクトにマッピングします(attrモジュールを参照)。アスペクト属性は、ctxパラメータのフィールドとして実装関数で使用できます。
 明示的な属性は  宣言された属性は  | 
| required_providers | sequence; デフォルトは []この属性を使用すると、アスペクトは、ルールで必要なプロバイダがアドバタイズされているターゲットにのみ伝播を制限できます。値は、個々のプロバイダまたはプロバイダのリストのいずれかを含むリストである必要があります。両方を含むことはできません。たとえば、 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]]は無効な値です。ネストされていないプロバイダのリストは、プロバイダのリストを 1 つ含むリストに自動的に変換されます。つまり、 ルール( | 
| required_aspect_providers | sequence;
                                     デフォルトは []この属性により、このアスペクトは他のアスペクトを検査できます。値は、個々のプロバイダまたはプロバイダのリストのいずれかを含むリストである必要があります。両方を含むことはできません。たとえば、 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]は有効な値ですが、[FooInfo, BarInfo, [BazInfo, QuxInfo]]は無効な値です。ネストされていないプロバイダのリストは、プロバイダのリストを 1 つ含むリストに自動的に変換されます。つまり、 別の側面( | 
| 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;
                                     デフォルトは Falsetrue の場合、アスペクトは出力ファイルに適用されると、出力ファイルの生成ルールに適用されます。 たとえば、アスペクトが属性 `deps` を介して推移的に伝播され、ターゲット `alpha` に適用されるとします。`alpha` に `deps = [':beta_output']` があり、`beta_output` がターゲット `beta` の宣言された出力であるとします。`beta` に `deps` の 1 つとしてターゲット `charlie` があるとします。アスペクトの `apply_to_generating_rules=True` の場合、アスペクトは `alpha`、`beta`、`charlie` を介して伝播されます。False の場合、アスペクトは `alpha` にのみ伝播されます。 デフォルトは False です。 | 
| exec_compatible_with | string のシーケンス。デフォルトは []です。 このアスペクトのすべてのインスタンスに適用される実行プラットフォームの制約のリスト。 | 
| exec_groups | dict、または None。デフォルトはNoneです。 実行グループ名(文字列)から exec_groups への辞書。設定されている場合、アスペクトは単一インスタンス内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。 | 
| subrules | Subrule のシーケンス。デフォルトは []です。 試験運用版: このアスペクトで使用されるサブルールのリスト。 | 
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 | string;
                                     必須 構成フラグメントから取得する値の名前。 | 
depset
depset depset(direct=None, order="default", *, transitive=None)
direct パラメータは depset の直接要素のリストで、transitive パラメータは、要素が作成された depset の間接要素になる depset のリストです。deps をリストに変換するときに要素が返される順序は、order パラメータで指定します。詳しくは、Depset の概要をご覧ください。deps のすべての要素(直接および間接)は、式 type(x) で取得される同じ型でなければなりません。
ハッシュベースのセットはイテレーション中に重複を排除するために使用されるため、depset のすべての要素はハッシュ可能である必要があります。ただし、この不変条件は現在、すべてのコンストラクタで一貫してチェックされていません。--incompatible_always_check_depset_elements フラグを使用して一貫したチェックを有効にします。これは将来のリリースでのデフォルトの動作になります。問題 10313 をご覧ください。
また、現時点では要素は不変である必要がありますが、この制限は将来緩和される予定です。
 作成された depset の順序は、その transitive depset の順序と互換性がある必要があります。"default" 順序は他のすべての順序と互換性がありますが、他のすべての順序はそれ自体とのみ互換性があります。
      
パラメータ
| パラメータ | 説明 | 
|---|---|
| direct | sequence、または None。デフォルトはNoneです。 deps の直接要素のリスト。 | 
| order | string; デフォルトは "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 | string のシーケンス。デフォルトは []です。 実行プラットフォームの制約のリスト。 | 
exec_transition
transition exec_transition(*, implementation, inputs, outputs)
transition() の特殊なバージョン。ベスト プラクティスについては、ドキュメント(または実装)をご覧ください。Bazel ビルトインからのみ使用できます。
      パラメータ
| パラメータ | 説明 | 
|---|---|
| implementation | 呼び出し可能。必須 | 
| inputs | 文字列のシーケンス。必須 | 
| outputs | 文字列のシーケンス。必須 | 
マクロ
macro macro(*, implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)
BUILD ファイルまたはマクロ(レガシーまたはシンボリック)で呼び出して、ターゲット(複数可)を定義できるシンボリック マクロを定義します。macro(...) によって返される値は、.bzl ファイルのグローバル変数に割り当てる必要があります。グローバル変数の名前は、マクロ シンボルの名前になります。
シンボリック マクロの使用方法に関する包括的なガイドについては、マクロをご覧ください。
パラメータ
| パラメータ | 説明 | 
|---|---|
| implementation | function;
                                     必須 このマクロを実装する Starlark 関数。マクロの属性の値は、キーワード引数として実装関数に渡されます。実装関数には、少なくとも 2 つの名前付きパラメータ nameとvisibilityが必要です。マクロが属性を継承する場合(下記のinherit_attrsを参照)、**kwargs残余キーワード パラメータが必要です。慣例により、実装関数には、マクロが検査、変更、または「メイン」以外のターゲットに渡す必要がある属性の名前付きパラメータが必要です。一方、「メイン」ターゲットに渡される「一括」継承属性は、変更されずに  実装関数は値を返してはなりません。代わりに、実装関数はルールまたはマクロのシンボルを呼び出してターゲットを宣言します。 シンボリック マクロ(マクロの実装関数が推移的に呼び出す Starlark 関数を含む)によって宣言されたターゲットまたは内部シンボリック マクロの名前は、 デフォルトでは、シンボリック マクロによって宣言されたターゲット(マクロの実装関数が推移的に呼び出す Starlark 関数を含む)は、マクロを定義する .bzl ファイルを含むパッケージでのみ表示されます。シンボリック マクロの呼び出し元を含む、外部に公開されるターゲットを宣言するには、実装関数で  次の API は、マクロ実装関数と、それが推移的に呼び出す Starlark 関数では使用できません。 
 | 
| 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)マテリアライザー ターゲットは、分析時に依存関係を動的に選択するために使用されます。マテリアライザー ターゲットに依存するターゲットには、マテリアライザー ターゲット自体ではなく、マテリアライズされた依存関係が表示されます。
パラメータ
| パラメータ | 説明 | 
|---|---|
| implementation | function;
                                     必須 このマテリアライザー ルールを実装する Starlark 関数。パラメータは ctx の 1 つのみでなければなりません。この関数は、ルールのインスタンスごとに分析フェーズで呼び出されます。Materializer ルールは、別のターゲットの属性にあるこのルールのインスタンスの代わりにマテリアライズする依存関係を指定する MaterializedDepsInfo プロバイダを 1 つだけ返します。 | 
| attrs | dict。デフォルトは {}です。ルールのすべての属性を宣言するディクショナリ。属性名から属性オブジェクトへのマッピングを行います( attrモジュールを参照)。_で始まる属性は非公開で、ラベルへの暗黙的な依存関係を追加するために使用できます。属性nameは暗黙的に追加されるため、指定しないでください。属性visibility、deprecation、tags、testonly、featuresは暗黙的に追加され、オーバーライドできません。ほとんどのルールに必要な属性はごくわずかです。メモリ使用量を制限するため、宣言できる属性の数には上限があります。宣言された属性は  | 
| doc | 文字列、または None。デフォルトはNoneです。 ドキュメント生成ツールで抽出できるルールの説明。 | 
| allow_real_deps | bool; デフォルトは Falseこのマテリアライザー ルールのインスタンスが実際の依存関係(非休止状態の依存関係 / 非 for_dependency_resolution)を持つことを許可するかどうか。許可リストの対象となります。 | 
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)use_extension を使用して MODULE.bazel ファイルでエクスポートして使用できるようにします。
      パラメータ
| パラメータ | 説明 | 
|---|---|
| implementation | callable;
                                     required このモジュール拡張機能を実装する関数。 module_ctxという 1 つのパラメータを取る必要があります。この関数は、ビルドの開始時に 1 回呼び出され、使用可能なリポジトリのセットを決定します。 | 
| tag_classes | dict;
                                     デフォルトは {}拡張機能で使用されるすべてのタグクラスを宣言するディクショナリ。タグクラスの名前から tag_classオブジェクトにマッピングします。 | 
| doc | 文字列、または None。デフォルトはNoneドキュメント生成ツールで抽出できるモジュール拡張機能の説明。 | 
| environ | 文字列のシーケンス。デフォルトは []です。 このモジュール拡張機能が依存する環境変数のリストを指定します。このリストの環境変数が変更されると、拡張機能が再評価されます。 | 
| os_dependent | bool;
                                     デフォルトは Falseこの拡張機能が OS に依存するかどうかを示します。 | 
| arch_dependent | bool;
                                     デフォルトは 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
    ...プロバイダの使用方法に関する包括的なガイドについては、ルール(プロバイダ)をご覧ください。
init が指定されていない場合、Provider 呼び出し可能値を返します。
init が指定されている場合は、2 つの要素のタプル(Provider 呼び出し可能値と raw コンストラクタ呼び出し可能値)を返します。詳しくは、 ルール(カスタム プロバイダのカスタム初期化)と、下記の init パラメータの説明をご覧ください。
      
パラメータ
| パラメータ | 説明 | 
|---|---|
| doc | string、または None。デフォルトはNoneです。 ドキュメント生成ツールで抽出できるプロバイダの説明。 | 
| fields | string の sequence、または 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 このルールを実装する関数。単一のパラメータ 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=[], 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このルールがテストルールであるかどうか、つまり bazel testコマンドの対象となる可能性があるかどうか。すべてのテストルールは自動的に実行可能と見なされます。テストルールにexecutable = Trueを明示的に設定する必要はありません(また、設定することは推奨されません)。デフォルト値はFalseです。詳しくは、 ルールページをご覧ください。 | 
| attrs | dict。デフォルトは {}です。ルールのすべての属性を宣言するディクショナリ。属性名から属性オブジェクトへのマッピングを行います( attrモジュールを参照)。_で始まる属性は非公開で、ラベルへの暗黙的な依存関係を追加するために使用できます。属性nameは暗黙的に追加されるため、指定しないでください。属性visibility、deprecation、tags、testonly、featuresは暗黙的に追加され、オーバーライドできません。ほとんどのルールに必要な属性はごくわずかです。メモリ使用量を制限するため、宣言できる属性の数には上限があります。宣言された属性は  | 
| outputs | dict、 None、function のいずれか。デフォルトはNoneです。 非推奨。このパラメータは非推奨となり、まもなく削除されます。これに依存しないでください。 --incompatible_no_rule_outputs_paramで無効になっています。このフラグを使用して、コードが削除予定の API と互換性があることを確認します。このパラメータは非推奨になりました。代わりに OutputGroupInfoまたはattr.outputを使用するようにルールを移行します。事前宣言された出力を定義するためのスキーマ。 この引数の値は、ディクショナリまたはディクショナリを生成するコールバック関数のいずれかです。コールバックは、計算された依存関係属性と同様に機能します。関数のパラメータ名がルールの属性と照合されます。たとえば、定義  辞書の各エントリは、キーが識別子で、値が出力のラベルを決定する文字列テンプレートである、事前宣言された出力を作成します。ルールの実装関数では、識別子は、 
 実際には、最も一般的な置換プレースホルダは  | 
| executable | bool;
                                     デフォルトは unboundこのルールが実行可能と見なされるかどうか、つまり bazel runコマンドの対象になるかどうか。デフォルトはFalseです。詳しくは、 ルールページをご覧ください。 | 
| output_to_genfiles | bool;
                                     デフォルトは Falsetrue の場合、ファイルは bin ディレクトリではなく genfiles ディレクトリに生成されます。既存のルールとの互換性(C++ のヘッダー ファイルを生成する場合など)のために必要な場合を除き、このフラグを設定しないでください。 | 
| fragments | 文字列のシーケンス。デフォルトは []です。 ルールがターゲット構成で必要とする構成フラグメントの名前のリスト。 | 
| host_fragments | 文字列のシーケンス。デフォルトは []ホスト構成でルールが必要とする構成フラグメントの名前のリスト。 | 
| _skylark_testable | bool; デフォルトは False(試験運用版) true の場合、このルールは Actionsプロバイダを介して、このルールに依存するルールによる検査のためにアクションを公開します。プロバイダは、ctx.created_actions() を呼び出すことでルール自体でも使用できます。これは、Starlark ルールの分析時の動作をテストする場合にのみ使用する必要があります。このフラグは今後削除される可能性があります。 | 
| toolchains | sequence; デフォルトは []設定されている場合、このルールに必要なツールチェーンのセット。リストには、String、Label、StarlarkToolchainTypeApi オブジェクトを任意の組み合わせで含めることができます。ツールチェーンは現在のプラットフォームをチェックすることで見つかり、 ctx.toolchainを介してルール実装に提供されます。 | 
| doc | 文字列、または None。デフォルトはNoneです。 ドキュメント生成ツールで抽出できるルールの説明。 | 
| provides | sequence;
                                     デフォルトは []実装関数が返す必要のあるプロバイダのリスト。 実装関数が、ここに記載されているプロバイダのいずれかの型を戻り値から省略すると、エラーになります。ただし、実装関数は、ここに記載されていない追加のプロバイダを返す場合があります。 リストの各要素は、 | 
| dependency_resolution_rule | bool。デフォルトは Falseです。設定されている場合、ルールは、マテリアライザーで利用可能としてマークされている属性を介して依存関係になる可能性があります。このフラグが設定されたルールのすべての属性は、マテリアライザーでも使用可能としてマークする必要があります。これは、このようにマークされたルールが、このようにマークされていないルールに依存できないようにするためです。 | 
| exec_compatible_with | 文字列のシーケンス。デフォルトは []です。 このルールタイプのすべてのターゲットに適用される実行プラットフォームの制約のリスト。 | 
| analysis_test | bool;
                                     デフォルトは Falsetrue の場合、このルールは分析テストとして扱われます。 注: 分析テストルールは、主にコア Starlark ライブラリで提供されるインフラストラクチャを使用して定義されます。ガイダンスについては、テストをご覧ください。 ルールが分析テストルールとして定義されている場合、その属性で analysis_test_transition を使用して定義された構成遷移を使用できるようになりますが、いくつかの制限が適用されます。 
 | 
| build_setting | BuildSetting、または None。デフォルトはNoneです。 設定されている場合、このルールがどのような build settingであるかを記述します。configモジュールを参照してください。この値を設定すると、このルールに「build_setting_default」という必須属性が自動的に追加されます。この属性の型は、ここで渡された値に対応します。 | 
| cfg | デフォルトは Noneです。 設定されている場合、ルールが分析前に独自の構成に適用する構成の移行を指します。 | 
| exec_groups | dict、または None。デフォルトはNoneです。 実行グループ名(文字列)から exec_groups への辞書。設定されている場合、ルールは単一のターゲット内の複数の実行プラットフォームでアクションを実行できます。詳細については、実行グループのドキュメントをご覧ください。 | 
| initializer | デフォルトは Noneです。 試験運用版: ルールの属性を初期化する Stalark 関数。 この関数は、ルールのインスタンスごとに読み込み時に呼び出されます。 属性名から目的の値へのディクショナリを返す必要があります。返されない属性は影響を受けません。値として  初期化子は、属性定義で指定されたデフォルト値の前に評価されます。したがって、初期化子のシグネチャのパラメータにデフォルト値が含まれている場合、属性定義のデフォルトが上書きされます( 同様に、イニシャライザのシグネチャのパラメータにデフォルトがない場合、そのパラメータは必須になります。このような場合は、属性定義のデフォルト設定や必須設定を省略することをおすすめします。 処理されない属性には  拡張ルールの場合、すべての初期化子は子から祖先へと呼び出されます。各イニシャライザには、認識している公開属性のみが渡されます。 | 
| parent | デフォルトは Noneです。 試験運用版: 拡張される Stalark ルール。設定すると、公開属性とアドバタイズされたプロバイダも統合されます。このルールは、親の executableとtestに一致します。fragments、toolchains、exec_compatible_with、exec_groupsの値が統合されます。以前のパラメータや非推奨のパラメータは設定できない場合があります。このルールの受信構成の後に、親の受信構成の移行cfgが適用されます。 | 
| extendable | bool、ラベル、文字列、 None。デフォルトはNoneです。 試験運用版: このルールを拡張できるルールを定義する許可リストのラベル。また、常に拡張を許可または禁止するために、True / False に設定することもできます。Bazel はデフォルトで拡張機能を常に許可します。 | 
| subrules | Subrule のシーケンス。デフォルトは []です。 試験運用版: このルールで使用されるサブルールのリスト。 | 
選択
unknown select(x, no_match_error='')
select() は、ルール属性を構成可能にするヘルパー関数です。詳しくは、ビルド百科事典をご覧ください。
      パラメータ
| パラメータ | 説明 | 
|---|---|
| x | dict; 必須 構成条件を値にマッピングする辞書。各キーは、config_setting または constraint_value インスタンスを識別する ラベルまたはラベル文字列です。文字列の代わりにラベルを使用するタイミングについては、マクロに関するドキュメントをご覧ください。 --incompatible_resolve_select_keys_eagerlyが有効になっている場合、キーはselectへのこの呼び出しを含むファイルのパッケージを基準としたLabelオブジェクトに解決されます。 | 
| no_match_error | string;
                                     デフォルトは ''条件が一致しない場合に報告するカスタム エラー(省略可)。 | 
subrule
Subrule subrule(*, implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
パラメータ
| パラメータ | 説明 | 
|---|---|
| implementation | function;
                                     必須 このサブルールを実装する Starlark 関数 | 
| attrs | dict; デフォルトは {}サブルールのすべての(プライベート)属性を宣言する辞書。 サブルールには、ラベル型(ラベルまたはラベルリスト)の非公開属性のみを含めることができます。これらのラベルに対応する解決済みの値は、名前付き引数として Bazel によってサブルールの実装関数に自動的に渡されます(したがって、実装関数は属性名と一致する名前付きパラメータを受け入れる必要があります)。これらの値の型は次のようになります。 
 | 
| toolchains | sequence;
                                     デフォルトは []設定されている場合、このサブルールが必要とするツールチェーンのセット。リストには、String、Label、StarlarkToolchainTypeApi オブジェクトを任意の組み合わせで含めることができます。ツールチェーンは現在のプラットフォームをチェックすることで検出され、 ctx.toolchains経由でサブルール実装に提供されます。このパラメータが設定されている場合、使用するルールで AEG を有効にする必要があります。まだ AEG に移行していない場合は、https://bazel.build/extending/auto-exec-groups#migration-aegs をご覧ください。 | 
| fragments | 文字列のシーケンス。デフォルトは []サブルールがターゲット構成で必要とする構成フラグメントの名前のリスト。 | 
| subrules | Subrule の sequence。デフォルトは []です。 このサブルールに必要な他のサブルールのリスト。 | 
tag_class
tag_class tag_class(attrs={}, *, doc=None)
パラメータ
| パラメータ | 説明 | 
|---|---|
| attrs | dict; デフォルトは {}このタグクラスのすべての属性を宣言するディクショナリ。属性名から属性オブジェクトへのマッピングを行います( attr モジュールを参照)。 
 | 
| doc | string、または None。デフォルトはNoneドキュメント生成ツールで抽出できるタグクラスの説明。 | 
visibility
None visibility(value)現在初期化中の .bzl モジュールの読み込みの可視性を設定します。
モジュールの読み込みの可視性は、他の BUILD ファイルと .bzl ファイルがモジュールを読み込めるかどうかを制御します。(これは、基盤となる .bzl ソース ファイルのターゲットの可視性とは異なります。ターゲットの可視性は、ファイルが他のターゲットの依存関係として表示されるかどうかを制御します)。読み込みの可視性はパッケージ レベルで機能します。モジュールを読み込むには、読み込みを行うファイルが、モジュールへの可視性が付与されたパッケージに存在する必要があります。モジュールは、可視性に関係なく、常に独自のパッケージ内で読み込むことができます。
visibility() は .bzl ファイルごとに 1 回のみ、最上位レベルでのみ呼び出すことができます(関数内では呼び出せません)。この呼び出しは、load() ステートメントと引数の決定に必要な簡単なロジックの直下に配置するのが望ましいスタイルです。
フラグ --check_bzl_visibility が false に設定されている場合、読み込みの可視性違反は警告を生成しますが、ビルドは失敗しません。
      
パラメータ
| パラメータ | 説明 | 
|---|---|
| value | 必須 パッケージ仕様文字列のリスト、または単一のパッケージ仕様文字列。 パッケージの仕様は  
 「@」構文は使用できません。すべての仕様は、現在のモジュールのリポジトリを基準として解釈されます。 
 
 |