Toàn cầu

Các đối tượng, hàm và mô-đun được đăng ký trong môi trường toàn cầu.

Hội viên

tất cả

bool all(elements)

Trả về true nếu tất cả phần tử được đánh giá là True hoặc nếu bộ sưu tập trống. Các phần tử được chuyển đổi thành boolean bằng hàm bool.
all(["hello", 3, True]) == True
all([-1, 0, 1]) == False

Thông số

Thông số Nội dung mô tả
elements bắt buộc
Một chuỗi hoặc một tập hợp các phần tử.

analysis_test_transition

transition analysis_test_transition(settings)

Tạo hiệu ứng chuyển đổi cấu hình được áp dụng cho các phần phụ thuộc của quy tắc kiểm thử phân tích. Việc chuyển đổi này chỉ có thể áp dụng cho các thuộc tính của quy tắc có analysis_test = True. Các quy tắc đó bị hạn chế về khả năng (ví dụ: kích thước của cây phần phụ thuộc bị giới hạn), vì vậy, các lượt chuyển đổi được tạo bằng hàm này bị giới hạn trong phạm vi tiềm năng so với các lượt chuyển đổi được tạo bằng tính năng chuyển đổi.

Chức năng này chủ yếu được thiết kế để hỗ trợ thư viện cốt lõi Khung kiểm thử phân tích. Hãy xem tài liệu (hoặc cách triển khai) tương ứng để biết các phương pháp hay nhất.

Thông số

Thông số Nội dung mô tả
settings bắt buộc
Từ điển chứa thông tin về các chế độ cài đặt cấu hình cần được thiết lập trong quá trình chuyển đổi cấu hình này. Các khoá là nhãn cài đặt bản dựng và các giá trị là các giá trị mới sau khi chuyển đổi. Mọi chế độ cài đặt khác đều không thay đổi. Sử dụng mục này để khai báo các chế độ cài đặt cấu hình cụ thể mà quy trình kiểm thử phân tích yêu cầu phải thiết lập để đạt.

Bất kỳ

bool any(elements)

Trả về true nếu ít nhất một phần tử được đánh giá là True. Các phần tử được chuyển đổi thành boolean bằng hàm bool.
any([-1, 0, 1]) == True
any([False, 0, ""]) == False

Thông số

Thông số Nội dung mô tả
elements bắt buộc
Một chuỗi hoặc một tập hợp các phần tử.

archive_override

None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)

Chỉ định rằng phần phụ thuộc này phải đến từ một tệp lưu trữ (zip, gzip, v.v.) tại một vị trí nhất định, thay vì từ sổ đăng ký. Lệnh này chỉ có hiệu lực trong mô-đun gốc. Nói cách khác, nếu một mô-đun được người khác sử dụng làm phần phụ thuộc, thì các cơ chế ghi đè của chính mô-đun đó sẽ bị bỏ qua.

Thông số

Thông số Nội dung mô tả
module_name bắt buộc
Tên của phần phụ thuộc mô-đun Bazel để áp dụng chế độ ghi đè này.
urls string; or Iterable of strings; bắt buộc
URL của bản lưu trữ; có thể là URL http(s):// hoặc file://.
integrity mặc định = ''
Giá trị tổng kiểm dự kiến của tệp lưu trữ, ở định dạng Tính toàn vẹn của tài nguyên phụ.
strip_prefix default = ''
Một tiền tố thư mục để xoá khỏi các tệp đã trích xuất.
patches Iterable of strings; default = []
Danh sách các nhãn trỏ đến tệp bản vá áp dụng cho mô-đun này. Các tệp bản vá phải tồn tại trong cây nguồn của dự án cấp cao nhất. Các quy tắc này được áp dụng theo thứ tự danh sách.
patch_cmds Iterable of strings; mặc định = []
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/Macos sau khi áp dụng bản vá.
patch_strip mặc định = 0
Giống như đối số --strip của bản vá Unix.

chương trình thành phần

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

Tạo ra một khía cạnh mới. Kết quả của hàm này phải được lưu trữ trong giá trị chung. Vui lòng xem phần giới thiệu về các khía cạnh để biết thêm chi tiết.

Thông số

Thông số Nội dung mô tả
implementation bắt buộc
Hàm Starlark triển khai khía cạnh này, có chính xác hai thông số: Target (mục tiêu mà khía cạnh được áp dụng) và ctx (ngữ cảnh quy tắc mà từ đó mục tiêu được tạo). Bạn có thể xem các thuộc tính của mục tiêu thông qua trường ctx.rule. Hàm này được đánh giá trong giai đoạn phân tích mỗi khi áp dụng một khía cạnh vào mục tiêu.
attr_aspects sequence of strings; mặc định = []
Danh sách tên thuộc tính. Thành phần hiển thị được truyền theo các phần phụ thuộc được chỉ định trong các thuộc tính của mục tiêu có các tên này. Các giá trị phổ biến ở đây bao gồm depsexports. Danh sách này cũng có thể chứa một chuỗi đơn "*" để truyền dọc theo tất cả các phần phụ thuộc của một mục tiêu.
attrs dict; or None; mặc định = Không có
Từ điển khai báo tất cả thuộc tính của khía cạnh. Thuộc tính này liên kết từ tên thuộc tính đến một đối tượng thuộc tính, chẳng hạn như "attr.label" hoặc "attr.string" (xem mô-đun attr). Các thuộc tính khung hình có sẵn cho hàm triển khai dưới dạng các trường của tham số ctx.

Các thuộc tính ngầm ẩn bắt đầu bằng _ phải có các giá trị mặc định và có loại label hoặc label_list.

Các thuộc tính rõ ràng phải có loại string và phải sử dụng quy định hạn chế values. Thuộc tính rõ ràng sẽ hạn chế việc sử dụng thuộc tính đó với các quy tắc có thuộc tính cùng tên, loại và giá trị hợp lệ theo quy định hạn chế.

required_providers mặc định = []
Thuộc tính này cho phép thành phần giới hạn việc truyền tải ở những mục tiêu có quy tắc quảng cáo các trình cung cấp cần thiết. Giá trị phải là một danh sách chứa từng nhà cung cấp hoặc danh sách nhà cung cấp, chứ không được chứa cả hai. Ví dụ: [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] là một giá trị hợp lệ trong khi [FooInfo, BarInfo, [BazInfo, QuxInfo]] không hợp lệ.

Danh sách các nhà cung cấp không lồng nhau sẽ tự động được chuyển thành một danh sách chứa một danh sách các nhà cung cấp. Tức là [FooInfo, BarInfo] sẽ tự động được chuyển đổi thành [[FooInfo, BarInfo]].

Để hiển thị một số mục tiêu quy tắc (ví dụ: some_rule) cho một khía cạnh, some_rule phải quảng cáo tất cả các nhà cung cấp từ ít nhất một trong các danh sách nhà cung cấp bắt buộc. Ví dụ: nếu required_providers của một thành phần là [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], thì thành phần này chỉ có thể thấy các mục tiêu some_rule khi và chỉ khi some_rule cung cấp FooInfo *hoặc* BarInfo *hoặc* cả BazInfo *và* QuxInfo.

required_aspect_providers mặc định = []
Thuộc tính này cho phép phương diện này kiểm tra các khía cạnh khác. Giá trị phải là một danh sách chứa từng nhà cung cấp hoặc danh sách nhà cung cấp, chứ không được chứa cả hai. Ví dụ: [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] là một giá trị hợp lệ trong khi [FooInfo, BarInfo, [BazInfo, QuxInfo]] không hợp lệ.

Danh sách các nhà cung cấp không lồng nhau sẽ tự động được chuyển thành một danh sách chứa một danh sách các nhà cung cấp. Tức là [FooInfo, BarInfo] sẽ tự động được chuyển đổi thành [[FooInfo, BarInfo]].

Để hiển thị một khía cạnh khác (ví dụ: other_aspect) cho khía cạnh này, other_aspect phải cung cấp tất cả các trình cung cấp thuộc ít nhất một trong các danh sách. Trong ví dụ về [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], khía cạnh này chỉ có thể thấy other_aspect khi và chỉ khi other_aspect cung cấp FooInfo *hoặc* BarInfo *hoặc* cả BazInfo *và* QuxInfo.

provides mặc định = []
Danh sách các trình cung cấp mà hàm triển khai phải trả về.

Sẽ là lỗi nếu hàm triển khai bỏ qua bất kỳ loại trình cung cấp nào được liệt kê ở đây khỏi giá trị trả về của hàm. Tuy nhiên, hàm triển khai có thể trả về các trình cung cấp khác không được liệt kê ở đây.

Mỗi phần tử của danh sách là một đối tượng *Info được provider() trả về, ngoại trừ việc một trình cung cấp cũ được biểu thị bằng tên chuỗi.

requires sequence of Aspects; mặc định = []
Danh sách các khía cạnh cần được truyền tải trước khía cạnh này.
fragments sequence of strings; default = []
Danh sách tên của các mảnh cấu hình mà phần tử yêu cầu trong cấu hình mục tiêu.
host_fragments sequence of strings; default = []
Danh sách tên của các mảnh cấu hình mà khung hình này yêu cầu trong cấu hình máy chủ.
toolchains sequence; default = []
Nếu được đặt, quy tắc này sẽ yêu cầu tập hợp chuỗi công cụ. Danh sách này có thể chứa các đối tượng Chuỗi, Nhãn hoặc StarlarkToolchainTypeApi trong bất kỳ kết hợp nào. Bạn sẽ tìm thấy chuỗi công cụ bằng cách kiểm tra nền tảng hiện tại và được cung cấp cho quá trình triển khai quy tắc thông qua ctx.toolchain.
incompatible_use_toolchain_transition default = False
Không dùng nữa, thuộc tính này không còn được sử dụng và cần phải xoá.
doc default = ''
Nội dung mô tả về khía cạnh có thể trích xuất bằng công cụ tạo tài liệu.
apply_to_generating_rules mặc định = Sai
Nếu đúng, thì khi được áp dụng cho tệp đầu ra, khung hình này sẽ áp dụng cho quy tắc tạo của tệp đầu ra.

Ví dụ: giả sử một khía cạnh được truyền bắc cầu thông qua thuộc tính `phần phụ thuộc` và thuộc tính này được áp dụng cho mục tiêu `alpha`. Giả sử `alpha` có `deps = [':beta_output']`, trong đó `beta_output` là đầu ra được khai báo của mục tiêu `beta`. Giả sử `beta` có khía cạnh đích `charlie` là một trong các khía cạnh `phụ thuộc` và $$$ sẽ chỉ được truyền qua ".

False theo mặc định.

exec_compatible_with sequence of strings; default = []
Danh sách các điều kiện ràng buộc trên nền tảng thực thi áp dụng cho mọi thực thể của khía cạnh này.
exec_groups dict; or None; mặc định = Không
Nhật ký tên nhóm thực thi (chuỗi) thành exec_groups. Nếu được đặt, hãy cho phép các khía cạnh chạy hành động trên nhiều nền tảng thực thi trong một thực thể. Hãy xem tài liệu về nhóm thực thi để biết thêm thông tin.

bazel_dep

None bazel_dep(name, version='', max_compatibility_level=-1, repo_name='', dev_dependency=False)

Khai báo phần phụ thuộc trực tiếp trên một mô-đun Bazel khác.

Thông số

Thông số Nội dung mô tả
name bắt buộc
Tên của mô-đun được thêm vào dưới dạng phần phụ thuộc trực tiếp.
version default = ''
Phiên bản của mô-đun được thêm vào dưới dạng phần phụ thuộc trực tiếp.
max_compatibility_level mặc định = -1
compatibility_level tối đa được hỗ trợ để thêm mô-đun dưới dạng phần phụ thuộc trực tiếp. Phiên bản của mô-đun ngụ ý mức độ tương thích tối thiểu được hỗ trợ cũng như mức tối đa nếu thuộc tính này không được chỉ định.
repo_name default = ''
Tên của kho lưu trữ bên ngoài đại diện cho phần phụ thuộc này. Đây là tên mô-đun theo mặc định.
dev_dependency mặc định = Sai
Nếu đúng, phần phụ thuộc này sẽ bị bỏ qua nếu mô-đun hiện tại không phải là mô-đun gốc hoặc "--ignore_dev_dependency" được bật.

bind

None bind(name, actual=None)

Cảnh báo: bạn không nên sử dụng bind(). Hãy xem phần Cân nhắc việc xoá liên kết để nắm được nội dung thảo luận chi tiết về các vấn đề và lựa chọn thay thế.

Tạo bí danh cho mục tiêu trong gói //external.

Thông số

Thông số Nội dung mô tả
name bắt buộc
Nhãn trong '//external' để đóng vai trò là tên bí danh
actual string; or None; mặc định = Không có
Nhãn thực được đặt bí danh

bool

bool bool(x=False)

Hàm khởi tạo cho loại bool. Phương thức này trả về False nếu đối tượng là None, False, một chuỗi trống (""), số 0 hoặc một tập hợp trống (ví dụ: (), []). Nếu không, hàm này sẽ trả về True.

Thông số

Thông số Nội dung mô tả
x mặc định = Sai
Biến cần chuyển đổi.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Tham chiếu giá trị mặc định giới hạn trễ cho một thuộc tính của loại label. Một giá trị bị "giới hạn muộn" nếu yêu cầu phải xây dựng cấu hình trước khi xác định giá trị. Mọi thuộc tính dùng giá trị này làm giá trị đều phải riêng tư.

Ví dụ về cách sử dụng:

Xác định thuộc tính quy tắc:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

Truy cập khi triển khai quy tắc:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

Thông số

Thông số Nội dung mô tả
fragment bắt buộc
Tên của một mảnh cấu hình chứa giá trị liên kết trễ.
name bắt buộc
Tên của giá trị cần lấy từ mảnh cấu hình.

phần phụ thuộc

depset depset(direct=None, order="default", *, transitive=None)

Tạo một phần phụ thuộc. Tham số direct là danh sách các phần tử trực tiếp của phần phụ thuộc, còn tham số transitive là danh sách các phần tử phụ thuộc có phần tử trở thành phần tử gián tiếp của phần phụ thuộc đã tạo. Tham số order chỉ định thứ tự các phần tử được trả về khi chuyển đổi phần phụ thuộc thành danh sách. Hãy xem bài viết Tổng quan về các tuỳ chọn cài đặt để biết thêm thông tin.

Tất cả các phần tử (trực tiếp và gián tiếp) của một phần phụ thuộc phải cùng loại, như có được từ biểu thức type(x).

Vì một nhóm dựa trên hàm băm được dùng để loại bỏ trùng lặp trong quá trình lặp lại, nên tất cả các phần tử của một nhóm phụ thuộc đều phải có thể băm. Tuy nhiên, tính bất biến này hiện không được kiểm tra một cách nhất quán trong mọi hàm khởi tạo. Sử dụng cờ --incompatible_always_check_depset_ Cloud để bật chế độ kiểm tra nhất quán; đây sẽ là hành vi mặc định trong các bản phát hành sau này; hãy xem Vấn đề 10313.

Ngoài ra, các phần tử hiện không được thay đổi. Tuy nhiên, quy định hạn chế này sẽ được nới lỏng trong tương lai.

Thứ tự của các phần phụ thuộc đã tạo phải tương thích với thứ tự của các phần phụ thuộc transitive. Đơn đặt hàng "default" tương thích với mọi đơn đặt hàng khác, tất cả các đơn đặt hàng khác chỉ tương thích với chính chúng.

Lưu ý về khả năng tương thích tiến/lùi. Hàm này hiện chấp nhận tham số vị trí items. Hàm này không được dùng nữa và sẽ bị xoá trong tương lai. Sau khi hàm này bị xoá, direct sẽ trở thành tham số vị trí duy nhất của hàm depset. Do đó, cả hai lệnh gọi sau đây đều tương đương và phù hợp với tương lai:

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

Thông số

Thông số Nội dung mô tả
direct sequence; or None; mặc định = Không có
Danh sách các phần tử trực tiếp của một phần phụ thuộc.
order default = "default"
Chiến lược truyền tải cho phần phụ thuộc mới. Xem tại đây để biết các giá trị có thể có.
transitive sequence of depsets; or None; mặc định = Không có
Danh sách các phần phụ thuộc có phần tử sẽ trở thành phần tử gián tiếp của phần phụ thuộc đó.

dict

dict dict(pairs=[], **kwargs)

Tạo một từ điển từ một đối số vị trí không bắt buộc và một tập hợp các đối số từ khoá không bắt buộc. Trong trường hợp cùng một khoá được cung cấp nhiều lần, giá trị cuối cùng sẽ được sử dụng. Các mục nhập được cung cấp qua đối số từ khoá được xem là đứng sau các mục nhập được cung cấp thông qua đối số vị trí.

Thông số

Thông số Nội dung mô tả
pairs mặc định = []
Một lệnh hoặc một đối tượng có thể lặp lại có phần tử mỗi phần tử có độ dài là 2 (khoá, giá trị).
kwargs bắt buộc
Từ điển mục nhập bổ sung.

di chuyển

list dir(x)

Trả về danh sách các chuỗi: tên của các thuộc tính và phương thức của đối tượng tham số.

Thông số

Thông số Nội dung mô tả
x bắt buộc
Đối tượng cần kiểm tra.

liệt kê

list enumerate(list, start=0)

Trả về danh sách các cặp (bộ dữ liệu hai phần tử), với chỉ mục (int) và mục từ chuỗi nhập.
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]

Thông số

Thông số Nội dung mô tả
list bắt buộc
trình tự nhập.
start mặc định = 0
chỉ mục bắt đầu.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)

Tạo một nhóm thực thi có thể dùng để tạo các hành động cho một nền tảng thực thi cụ thể trong quá trình triển khai quy tắc.

Thông số

Thông số Nội dung mô tả
toolchains sequence; default = []
Tập hợp chuỗi công cụ mà nhóm thực thi này yêu cầu. Danh sách này có thể chứa các đối tượng Chuỗi, Nhãn hoặc StarlarkToolchainTypeApi trong bất kỳ kết hợp nào.
exec_compatible_with sequence of strings; default = []
Danh sách các điều kiện ràng buộc trên nền tảng thực thi.
copy_from_rule default = False
Nếu bạn đặt chính sách này thành true, thì nhóm thực thi này sẽ kế thừa chuỗi công cụ và các quy tắc ràng buộc của quy tắc đính kèm nhóm này. Nếu đặt thành bất kỳ chuỗi nào khác, thì hệ thống sẽ báo lỗi.

không thành công

None fail(msg=None, attr=None, *args)

Khiến quá trình thực thi không thành công kèm theo lỗi.

Thông số

Thông số Nội dung mô tả
msg mặc định = Không có
Không dùng nữa: thay vào đó, hãy sử dụng các đối số vị trí. Đối số này đóng vai trò như một đối số vị trí dẫn đầu ngầm ẩn.
attr string; or None; mặc định = Không có
Không dùng nữa. Yêu cầu thêm tiền tố không bắt buộc chứa chuỗi này vào thông báo lỗi.
args bắt buộc
Danh sách các giá trị, được định dạng bằng debugPrint (tương đương với str theo mặc định) và được liên kết bằng dấu cách, sẽ xuất hiện trong thông báo lỗi.

float

float float(x=unbound)

Trả về x dưới dạng một giá trị số thực.
  • Nếu x đã là một số thực, float sẽ trả về giá trị không thay đổi.
  • Nếu x là bool, float sẽ trả về 1,0 cho True và 0,0 cho False.
  • Nếu x là một số nguyên, float sẽ trả về giá trị dấu phẩy động hữu hạn gần nhất cho x hoặc lỗi nếu độ lớn quá lớn.
  • Nếu x là một chuỗi, thì giá trị này phải là một giá trị cố định dấu phẩy động hợp lệ hoặc bằng (không phân biệt chữ hoa chữ thường) với NaN, Inf hoặc Infinity, có thể đứng sau dấu + hoặc - (không bắt buộc).
Bất kỳ giá trị nào khác đều gây ra lỗi. Không có đối số, float() trả về 0.0.

Thông số

Thông số Nội dung mô tả
x mặc định = không liên kết
Giá trị cần chuyển đổi.

getattr

unknown getattr(x, name, default=unbound)

Trả về trường của cấu trúc cho tên đã cho nếu có. Nếu không, hàm này sẽ trả về default (nếu được chỉ định) hoặc phát sinh lỗi. getattr(x, "foobar") tương đương với x.foobar.
getattr(ctx.attr, "myattr")
getattr(ctx.attr, "myattr", "mydefault")

Thông số

Thông số Nội dung mô tả
x bắt buộc
Cấu trúc có thuộc tính được truy cập.
name bắt buộc
Tên của thuộc tính cấu trúc.
default mặc định = không liên kết
Giá trị mặc định cần trả về trong trường hợp cấu trúc không có thuộc tính của tên đã cho.

git_override

None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)

Chỉ định một phần phụ thuộc phải đến từ một cam kết nhất định của kho lưu trữ Git. Lệnh này chỉ có hiệu lực trong mô-đun gốc. Nói cách khác, nếu một mô-đun được người khác sử dụng làm phần phụ thuộc, thì các cơ chế ghi đè của chính mô-đun đó sẽ bị bỏ qua.

Thông số

Thông số Nội dung mô tả
module_name bắt buộc
Tên của phần phụ thuộc mô-đun Bazel để áp dụng chế độ ghi đè này.
remote bắt buộc
URL của kho lưu trữ Git từ xa.
commit default = ''
Cam kết cần được kiểm tra.
patches Iterable of strings; default = []
Danh sách các nhãn trỏ đến tệp bản vá áp dụng cho mô-đun này. Các tệp bản vá phải tồn tại trong cây nguồn của dự án cấp cao nhất. Các quy tắc này được áp dụng theo thứ tự danh sách.
patch_cmds Iterable of strings; mặc định = []
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/Macos sau khi áp dụng bản vá.
patch_strip mặc định = 0
Giống như đối số --strip của bản vá Unix.

hasattr

bool hasattr(x, name)

Trả về True nếu đối tượng x có thuộc tính hoặc phương thức của name đã cho, nếu không sẽ là False. Ví dụ:
hasattr(ctx.attr, "myattr")

Thông số

Thông số Nội dung mô tả
x bắt buộc
Đối tượng cần kiểm tra.
name bắt buộc
Tên của thuộc tính.

hàm băm

int hash(value)

Trả về giá trị băm cho một chuỗi. Điều này được tính toán một cách xác định bằng cách sử dụng cùng một thuật toán như String.hashCode() của Java, cụ thể là:
s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
Việc băm các giá trị bên cạnh các chuỗi hiện không được hỗ trợ.

Thông số

Thông số Nội dung mô tả
value bắt buộc
Giá trị chuỗi cần băm.

int

int int(x, base=unbound)

Trả về x dưới dạng một giá trị int.
  • Nếu x đã là số nguyên, int sẽ không thay đổi giá trị này.
  • Nếu x là giá trị boolean, int sẽ trả về 1 cho giá trị True và 0 cho giá trị False.
  • Nếu x là một chuỗi thì chuỗi này phải có định dạng <sign><prefix><digits>. <sign>"+", "-" hoặc trống (được hiểu là dương). <digits> là một chuỗi các chữ số từ 0 đến base – 1, trong đó các chữ cái từ a đến z (hoặc tương đương từ A đến Z) được dùng làm chữ số từ 10 đến 35. Trong trường hợp base là 2/8/16, <prefix> là không bắt buộc và có thể là 0b/0o/0x (hoặc tương đương 0B/0O/0X); nếu base là bất kỳ giá trị nào khác ngoài các cơ số này hoặc giá trị đặc biệt 0, thì tiền tố phải để trống. Trong trường hợp base là 0, chuỗi được hiểu là một giá trị cố định số nguyên, theo nghĩa là một trong các cơ số 2/8/10/16 được chọn tuỳ thuộc vào tiền tố nào được sử dụng. Nếu base là 0, không sử dụng tiền tố nào và có nhiều hơn một chữ số, chữ số đứng đầu không được là 0; điều này nhằm tránh nhầm lẫn giữa bát phân và số thập phân. Độ lớn của số được biểu thị bằng chuỗi phải nằm trong phạm vi cho phép đối với kiểu số nguyên.
  • Nếu x là một số thực, int sẽ trả về giá trị số nguyên của số thực, làm tròn về 0. Đó là lỗi nếu x là không hữu hạn (NaN hoặc vô hạn).
Hàm này không thành công nếu x là bất kỳ loại nào khác hoặc nếu giá trị là một chuỗi không đáp ứng định dạng ở trên. Không giống như hàm int của Python, hàm này không cho phép sử dụng đối số 0 và không cho phép khoảng trắng không liên quan cho đối số chuỗi.

Ví dụ:

int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123

Thông số

Thông số Nội dung mô tả
x bắt buộc
Chuỗi cần chuyển đổi.
base mặc định = không liên kết
Cơ sở dùng để diễn giải giá trị chuỗi; mặc định là 10. Phải nằm trong khoảng từ 2 đến 36 (bao gồm) hoặc 0 để phát hiện cơ số như thể x là một giá trị cố định bằng số nguyên. Không được cung cấp tham số này nếu giá trị không phải là một chuỗi.

len

int len(x)

Trả về độ dài của một chuỗi, trình tự (chẳng hạn như danh sách hoặc bộ dữ liệu), ký tự hoặc kiểu lặp khác.

Thông số

Thông số Nội dung mô tả
x bắt buộc
Giá trị có độ dài cần báo cáo.

danh sách

list list(x=[])

Trả về một danh sách mới có các phần tử giống với giá trị lặp lại đã cho.
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]

Thông số

Thông số Nội dung mô tả
x mặc định = []
Đối tượng cần chuyển đổi.

local_path_override

None local_path_override(module_name, path)

Chỉ định việc một phần phụ thuộc phải đến từ một thư mục nhất định trên ổ đĩa cục bộ. Lệnh này chỉ có hiệu lực trong mô-đun gốc. Nói cách khác, nếu một mô-đun được người khác sử dụng làm phần phụ thuộc, thì các cơ chế ghi đè của chính mô-đun đó sẽ bị bỏ qua.

Thông số

Thông số Nội dung mô tả
module_name bắt buộc
Tên của phần phụ thuộc mô-đun Bazel để áp dụng chế độ ghi đè này.
path bắt buộc
Đường dẫn đến thư mục chứa mô-đun này.

tối đa

unknown max(*args)

Trả về một đối số lớn nhất trong tất cả các đối số đã cho. Nếu chỉ cung cấp một đối số, thì đối số đó phải là một đối số không thể trống.Đó là lỗi nếu các phần tử không so sánh được (ví dụ: số nguyên với chuỗi) hoặc nếu không có đối số nào được đưa ra.
max(2, 5, 4) == 5
max([5, 6, 3]) == 6

Thông số

Thông số Nội dung mô tả
args bắt buộc
Các phần tử cần kiểm tra.

phút

unknown min(*args)

Trả về đối số nhỏ nhất trong tất cả các đối số đã cho. Nếu chỉ cung cấp một đối số, thì đối số đó phải là một đối số không thể trống. Đó là lỗi nếu các phần tử không so sánh được (ví dụ: int với chuỗi) hoặc nếu không có đối số nào được cung cấp.
min(2, 5, 4) == 2
min([5, 6, 3]) == 3

Thông số

Thông số Nội dung mô tả
args bắt buộc
Các phần tử cần kiểm tra.

mô-đun

None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])

Khai báo một số thuộc tính của mô-đun Bazel được biểu thị bằng kho lưu trữ Bazel hiện tại. Các thuộc tính này là siêu dữ liệu thiết yếu của mô-đun (chẳng hạn như tên và phiên bản) hoặc ảnh hưởng đến hoạt động của mô-đun hiện tại và các phần phụ thuộc của mô-đun đó.

Cuộc gọi sẽ được gọi tối đa một lần. Bạn chỉ có thể bỏ qua mô-đun này nếu mô-đun này là mô-đun gốc (như trong trường hợp mô-đun không phụ thuộc vào một mô-đun khác).

Thông số

Thông số Nội dung mô tả
name default = ''
Tên của mô-đun. Chỉ có thể bỏ qua nếu mô-đun này là mô-đun gốc (như trong trường hợp mô-đun không phụ thuộc vào một mô-đun khác). Tên học phần hợp lệ phải: 1) chỉ chứa chữ cái viết thường (a-z), chữ số (0-9), dấu chấm (.), dấu gạch nối (-) và dấu gạch dưới (_); 2) bắt đầu bằng chữ cái viết thường; 3) kết thúc bằng chữ cái hoặc chữ số viết thường.
version default = ''
Phiên bản của mô-đun. Chỉ có thể bỏ qua nếu mô-đun này là mô-đun gốc (như trong trường hợp mô-đun không phụ thuộc vào một mô-đun khác).
compatibility_level mặc định = 0
Mức độ tương thích của mô-đun; bạn nên thay đổi mức này mỗi khi có một thay đổi lớn không tương thích. Về cơ bản, đây là "phiên bản chính" của mô-đun khi xét đến SemVer, ngoại trừ việc mô-đun này không được nhúng trong chuỗi phiên bản mà tồn tại dưới dạng một trường riêng biệt. Các mô-đun có mức độ tương thích khác nhau sẽ tham gia vào quá trình phân giải phiên bản như thể đó là các mô-đun có tên khác nhau, nhưng biểu đồ phần phụ thuộc cuối cùng không được chứa nhiều mô-đun có cùng tên nhưng khác mức độ tương thích (trừ khi multiple_version_override có hiệu lực; xem để biết thêm chi tiết).
repo_name mặc định = ''
Tên của kho lưu trữ đại diện cho mô-đun này, như được nhìn thấy bởi chính mô-đun. Theo mặc định, tên của kho lưu trữ là tên của mô-đun. Bạn có thể chỉ định điều này để dễ dàng di chuyển cho các dự án đã sử dụng tên kho lưu trữ khác với tên mô-đun của kho lưu trữ đó.
bazel_compatibility Iterable of strings; default = []
Danh sách phiên bản bazel cho phép người dùng khai báo phiên bản Bazel nào tương thích với mô-đun này. Việc này KHÔNG ảnh hưởng đến việc phân giải phần phụ thuộc, nhưng bzlmod sẽ sử dụng thông tin này để kiểm tra xem phiên bản Bazel hiện tại của bạn có tương thích hay không. Định dạng của giá trị này là một chuỗi gồm một số giá trị ràng buộc được phân tách bằng dấu phẩy. Hỗ trợ 3 điều kiện ràng buộc: <=X.X.X: Phiên bản Bazel phải bằng hoặc cũ hơn X.X.X. Được dùng khi có thay đổi đã biết không tương thích trong một phiên bản mới hơn. >=X.X.X: Phiên bản Bazel phải bằng hoặc mới hơn X.X.X.Được sử dụng khi bạn phụ thuộc vào một số tính năng chỉ có sẵn kể từ X.X.X. -X.X.X: Phiên bản Bazel X.X.X không tương thích. Được dùng khi có lỗi trong X.X.X làm bạn bị lỗi, nhưng được khắc phục trong các phiên bản sau này.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc='', environ=[], os_dependent=False, arch_dependent=False)

Tạo phần mở rộng mới cho mô-đun. Lưu trữ tệp này trong một giá trị chung để có thể xuất và sử dụng trong tệp MODULE.bazel.

Thông số

Thông số Nội dung mô tả
implementation bắt buộc
Hàm triển khai tiện ích mô-đun này. Phải lấy một tham số duy nhất là module_ctx. Hàm này được gọi một lần khi bắt đầu bản dựng để xác định tập hợp các kho lưu trữ có sẵn.
tag_classes mặc định = {}
Từ điển để khai báo tất cả các lớp thẻ mà tiện ích sử dụng. Lớp này ánh xạ từ tên lớp thẻ tới đối tượng tag_class.
doc default = ''
Nội dung mô tả về tiện ích mô-đun có thể trích xuất bằng công cụ tạo tài liệu.
environ sequence of strings; default = []
Cung cấp danh sách biến môi trường mà tiện ích mô-đun này phụ thuộc vào. Nếu một biến môi trường trong danh sách đó thay đổi, thì phần mở rộng sẽ được đánh giá lại.
os_dependent mặc định = Sai
Cho biết liệu tiện ích này có phụ thuộc vào hệ điều hành hay không
arch_dependent mặc định = Sai
Cho biết liệu tiện ích này có phụ thuộc vào cấu trúc hay không

multiple_version_override

None multiple_version_override(module_name, versions, registry='')

Chỉ định rằng một phần phụ thuộc vẫn phải đến từ sổ đăng ký, nhưng nhiều phiên bản của phần phụ thuộc đó vẫn được phép cùng tồn tại. Xem tài liệu để biết thêm chi tiết. Lệnh này chỉ có hiệu lực trong mô-đun gốc. Nói cách khác, nếu một mô-đun được người khác sử dụng làm phần phụ thuộc, thì các cơ chế ghi đè của chính mô-đun đó sẽ bị bỏ qua.

Thông số

Thông số Nội dung mô tả
module_name bắt buộc
Tên của phần phụ thuộc mô-đun Bazel để áp dụng chế độ ghi đè này.
versions Iterable of strings; bắt buộc
Chỉ định rõ ràng các phiên bản được phép cùng tồn tại. Các phiên bản này phải đã có trong phần lựa chọn trước biểu đồ phần phụ thuộc. Các phần phụ thuộc trên mô-đun này sẽ được "nâng cấp" lên phiên bản được phép cao hơn gần nhất với cùng mức độ tương thích, trong khi những phần phụ thuộc có phiên bản cao hơn phiên bản được phép ở cùng mức độ tương thích sẽ gây ra lỗi.
registry default = ''
Ghi đè sổ đăng ký cho mô-đun này; thay vì tìm mô-đun này từ danh sách sổ đăng ký mặc định, bạn nên sử dụng sổ đăng ký đã cho.

in

None print(sep=" ", *args)

In args dưới dạng kết quả gỡ lỗi. Chuỗi này sẽ có tiền tố là chuỗi "DEBUG" và vị trí (tệp và số dòng) của lệnh gọi này. Cách chính xác mà các đối số được chuyển đổi thành chuỗi là chưa được chỉ định và có thể thay đổi bất cứ lúc nào. Cụ thể, định dạng này có thể khác (và chi tiết hơn) với định dạng do str()repr() thực hiện.

Bạn không nên sử dụng print trong mã phát hành chính thức do mã này tạo ra nội dung rác cho người dùng. Đối với những ứng dụng không dùng nữa, hãy ưu tiên lỗi cứng bằng cách sử dụng fail() bất cứ khi nào có thể.

Thông số

Thông số Nội dung mô tả
sep mặc định = " "
Chuỗi dòng phân cách giữa các đối tượng, mặc định là dấu cách (" ").
args bắt buộc
Các đối tượng cần in.

provider

unknown provider(doc='', *, fields=None, init=None)

Xác định biểu tượng nhà cung cấp. Trình cung cấp này có thể được tạo thực thể bằng cách gọi hoặc dùng trực tiếp làm khoá để truy xuất một thực thể của trình cung cấp đó từ một mục tiêu. Ví dụ:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Xem Quy tắc (Nhà cung cấp) để biết hướng dẫn toàn diện về cách sử dụng nhà cung cấp.

Trả về giá trị có thể gọi Provider nếu init không được chỉ định.

Nếu bạn chỉ định init, sẽ trả về một bộ dữ liệu gồm 2 phần tử: giá trị có thể gọi Provider và giá trị có thể gọi là hàm khởi tạo thô. Hãy xem phần Quy tắc (Khởi chạy tuỳ chỉnh các nhà cung cấp tuỳ chỉnh) và nội dung thảo luận về tham số init bên dưới để biết thông tin chi tiết.

Thông số

Thông số Nội dung mô tả
doc default = ''
Nội dung mô tả về trình cung cấp có thể trích xuất bằng công cụ tạo tài liệu.
fields sequence of strings; or dict; or None; mặc định = Không có
Nếu được chỉ định, hãy giới hạn tập hợp các trường được phép.
Các giá trị có thể được sử dụng là:
  • danh sách trường:
    provider(fields = ['a', 'b'])

  • tên trường trong từ điển -> tài liệu:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Tất cả các trường đều không bắt buộc.
init callable; or None; mặc định = Không có
Lệnh gọi lại (không bắt buộc) để xử lý trước và xác thực các giá trị trường của trình cung cấp trong quá trình tạo bản sao. Nếu bạn chỉ định init, provider() sẽ trả về bộ dữ liệu gồm 2 phần tử: biểu tượng nhà cung cấp thông thường và hàm khởi tạo thô.

Sau đây là phần mô tả chính xác; xem phần Quy tắc (Khởi chạy tuỳ chỉnh nhà cung cấp) để thảo luận và tìm hiểu các trường hợp sử dụng trực quan.

Cho phép P là biểu tượng nhà cung cấp được tạo bằng cách gọi provider(). Về mặt lý thuyết, một thực thể của P được tạo bằng cách gọi một hàm khởi tạo mặc định c(*args, **kwargs), thực hiện những việc sau:

  • Nếu args không trống thì sẽ xảy ra lỗi.
  • Nếu tham số fields được chỉ định khi provider() được gọi và nếu kwargs chứa bất kỳ khoá nào không được liệt kê trong fields, thì lỗi sẽ xảy ra.
  • Nếu không, c sẽ trả về một thực thể mới, đối với mỗi mục nhập k: v trong kwargs, hãy trả về một trường có tên k với giá trị v.
Trong trường hợp hàm gọi lại init không được cung cấp, lệnh gọi đến biểu tượng P sẽ đóng vai trò như một lệnh gọi đến hàm hàm khởi tạo mặc định c; nói cách khác, P(*args, **kwargs) sẽ trả về c(*args, **kwargs). Ví dụ:
MyInfo = provider()
m = MyInfo(foo = 1)
sẽ thiết lập sao cho m là một thực thể MyInfom.foo == 1.

Tuy nhiên, trong trường hợp init được chỉ định, lệnh gọi P(*args, **kwargs) sẽ thực hiện các bước sau:

  1. Lệnh gọi lại được gọi dưới dạng init(*args, **kwargs), có nghĩa là với các đối số vị trí và đối số từ khoá giống hệt như đã truyền đến P.
  2. Giá trị trả về của init dự kiến sẽ là một từ điển, d, có khoá là các chuỗi tên trường. Nếu không, lỗi sẽ xảy ra.
  3. Một thực thể mới của P được tạo như thể bằng cách gọi hàm khởi tạo mặc định có các mục nhập của d làm đối số từ khoá, như trong c(**d).

Lưu ý: các bước ở trên ngụ ý rằng lỗi sẽ xảy ra nếu *args hoặc **kwargs không khớp với chữ ký của init, hoặc việc đánh giá phần nội dung của init không thành công (có thể là cố ý thông qua lệnh gọi đến fail()), hoặc nếu giá trị trả về của init không phải là từ điển với giản đồ dự kiến.

Bằng cách này, lệnh gọi lại init sẽ khái quát hoá quy trình xây dựng trình cung cấp thông thường bằng cách cho phép các đối số vị trí và logic tuỳ ý để xử lý trước và xác thực. Thao tác này không cho phép việc tránh né danh sách fields được phép.

Khi init được chỉ định, giá trị trả về của provider() sẽ trở thành một bộ dữ liệu (P, r), trong đó rhàm khởi tạo thô. Trên thực tế, hành vi của r hoàn toàn giống với hành vi của hàm hàm khởi tạo mặc định c đã đề cập ở trên. Thông thường, r được liên kết với một biến có tên ở tiền tố là dấu gạch dưới, do đó, chỉ tệp .bzl hiện tại mới có quyền truy cập trực tiếp vào biến đó:

MyInfo, _new_myinfo = provider(init = ...)

phạm vi

sequence range(start_or_stop, stop_or_none=None, step=1)

Tạo một danh sách chứa các mục đi từ start đến stop, sử dụng số tăng step. Nếu bạn cung cấp một đối số duy nhất, các mục sẽ nằm trong khoảng từ 0 đến phần tử đó.
range(4) == [0, 1, 2, 3]
range(3, 9, 2) == [3, 5, 7]
range(3, 0, -1) == [3, 2, 1]

Thông số

Thông số Nội dung mô tả
start_or_stop bắt buộc
Giá trị của phần tử bắt đầu nếu cung cấp điểm dừng, nếu không thì giá trị của điểm dừng và điểm bắt đầu thực tế là 0
stop_or_none int; or None; mặc định = Không có
chỉ mục không bắt buộc của mục đầu tiên không có trong danh sách kết quả; việc tạo danh sách sẽ dừng trước khi đạt đến stop.
step mặc định = 1
Giá trị tăng (mặc định là 1). Kết quả này có thể âm.

register_execution_platforms()

None register_execution_platforms(*platform_labels)

Đăng ký một nền tảng đã được xác định để Bazel có thể dùng nền tảng đó làm nền tảng thực thi trong quá trình giải quyết của chuỗi công cụ.

Thông số

Thông số Nội dung mô tả
platform_labels sequence of strings; bắt buộc
Nhãn của nền tảng cần đăng ký.

register_execution_platforms(dev_dependency)

None register_execution_platforms(dev_dependency=False, *platform_labels)

Chỉ định các nền tảng thực thi đã xác định cần đăng ký khi mô-đun này được chọn. Phải là các mẫu mục tiêu tuyệt đối (tức là bắt đầu bằng @ hoặc //). Hãy xem bài viết giải pháp của chuỗi công cụ để biết thêm thông tin.

Thông số

Thông số Nội dung mô tả
dev_dependency default = False
Nếu là true, các nền tảng thực thi sẽ không được đăng ký nếu mô-đun hiện tại không phải là mô-đun gốc hoặc "--ignore_dev_dependency" được bật.
platform_labels sequence of strings; bắt buộc
Nhãn của nền tảng cần đăng ký.

register_toolchains()

None register_toolchains(*toolchain_labels)

Đăng ký một chuỗi công cụ đã được xác định để Bazel có thể sử dụng trong quá trình phân giải chuỗi công cụ. Xem ví dụ về cách xác địnhđăng ký chuỗi công cụ.

Thông số

Thông số Nội dung mô tả
toolchain_labels sequence of strings; bắt buộc
Nhãn của các chuỗi công cụ cần đăng ký.

register_toolchains(dev_dependency)

None register_toolchains(dev_dependency=False, *toolchain_labels)

Chỉ định các chuỗi công cụ đã xác định cần được đăng ký khi chọn mô-đun này. Phải là các mẫu mục tiêu tuyệt đối (tức là bắt đầu bằng @ hoặc //). Hãy xem bài viết giải pháp của chuỗi công cụ để biết thêm thông tin.

Thông số

Thông số Nội dung mô tả
dev_dependency mặc định = False
Nếu đúng, chuỗi công cụ sẽ không được đăng ký nếu mô-đun hiện tại không phải là mô-đun gốc hoặc "--ignore_dev_dependency" được bật.
toolchain_labels sequence of strings; bắt buộc
Nhãn của các chuỗi công cụ cần đăng ký.

repository_rule

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

Tạo quy tắc kho lưu trữ mới. Lưu trữ mã này trong một giá trị chung để có thể tải và gọi tệp từ tệp WORKSPACE.

Thông số

Thông số Nội dung mô tả
implementation bắt buộc
hàm triển khai quy tắc này. Phải có một tham số duy nhất là repository_ctx. Hàm được gọi trong giai đoạn tải cho mỗi thực thể của quy tắc.
attrs dict; or None; mặc định = Không có
từ điển để khai báo tất cả thuộc tính của quy tắc. Thuộc tính này ánh xạ từ tên thuộc tính đến đối tượng thuộc tính (xem mô-đun attr). Các thuộc tính bắt đầu bằng _ là các thuộc tính riêng tư và có thể dùng để thêm phần phụ thuộc ngầm định vào một nhãn vào tệp (quy tắc kho lưu trữ không thể phụ thuộc vào một cấu phần phần mềm đã tạo). Thuộc tính name được ngầm thêm vào và không được chỉ định.
local mặc định = Sai
Cho biết rằng quy tắc này tìm nạp mọi thứ từ hệ thống cục bộ và cần được đánh giá lại mỗi lần tìm nạp.
environ sequence of strings; default = []
Cung cấp danh sách biến môi trường mà quy tắc kho lưu trữ này phụ thuộc. Nếu một biến môi trường trong danh sách đó thay đổi, thì kho lưu trữ sẽ được tìm nạp lại.
configure mặc định = Sai
Cho biết rằng kho lưu trữ kiểm tra hệ thống cho mục đích cấu hình
remotable mặc định = Sai
Thử nghiệm. Tham số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào nó. Bạn có thể bật tính năng này trong giai đoạn thử nghiệm bằng cách đặt ---experimental_repo_remote_exec
Tương thích với tính năng thực thi từ xa
doc mặc định = ''
Nội dung mô tả về quy tắc kho lưu trữ có thể được trích xuất bằng các công cụ tạo tài liệu.

lặp lại

string repr(x)

Chuyển đổi bất kỳ đối tượng nào thành một biểu diễn chuỗi. Điều này rất hữu ích khi gỡ lỗi.
repr("ab") == '"ab"'

Thông số

Thông số Nội dung mô tả
x bắt buộc
Đối tượng cần chuyển đổi.

đã đảo ngược

list reversed(sequence)

Trả về danh sách mới, không được cố định chứa các phần tử của chuỗi lặp lại ban đầu theo thứ tự đảo ngược.
reversed([3, 5, 4]) == [4, 5, 3]

Thông số

Thông số Nội dung mô tả
sequence bắt buộc
Trình tự có thể lặp lại (ví dụ: danh sách) cần được đảo ngược.

quy tắc

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

Tạo quy tắc mới mà có thể được gọi từ tệp XÂY DỰNG hoặc macro để tạo mục tiêu.

Bạn phải chỉ định quy tắc cho các biến toàn cục trong tệp .bzl; tên của biến toàn cục là tên của quy tắc.

Các quy tắc kiểm thử bắt buộc phải có tên kết thúc bằng _test, trong khi tất cả các quy tắc khác không được có hậu tố này. (Hạn chế này chỉ áp dụng cho các quy tắc, không áp dụng cho mục tiêu của các quy tắc).

Thông số

Thông số Nội dung mô tả
implementation bắt buộc
hàm Starlark triển khai quy tắc này phải có đúng một tham số: ctx. Hàm này được gọi trong giai đoạn phân tích cho mỗi thực thể của quy tắc. Ứng dụng này có thể truy cập vào các thuộc tính do người dùng cung cấp. Hàm này phải tạo các hành động để tạo tất cả đầu ra đã khai báo.
test mặc định = Sai
Liệu quy tắc này có phải là quy tắc kiểm thử hay không, tức là quy tắc đó có thể là đối tượng của lệnh blaze test hay không. Mọi quy tắc kiểm thử đều tự động được coi là có thể thực thi. Bạn không cần đặt executable = True một cách rõ ràng cho quy tắc kiểm thử. Hãy xem trang Quy tắc để biết thêm thông tin.
attrs dict; or None; mặc định = Không có
từ điển để khai báo tất cả thuộc tính của quy tắc. Thuộc tính này ánh xạ từ tên thuộc tính đến đối tượng thuộc tính (xem mô-đun attr). Các thuộc tính bắt đầu bằng _ là các thuộc tính riêng tư và có thể dùng để thêm phần phụ thuộc ngầm ẩn vào một nhãn. Thuộc tính name được ngầm thêm vào và không được chỉ định. Các thuộc tính visibility, deprecation, tags, testonlyfeatures được thêm vào một cách ngầm ẩn và không thể ghi đè. Hầu hết các quy tắc chỉ cần một vài thuộc tính. Để giới hạn mức sử dụng bộ nhớ, hàm quy tắc đặt giới hạn cho kích thước của thuộc tính.
outputs dict; or None; or function; mặc định = Không có
Không dùng nữa. Tham số này không được dùng nữa và sẽ sớm bị xoá. Vui lòng không phụ thuộc vào nó. Tính năng này sẽ bị tắt bằng ---incompatible_no_rule_outputs_param. Hãy sử dụng cờ này để xác minh rằng mã của bạn tương thích với việc xoá mã sắp xảy ra.
Tham số này không được dùng nữa. Hãy di chuyển các quy tắc để sử dụng OutputGroupInfo hoặc attr.output.

Giản đồ để xác định các kết quả được khai báo trước. Không giống như thuộc tính outputoutput_list, người dùng không chỉ định nhãn cho các tệp này. Hãy xem trang Quy tắc để biết thêm thông tin về kết quả được khai báo trước.

Giá trị của đối số này là từ điển hoặc hàm callback tạo ra từ điển. Lệnh gọi lại hoạt động tương tự như các thuộc tính phần phụ thuộc đã tính toán: Tên tham số của hàm được so khớp với các thuộc tính của quy tắc, chẳng hạn như nếu bạn truyền outputs = _my_func cùng với định nghĩa def _my_func(srcs, deps): ..., thì hàm sẽ có quyền truy cập vào các thuộc tính srcsdeps. Cho dù từ điển được chỉ định trực tiếp hay thông qua một hàm, thì từ điển đều được hiểu như sau.

Mỗi mục nhập trong từ điển sẽ tạo một đầu ra được khai báo trước, trong đó khoá là giá trị nhận dạng và giá trị là một mẫu chuỗi xác định nhãn của đầu ra. Trong hàm triển khai quy tắc, giá trị nhận dạng sẽ trở thành tên trường dùng để truy cập vào File của kết quả trong ctx.outputs. Nhãn của đầu ra có cùng gói với quy tắc và phần sau gói được tạo bằng cách thay thế từng phần giữ chỗ ở dạng "%{ATTR}" bằng một chuỗi được tạo từ giá trị của thuộc tính ATTR:

  • Các thuộc tính loại chuỗi được thay thế nguyên văn.
  • Các thuộc tính nhập nhãn sẽ trở thành một phần của nhãn sau gói, trừ đi đuôi tệp. Ví dụ: nhãn "//pkg:a/b.c" trở thành "a/b".
  • Các thuộc tính có đầu ra sẽ trở thành một phần của nhãn sau gói, bao gồm cả đuôi tệp (trong ví dụ trên là "a/b.c").
  • Tất cả thuộc tính loại danh sách (ví dụ: attr.label_list) dùng trong phần giữ chỗ đều bắt buộc phải có đúng một phần tử. Lượt chuyển đổi của các hành động chuyển đổi này giống với phiên bản không phải danh sách (attr.label).
  • Các loại thuộc tính khác có thể không xuất hiện trong phần giữ chỗ.
  • Các phần giữ chỗ đặc biệt không phải thuộc tính %{dirname}%{basename} sẽ mở rộng đến các phần đó trong nhãn của quy tắc, ngoại trừ gói của quy tắc đó. Ví dụ: trong "//pkg:a/b.c", tên thư mục là a và tên cơ sở là b.c.

Trong thực tế, phần giữ chỗ thay thế phổ biến nhất là "%{name}". Ví dụ: đối với một mục tiêu có tên là "foo", kết quả đầu ra : {"bin": "%{name}.exe"} sẽ khai báo trước một đầu ra có tên là foo.exe có thể truy cập được trong hàm triển khai dưới dạng ctx.outputs.bin.

executable mặc định = Sai
Liệu quy tắc này có được coi là thực thi hay không, tức là quy tắc đó có phải là chủ thể của lệnh blaze run hay không. Hãy xem trang Quy tắc để biết thêm thông tin.
output_to_genfiles mặc định = Sai
Nếu giá trị là true, tệp sẽ được tạo trong thư mục genfiles thay vì thư mục bin. Đừng đặt cờ này trừ phi bạn cần các quy tắc đó để tương thích với các quy tắc hiện có (ví dụ: khi tạo tệp tiêu đề cho C++).
fragments sequence of strings; default = []
Danh sách tên của các mảnh cấu hình mà quy tắc yêu cầu trong cấu hình mục tiêu.
host_fragments sequence of strings; mặc định = []
Danh sách tên của các mảnh cấu hình mà quy tắc yêu cầu trong cấu hình máy chủ.
_skylark_testable mặc định = False
(Thử nghiệm)

Nếu đúng, quy tắc này sẽ hiển thị các hành động để kiểm tra theo quy tắc phụ thuộc vào quy tắc thông qua nhà cung cấp Hành động. Trình cung cấp này cũng có sẵn cho chính quy tắc bằng cách gọi ctx.created_actions().

Chỉ nên sử dụng công cụ này để kiểm tra hành vi tại thời điểm phân tích của các quy tắc Starlark. Cờ này có thể bị xoá trong tương lai.
toolchains sequence; default = []
Nếu được đặt, quy tắc này sẽ yêu cầu tập hợp chuỗi công cụ. Danh sách này có thể chứa các đối tượng Chuỗi, Nhãn hoặc StarlarkToolchainTypeApi trong bất kỳ kết hợp nào. Bạn sẽ tìm thấy chuỗi công cụ bằng cách kiểm tra nền tảng hiện tại và được cung cấp cho quá trình triển khai quy tắc thông qua ctx.toolchain.
incompatible_use_toolchain_transition default = False
Không dùng nữa, thuộc tính này không còn được sử dụng và cần phải xoá.
doc default = ''
Nội dung mô tả về quy tắc có thể trích xuất bằng công cụ tạo tài liệu.
provides mặc định = []
Danh sách các trình cung cấp mà hàm triển khai phải trả về.

Sẽ là lỗi nếu hàm triển khai bỏ qua bất kỳ loại trình cung cấp nào được liệt kê ở đây khỏi giá trị trả về của hàm. Tuy nhiên, hàm triển khai có thể trả về các trình cung cấp khác không được liệt kê ở đây.

Mỗi phần tử của danh sách là một đối tượng *Info được provider() trả về, ngoại trừ việc một trình cung cấp cũ được biểu thị bằng tên chuỗi.

exec_compatible_with sequence of strings; default = []
Danh sách các quy tắc ràng buộc trên nền tảng thực thi áp dụng cho tất cả các mục tiêu của loại quy tắc này.
analysis_test mặc định = Sai
Nếu đúng thì quy tắc này được coi là kiểm thử phân tích.

Lưu ý: Các quy tắc kiểm thử Phân tích chủ yếu được xác định bằng cách sử dụng cơ sở hạ tầng được cung cấp trong các thư viện Starlark chính. Hãy xem bài viết Kiểm thử để được hướng dẫn.

Nếu một quy tắc được xác định là quy tắc kiểm thử phân tích, thì quy tắc đó được phép sử dụng quá trình chuyển đổi cấu hình được xác định bằng analysis_test_transition trên các thuộc tính của quy tắc đó, nhưng chọn áp dụng một số hạn chế:

  • Các mục tiêu của quy tắc này bị giới hạn về số lượng phần phụ thuộc bắc cầu có thể có.
  • Quy tắc này được xem là quy tắc kiểm thử (như thể bạn đã đặt test=True). Hàm này sẽ thay thế giá trị của test
  • Hàm triển khai quy tắc có thể không đăng ký các hành động. Thay vào đó, mã này phải đăng ký kết quả đạt/không đạt bằng cách cung cấp AnalysisTestResultInfo.
build_setting BuildSetting; or None; default = Không
Nếu được đặt, hãy mô tả loại build setting của quy tắc này. Xem mô-đun config. Nếu bạn đặt chính sách này, hệ thống sẽ tự động thêm thuộc tính bắt buộc có tên "build_setting_default" vào quy tắc này, kèm theo một loại thuộc tính tương ứng với giá trị được chuyển vào đây.
cfg mặc định = Không
Nếu được đặt, hãy trỏ đến chuyển đổi cấu hình, quy tắc sẽ áp dụng cho cấu hình của chính cấu hình đó trước khi phân tích.
exec_groups dict; or None; mặc định = Không
Nhật ký tên nhóm thực thi (chuỗi) thành exec_groups. Nếu được đặt, hãy cho phép các quy tắc chạy hành động trên nhiều nền tảng thực thi trong một mục tiêu duy nhất. Hãy xem tài liệu về nhóm thực thi để biết thêm thông tin.
compile_one_filetype sequence of strings; or None; mặc định = Không
Được sử dụng bởi --compile_one_dependency: nếu nhiều quy tắc sử dụng tệp được chỉ định, chúng ta có nên chọn quy tắc này thay vì các quy tắc khác không.
name string; or None; mặc định = Không có
Không dùng nữa. Tham số này không được dùng nữa và sẽ sớm bị xoá. Vui lòng không phụ thuộc vào nó. Tính năng này sẽ bị tắt bằng --+incompatible_remove_rule_name_parameter. Hãy sử dụng cờ này để xác minh rằng mã của bạn tương thích với việc xoá mã sắp xảy ra.
Không dùng nữa: không sử dụng.

Tên của quy tắc này, như được Bazel hiểu và được báo cáo trong các ngữ cảnh như ghi nhật ký, native.existing_rule(...)[kind]bazel query. Thông thường, giá trị này giống với giá trị nhận dạng Starlark được liên kết với quy tắc này; ví dụ: quy tắc có tên là foo_library thường được khai báo là foo_library = rule(...) và được tạo thực thể trong tệp BUILD dưới dạng foo_library(...).

Nếu tham số này bị bỏ qua, thì tên quy tắc sẽ được đặt thành tên của biến toàn cục Starlark đầu tiên để liên kết với quy tắc này trong mô-đun .bzl được khai báo. Do đó, foo_library = rule(...) không cần chỉ định tham số này nếu tên là foo_library.

Việc chỉ định tên rõ ràng cho quy tắc sẽ không thay đổi khi bạn được phép tạo thực thể cho quy tắc đó.

chọn

unknown select(x, no_match_error='')

select() là hàm trợ giúp khiến thuộc tính quy tắc có thể định cấu hình. Xem bách khoa toàn thư về cách xây dựng để biết thông tin chi tiết.

Thông số

Thông số Nội dung mô tả
x bắt buộc
Một lệnh liên kết các điều kiện cấu hình với các giá trị. Mỗi khoá là một Nhãn hoặc một chuỗi nhãn giúp xác định một thực thể config_setting hoặc binding_value. Xem tài liệu về macro để biết thời điểm sử dụng Nhãn thay vì chuỗi.
no_match_error mặc định = ''
Lỗi tuỳ chỉnh (không bắt buộc) để báo cáo nếu không có điều kiện nào khớp.

single_version_override

None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)

Chỉ định rằng một phần phụ thuộc vẫn phải đến từ một sổ đăng ký, nhưng phiên bản của phần phụ thuộc đó phải được ghim, hoặc sổ đăng ký bị ghi đè, hoặc một danh sách các bản vá được áp dụng. Lệnh này chỉ có hiệu lực trong mô-đun gốc. Nói cách khác, nếu một mô-đun được người khác sử dụng làm phần phụ thuộc, thì các cơ chế ghi đè của chính mô-đun đó sẽ bị bỏ qua.

Thông số

Thông số Nội dung mô tả
module_name bắt buộc
Tên của phần phụ thuộc mô-đun Bazel để áp dụng chế độ ghi đè này.
version default = ''
Ghi đè phiên bản đã khai báo của mô-đun này trong biểu đồ phần phụ thuộc. Nói cách khác, mô-đun này sẽ được "ghim" vào phiên bản ghi đè này. Bạn có thể bỏ qua thuộc tính này nếu tất cả thuộc tính muốn ghi đè là sổ đăng ký hoặc các bản vá.
registry default = ''
Ghi đè sổ đăng ký cho mô-đun này; thay vì tìm mô-đun này từ danh sách sổ đăng ký mặc định, bạn nên sử dụng sổ đăng ký đã cho.
patches Iterable of strings; default = []
Danh sách các nhãn trỏ đến tệp bản vá áp dụng cho mô-đun này. Các tệp bản vá phải tồn tại trong cây nguồn của dự án cấp cao nhất. Các quy tắc này được áp dụng theo thứ tự danh sách.
patch_cmds Iterable of strings; mặc định = []
Trình tự các lệnh Bash sẽ được áp dụng trên Linux/Macos sau khi áp dụng bản vá.
patch_strip mặc định = 0
Giống như đối số --strip của bản vá Unix.

đã sắp xếp

list sorted(iterable, *, key=None, reverse=False)

Trả về danh sách được sắp xếp mới chứa tất cả phần tử của chuỗi lặp lại đã cung cấp. Có thể xảy ra lỗi nếu không thể so sánh cặp phần tử x, y bất kỳ bằng cách dùng x < y. Các phần tử được sắp xếp theo thứ tự tăng dần, trừ phi đối số ngược là True. Trong trường hợp này, thứ tự sẽ giảm dần. Sắp xếp ổn định: các phần tử so sánh bằng nhau vẫn giữ nguyên thứ tự tương đối ban đầu.
sorted([3, 5, 4]) == [3, 4, 5]

Thông số

Thông số Nội dung mô tả
iterable bắt buộc
Trình tự lặp lại để sắp xếp.
key mặc định = Không có
Một hàm không bắt buộc được áp dụng cho mỗi phần tử trước khi so sánh.
reverse mặc định = Sai
Trả về kết quả theo thứ tự giảm dần.

str

string str(x)

Chuyển đổi bất kỳ đối tượng nào thành chuỗi. Điều này rất hữu ích khi gỡ lỗi.
str("ab") == "ab"
str(8) == "8"

Thông số

Thông số Nội dung mô tả
x bắt buộc
Đối tượng cần chuyển đổi.

tag_class

tag_class tag_class(attrs={}, *, doc='')

Tạo một đối tượng tag_class mới để xác định giản đồ thuộc tính cho một lớp thẻ. Đây là các đối tượng dữ liệu có thể sử dụng được trong phần mở rộng về mô-đun.

Thông số

Thông số Nội dung mô tả
attrs mặc định = {}
Một từ điển để khai báo tất cả các thuộc tính của lớp thẻ này. Thuộc tính này ánh xạ từ tên thuộc tính đến đối tượng thuộc tính (xem mô-đun attr).
doc default = ''
Nội dung mô tả về lớp thẻ có thể trích xuất bằng công cụ tạo tài liệu.

tuple

tuple tuple(x=())

Trả về một bộ dữ liệu có cùng các phần tử với giá trị lặp lại đã cho.
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)

Thông số

Thông số Nội dung mô tả
x mặc định = ()
Đối tượng cần chuyển đổi.

loại

string type(x)

Trả về tên loại của đối số. Việc này rất hữu ích khi gỡ lỗi và kiểm tra loại. Ví dụ:
type(2) == "int"
type([1]) == "list"
type(struct(a = 2)) == "struct"
Hàm này có thể thay đổi trong tương lai. Để viết mã tương thích với Python và hướng đến tương lai, chỉ sử dụng mã này để so sánh các giá trị trả về:
if type(x) == type([]):  # if x is a list

Thông số

Thông số Nội dung mô tả
x bắt buộc
Đối tượng cần kiểm tra loại.

use_extension

module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False, isolate=False)

Trả về một đối tượng proxy đại diện cho một tiện ích mô-đun; bạn có thể gọi các phương thức của tiện ích đó để tạo thẻ tiện ích mô-đun.

Thông số

Thông số Nội dung mô tả
extension_bzl_file bắt buộc
Nhãn cho tệp Starlark xác định đuôi mô-đun.
extension_name bắt buộc
Tên của tiện ích mô-đun cần sử dụng. Biểu tượng có tên này phải được xuất bằng tệp Starlark.
dev_dependency mặc định = False
Nếu đúng, việc sử dụng tiện ích mô-đun này sẽ bị bỏ qua nếu mô-đun hiện tại không phải là mô-đun gốc hoặc "--ignore_dev_dependency" được bật.
isolate mặc định = Sai
Thử nghiệm. Tham số này đang trong giai đoạn thử nghiệm và có thể thay đổi bất cứ lúc nào. Vui lòng không phụ thuộc vào nó. Bạn có thể bật tính năng này trên cơ sở thử nghiệm bằng cách đặt ---experimental_isolated_extension_usages
Nếu đúng, việc sử dụng tiện ích mô-đun sẽ được tách biệt với tất cả các trường hợp sử dụng khác, cả trong mô-đun này và các mô-đun khác. Thẻ được tạo cho mục đích sử dụng này không ảnh hưởng đến các mục đích sử dụng khác và kho lưu trữ do tiện ích tạo cho mục đích sử dụng này sẽ khác biệt với tất cả kho lưu trữ khác do tiện ích tạo.

Tham số này hiện đang trong giai đoạn thử nghiệm và chỉ hoạt động với cờ --experimental_isolated_extension_usages.

use_repo

None use_repo(extension_proxy, *args, **kwargs)

Nhập một hoặc nhiều kho lưu trữ được tạo bởi tiện ích mô-đun nhất định vào phạm vi của mô-đun hiện tại.

Thông số

Thông số Nội dung mô tả
extension_proxy bắt buộc
Đối tượng proxy mở rộng của mô-đun được lệnh gọi use_extension trả về.
args bắt buộc
Tên của các kho lưu trữ cần nhập.
kwargs bắt buộc
Chỉ định một số kho lưu trữ nhất định để nhập vào phạm vi của mô-đun hiện tại bằng các tên khác. Khoá phải là tên để sử dụng trong phạm vi hiện tại, trong khi giá trị phải là tên ban đầu do tiện ích mô-đun xuất.

mức hiển thị

None visibility(value)

Đặt chế độ hiển thị tải của mô-đun .bzl hiện đang được khởi động.

Chế độ hiển thị tải của một mô-đun chi phối việc các tệp BUILD và .bzl khác có thể tải mô-đun đó hay không. (Chế độ này khác với chế độ hiển thị mục tiêu của tệp nguồn .bzl cơ bản, vốn chi phối liệu tệp có thể xuất hiện dưới dạng phần phụ thuộc của các mục tiêu khác hay không.) Chế độ hiển thị tải hoạt động ở cấp độ gói: Để tải một mô-đun, tệp thực hiện việc tải phải nằm trong một gói đã được cấp chế độ hiển thị cho mô-đun. Mô-đun luôn có thể được tải trong gói của chính nó, bất kể mô-đun đó có ở chế độ hiển thị nào.

visibility() chỉ có thể được gọi một lần đối với mỗi tệp .bzl và chỉ ở cấp cao nhất, không phải bên trong một hàm. Kiểu ưu tiên là đặt lệnh gọi này ngay bên dưới các câu lệnh load() và mọi logic ngắn gọn cần thiết để xác định đối số.

Nếu bạn đặt cờ --check_bzl_visibility thành false (sai), thì các lỗi vi phạm về khả năng hiển thị tải sẽ phát ra cảnh báo nhưng vẫn giữ nguyên bản dựng.

Thông số

Thông số Nội dung mô tả
value bắt buộc
Một danh sách các chuỗi thông số kỹ thuật của gói hoặc một chuỗi thông số kỹ thuật của gói.

Thông số kỹ thuật của gói phải tuân theo định dạng giống như đối với package_group, ngoại trừ việc không cho phép thông số kỹ thuật phủ định về gói. Tức là thông số kỹ thuật có thể có các dạng:

  • "//foo": gói //foo
  • "//foo/...": gói //foo và tất cả các gói con của gói đó.
  • "public" hoặc "private": tất cả các gói hoặc không có gói nào tương ứng

Không được sử dụng cú pháp "@"; tất cả thông số kỹ thuật được diễn giải tương ứng với kho lưu trữ của mô-đun hiện tại.

Nếu value là một danh sách chuỗi, thì tập hợp các gói được cấp khả năng hiển thị cho mô-đun này là tập hợp các gói được đại diện cho từng quy cách. (Danh sách trống có tác dụng tương tự như private.) Nếu value là một chuỗi đơn thì chuỗi này sẽ được xử lý như thể đó là danh sách singleton [value].

Lưu ý rằng các cờ --incompatible_package_group_has_public_syntax--incompatible_fix_package_group_reporoot_syntax không ảnh hưởng đến đối số này. Các giá trị "public""private" luôn có sẵn, và "//..." luôn được hiểu là "tất cả các gói trong kho lưu trữ hiện tại".

không gian làm việc

None workspace(name)

Hàm này chỉ có thể dùng trong tệp WORKSPACE và phải được khai báo trước tất cả các hàm khác trong tệp WORKSPACE. Mỗi tệp WORKSPACE phải có một hàm workspace.

Đặt tên cho không gian làm việc này. Tên Workspace phải là nội dung mô tả kiểu gói Java của dự án, dùng dấu gạch dưới làm dấu phân tách. Ví dụ: github.com/bazelbuild/bazel phải dùng com_github_bazelbuild_bazel.

Tên này được dùng cho thư mục lưu trữ các tệp chạy của kho lưu trữ. Ví dụ: nếu có một tệp chạy foo/bar trong kho lưu trữ cục bộ và tệp WORKSPACE chứa workspace(name = 'baz'), thì tệp chạy sẽ nằm trong mytarget.runfiles/baz/foo/bar. Nếu bạn không chỉ định tên không gian làm việc, thì tệp runfile sẽ được liên kết tượng trưng với bar.runfiles/foo/bar.

Tên quy tắc Kho lưu trữ từ xa phải là tên không gian làm việc hợp lệ. Ví dụ: bạn có thể có maven_jar(name = 'foo'), nhưng không phải maven_jar(name = 'foo%bar'), vì Bazel sẽ cố gắng ghi tệp WORKSPACE cho maven_jar chứa workspace(name = 'foo%bar').

Thông số

Thông số Nội dung mô tả
name bắt buộc
tên của không gian làm việc. Tên phải bắt đầu bằng một chữ cái và chỉ có thể chứa chữ cái, chữ số, dấu gạch dưới, dấu gạch ngang và dấu chấm.

zip

list zip(*args)

Trả về list của tuple, trong đó bộ dữ liệu thứ i chứa phần tử thứ i từ mỗi chuỗi đối số hoặc đối số lặp. Danh sách này có kích thước của dữ liệu đầu vào ngắn nhất. Với một đối số có thể lặp lại, hàm này trả về danh sách 1 bộ giá trị. Không có đối số, hàm này sẽ trả về một danh sách trống. Ví dụ:
zip()  # == []
zip([1, 2])  # == [(1,), (2,)]
zip([1, 2], [3, 4])  # == [(1, 3), (2, 4)]
zip([1, 2], [3, 4, 5])  # == [(1, 3), (2, 4)]

Thông số

Thông số Nội dung mô tả
args bắt buộc
để nén.