nelhage/rules_fuzzer

GitHub: nelhage/rules_fuzzer

为 Bazel 构建系统提供 libFuzzer 集成规则,自动化 clang 工具链配置和模糊测试目标构建。

Stars: 4 | Forks: 1

# `rules_fuzzer` -- bazel + libfuzzer 本仓库包含了将 [libfuzzer][libfuzzer] 用于 bazel 项目的规则。 除了下载和构建 libfuzzer 的规则外,它还包含相关规则和一个 [CROSSTOOL][crosstool],用于为你的构建下载和配置 clang 5.0.0,以及设置正确的编译器标志。 使用方法: - 将此仓库添加为 bazel external - 在你的 `WORKSPACE` 中,加载并调用 `fuzzer_externals`: load("@com_nelhage_fuzzer//:fuzzer.bzl", "fuzzer_externals") fuzzer_externals() - 将你的 fuzz target 定义为一个 `cc_binary`,并在 `deps` 中包含 `@clang_compiler_rt//:fuzzer`。此 target 将定义一个 `main` 方法。 - 使用内置的 `clang` 进行构建,通过 `--crosstool_top=@com_nelhage_rules_fuzzer//tools/cpp/fuzzer:toolchain`,并使用 `--features=fuzzer` 启用 fuzzer 插桩。 你也可以选择通过 `--features=asan`、`--features=leaksan` 和 `--features=ubsan` 来启用 [clang sanitizers][sanitizers]。这些 sanitizers 可以在一次构建中组合使用。