forge snapshot
名称
forge-snapshot - 创建每个测试的 Gas 使用快照。
简介
forge snapshot [options]
描述
创建每个测试的 Gas 使用快照。
结果被写入一个名为 .gas-snapshot 的文件中。你可以通过传递 --snap <PATH> 来改变该文件的名称。
在快照中默认包括模糊测试。它们使用一个静态种子来实现确定性的结果。
快照可以用 --diff 和 --check 来比较。第一个标志将输出一个差异,第二个标志将输出一个差异 同时 如果快照不匹配,则以代码 1 退出。
选项
快照选项
--asc
按所用 Gas 对结果进行排序(升序)。
--desc
按所用 Gas 对结果进行排序(降序)。
--min min_gas
只包括使用了超过给定数量的 Gas 的测试。
--max max_gas
只包括使用了小于给定数量的 Gas 的测试。
--tolerance threshold
容忍指定百分比范围内的 gas 偏差 (0-100)。
--diff path
输出一个与预先存在的快照的差异。
默认情况下,比较是通过 .gas-snapshot 完成的。
--check path
与预先存在的快照进行比较,如果它们不匹配,则以代码 1 退出。
如果快照不匹配,则输出一个差异。
默认情况下,比较是通过 .gas-snapshot 完成的。
--snap path
快照的输出文件。默认:.gas-snapshot。
Test Options
-m regex
--match regex
只运行与指定正则匹配的测试函数。
已废弃: 请见 --match-test.
--match-test regex
只运行与指定正则匹配的测试函数。
--no-match-test regex
只运行与指定正则不匹配的测试函数。
--match-contract regex
只运行与指定正则匹配的测试合约。
--no-match-contract regex
只运行与指定正则不匹配的测试合约。
--match-path glob
只运行与指定 glob 匹配的测试源文件。
--no-match-path glob
只运行与指定 glob 不匹配的测试源文件。
--debug regex
在调试器中运行一个测试。
传递给这个标志的参数是你想要运行的测试函数的名称,它的作用与 --match-test 相同。
如果符合你指定标准的测试超过一个,你必须添加额外的过滤器,直到只找到一个测试(见 --match-contract 和 -match-path)。
无论测试的结果如何,匹配的测试将在调试器中打开。
如果匹配的测试是一个模糊测试,那么它将在第一个失败用例上打开调试器。如果模糊测试没有失败,它将在最后一个模糊用例下打开调试器。
为了更精细地控制运行哪种模糊用例,请参阅 forge debug 。
--gas-report
打印一个 Gas 报告。
--allow-failure
即使测试失败,也以代码 0 退出。
--fail-fast
在第一次测试失败时终止测试。
--etherscan-api-key key
Etherscan 的 API 密钥。如果被设置了,同时 --fork-url 也被设置了,就会使用 Etherscan 解码追踪。
环境变量:ETHERSCAN_API_KEY
EVM 选项
-f url
--rpc-url url
--fork-url url
通过远程端点获取状态,而不是从一个空的状态开始。
如果你想从一个特定的区块号码中获取状态,请参阅
--fork-block-number.
--fork-block-number block
通过一个远程端点从一个特定的区块号中获取状态。请见 --fork-url.
--fork-retry-backoff <BACKOFF>
初始化遇到错误时的重试退避。
--no-storage-caching
明确禁止使用 RPC 缓存。
所有存储槽完全从端点读取。请见 --fork-url。
-v
--verbosity
EVM 的日志级别。
多次传递,以提高日志级别 (例如 -v, -vv, -vvv)。
日志级别: - 2: 打印所有测试的日志 - 3: 打印失败测试的执行追踪 - 4: 对所有测试进行跟踪,并对失败的测试进行设置跟踪 - 5: 打印所有测试的执行和设置跟踪
--sender address
用作执行测试的地址
--initial-balance balance
已部署合约的初始余额
--ffi
开启 FFI 作弊码
Executor 选项
--base-fee <FEE>
--block-base-fee-per-gas <FEE>
一个区块的基本费用(单位:Wei)。
--block-coinbase address
区块的 coinbase。
--block-difficulty difficulty
区块的难度。
--block-gas-limit gas_limit
区块的 Gas 限制。
--block-number block
区块号。
--block-timestamp timestamp
区块的时间戳(以秒为单位)。
--chain-id chain_id
链 ID。
--gas-limit gas_limit
区块的 Gas 限制。
--gas-price gas_price
Gas 价格(单位:Wei)。
--tx-origin address
交易的 origin。
缓存选项
--force
清除缓存和 artifacts 文件夹并重新编译。
链接器选项
--libraries libraries
设置预链接库。
参数的格式必须是 <remapped path to lib>:<library name>:<address>,例如 src/Contract.sol:Library:0x...。
也可以在你的配置文件中设置为 libraries = ["<path>:<lib name>:<address>"].
编译器选项
--optimize
激活 Solidity 优化器。
--optimizer-runs runs
优化器 runs 的选项。
--via-ir
使用 Yul 作为编译管道的中间语言。
--revert-strings
如何处理 revert 和 require 的结果字符串。
--use solc_version
指定 solc 的版本,或一个本地 solc 的路径,以进行编译。
有效值的格式为 x.y.z,solc:x.y.z 或 path/to/solc。
--offline
不使用网络,缺失的 solc 版本将不会被安装。
--no-auto-detect
不使用 solc 的自动检测。
--ignored-error-codes error_codes
从错误代码中忽略 solc 警告。该参数是一个以逗号分隔的错误代码列表。
--extra-output selector
额外的产出要包括在合约的 artifact 中。
示例键: abi, storageLayout, evm.assembly, ewasm, ir, ir-optimized, metadata。
关于完整的描述, 请参阅 [Solidity docs][output-desc]。
--extra-output-files selector
额外的输出写到单独的文件。
示例键: abi, storageLayout, evm.assembly, ewasm, ir, ir-optimized, metadata.
关于完整的描述, 请参阅 [Solidity docs][output-desc].
--evm-version version
目标 EVM 版本
Project Options
--build-info
生成构建信息文件。
--build-info-path path
输出目录的路径,构建信息文件将被写入。
--root path
项目的根路径。默认情况下,这是当前 git 仓库的根目录,或当前工作目录。
-C path
--contracts path
合约源代码目录。
环境变量:DAPP_SRC
--lib-paths path
库的文件夹路径。
-R remappings
--remappings remappings
项目的重映射。
该参数是一个逗号分隔的重映射列表,格式为 <source>=<dest>。
--cache-path path
编译器缓存的路径。
--config-path file
配置文件的路径。
--hh
--hardhat
这是一个方便的标志,与传递 --contracts contracts --lib-paths node-modules 相同。
-o path
--out path
项目的 artifacts 目录。
--silent
抑制所有输出。
Display Options
-j
--json
将部署信息打印成 JSON 格式。
普通选项
-h
--help
打印帮助信息。
例子
-
创建一个快照:
forge snapshot -
生成一个差异:
forge snapshot --diff -
检查快照是否匹配:
forge snapshot --check