bazel run 命令默认不会使用沙箱,但可以通过配置实现开启沙箱。具体实现方法如下:
在 WORKSPACE 文件中添加以下内容:
load("//tools/build_defs/repo:sandboxing.bzl", "sandboxed_execution")
sandboxed_execution(
feature_names = ["collect_coverage"],
debug_collect_coverage = True, # 调试开启并输出代码覆盖率
)
其中 feature_names 参数用来开启沙箱的特性,比如 collect_coverage 表示开启代码覆盖率收集。debug_collect_coverage 参数用来开启调试,并输出代码覆盖率信息。
同时,在项目根目录的 .bazelrc 文件中添加以下内容:
build:my_runconfig --spawn_strategy=sandboxed
run:my_runconfig --spawn-strategy=sandboxed
test --config=my_runconfig --test_strategy=enable_local_testjdk_support --test_output=errors --spawn_strategy=sandboxed
其中 my_runconfig 是自定义的配置名,spawn_strategy=sandboxed 表示运行命令时开启沙箱模式。
例如,运行 Python 程序时可以使用以下命令开启沙箱模式:
bazel run --spawn_strategy=sandboxed :hello_world
这样就可以在运行时自动启用沙箱模式,提高代码的安全性和稳定性。