该文档介绍了Bitcoin Core开发者仓库中用于开发者的一些工具,包括:用于检查fuzz覆盖非确定性的工具、检查单元测试覆盖非确定性的工具、格式化git diff的脚本、管理版权信息的脚本、自动创建manpage的脚本、生成headerssync模块参数的脚本、生成bitcoin.conf文件的脚本以及查找循环依赖的脚本。
该目录包含用于致力于此仓库的开发者的工具。
一个用于检查fuzz coverage中非确定性的工具。要获取帮助,运行:
cargo run --manifest-path ./contrib/devtools/deterministic-fuzz-coverage/Cargo.toml -- --help
要执行该工具,编译必须使用以下构建选项完成:
-DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' -DBUILD_FOR_FUZZING=ON -DCMAKE_CXX_FLAGS='-fprofile-instr-generate -fcoverage-mapping'
必须安装llvm-profdata和llvm-cov。此外,qa-assets 仓库必须已经被克隆。最后,在运行该工具之前,必须选择一个fuzz target:
cargo run --manifest-path ./contrib/devtools/deterministic-fuzz-coverage/Cargo.toml -- $PWD/build_dir $PWD/qa-assets/fuzz_corpora fuzz_target_name
一个用于检查单元测试覆盖率中非确定性的工具。要获取帮助,运行:
cargo run --manifest-path ./contrib/devtools/deterministic-unittest-coverage/Cargo.toml -- --help
要执行该工具,编译必须使用以下构建选项完成:
-DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' -DCMAKE_CXX_FLAGS='-fprofile-instr-generate -fcoverage-mapping'
必须安装llvm-profdata和llvm-cov。
cargo run --manifest-path ./contrib/devtools/deterministic-unittest-coverage/Cargo.toml -- $PWD/build_dir <boost unittest filter>
一个根据.clang-format格式化统一git差异的脚本。
需要clang-format
,例如通过macOS上的brew install clang-format
或Debian/Ubuntu上的sudo apt install clang-format
安装。
例如,要格式化最后一次提交,上下文为0行, 应该从git根文件夹调用该脚本,如下所示。
git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
提供用于管理仓库源文件中The Bitcoin Core developers
的版权头部的实用程序。它有三个子命令:
$ ./copyright_header.py report <base_directory> [verbose]
$ ./copyright_header.py update <base_directory>
$ ./copyright_header.py insert <file>
在没有参数的情况下运行这些子命令会显示用法字符串。
生成在仓库源文件中找到的所有版权头声明的报告。有助于快速可视化标题的状态。指定verbose
将列出每个类别的文件的完整文件名。
更新The Bitcoin Core developers
的所有版权标题,这些标题在比列表中列出的年份更新的年份中进行了更改。例如:
// Copyright (c) <firstYear>-<lastYear> The Bitcoin Core developers
将更新为:
// Copyright (c) <firstYear>-<lastModifiedYear> The Bitcoin Core developers
其中<lastModifiedYear>
是从git log
历史记录中获得的。
此子命令还处理仅具有单个年份的版权头。在这些情况下:
// Copyright (c) <year> The Bitcoin Core developers
将更新为:
// Copyright (c) <year>-<lastModifiedYear> The Bitcoin Core developers
其中更新是适当的。
在文件顶部插入The Bitcoin Core developers
的版权标题,样式为Python或C ++样式,具体取决于文件扩展名。如果该文件是Python文件,并且第一行以#!
开头,则该标头将插入在其下面的行中。
版权日期将设置为<year_introduced>-<current_year>
,其中<year_introduced>
是根据git log
历史记录。如果
<year_introduced>
等于<current_year>
,它将被设置为单一年份,而不是两个用连字符连接的年份。
如果该文件已经具有The Bitcoin Core developers
的版权,则脚本将退出。
一个小型脚本,通过使用 -help 选项运行release二进制文件来自动在 ../../doc/man 中创建 manpage。 这需要 help2man 可以在以下位置找到:https://www.gnu.org/software/help2man/
此脚本假定一个名为 build
的构建目录,如示例构建文档中所建议的那样。
要将其用于其他构建目录,请设置 BUILDDIR
。
例如:
BUILDDIR=$PWD/my-build-dir contrib/devtools/gen-manpages.py
一个为 headerssync 模块(src/headerssync.cpp)生成最佳参数的脚本。它不接受命令行选项,因为它的所有配置都在文件顶部设置。它在 PyPy 内部运行速度快很多倍。 调用:
pypy3 contrib/devtools/headerssync-params.py
通过解析 bitcoind --help
的输出来在 share/examples/
中生成一个 bitcoin.conf 文件。此脚本在发行版过程中运行,以将 bitcoin.conf 包含在发行版二进制文件中,用户也可以运行该脚本以在本地生成文件。 在生成文件作为发行版过程的一部分时,请确保在运行脚本后提交更改。
此脚本假定一个名为 build
的构建目录,如示例构建文档中所建议的那样。
要将其用于其他构建目录,请设置 BUILDDIR
。
例如:
BUILDDIR=$PWD/my-build-dir contrib/devtools/gen-bitcoin-conf.sh
从源树的根目录 (src/
) 运行此脚本以查找源代码中的循环依赖项。
这仅查看哪些文件包含其他文件,将 .cpp
和 .h
文件视为一个单元。
使用示例:
cd .../src
../contrib/devtools/circular-dependencies.py {*,*/*,*/*/*}.{h,cpp}
- 原文链接: github.com/bitcoin/bitco...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!