使用solidity-coverage插件遇合约大小超限警告的解决咨询
解决solidity-coverage运行时合约大小超限错误的方法
solidity-coverage在插桩过程中会给合约注入额外代码以追踪覆盖率,这会让合约体积比正常编译时明显变大——这就是为什么正常编译没问题,但跑覆盖率时触发大小限制错误的原因。你添加的allowUnlimitedContractSize: true没生效,是因为这个配置需要放在solidity-coverage的专属配置块里,而非普通Hardhat网络配置。
具体解决方式:
- 在
hardhat.config.js或hardhat.config.ts中,新增solidity-coverage的专属配置:
module.exports = { // 其他原有配置... coverage: { allowUnlimitedContractSize: true, // 可按需添加其他coverage配置,比如指定测试路径、忽略特定合约等 } };
- 如果上述配置不生效,可直接在运行命令时追加参数强制忽略:
npx hardhat coverage --allow-unlimited-contract-size
另外,solidity-coverage v0.8.2存在少量与Hardhat配置兼容的小问题,若方便的话升级到最新版本也能规避这类问题,但上面两种方法已足够解决当前场景的问题。
内容的提问来源于stack exchange,提问作者Yves Toiser
相关产品推荐
相关产品推荐

