使用 Coverage Gutters 更好地检查合约 Code Coverage

  • Confucian
  • 更新于 2023-10-07 22:11
  • 阅读 873

对于智能合约开发者来说,编写合约测试是非常重要的一项技能。 这里推荐VSCode的一款插件CoverageGutters它可以根据你所生成的 Code Coverage Report 文件

对于智能合约开发者来说,编写合约测试是非常重要的一项技能。或许我们不需要像审计那样严谨,但测试一定要覆盖到所有功能。通常需要 Code Coverage 来查看覆盖率。

这里推荐 VS Code 的一款插件 Coverage Gutters 它可以根据你所生成的 Code Coverage Report 文件定位你测试已覆盖/未覆盖的代码,并在行前提示出来,使得编写测试更加高效。

演示

笔者使用 Foundry 来创建智能合约项目并进行合约测试。

mkdir demo && cd demo
forge init

项目初始化后目录结构如下:

.
├── README.md
├── foundry.toml
├── lib
│   └── forge-std
├── script
│   └── Counter.s.sol
├── src
│   └── Counter.sol
└── test
    └── Counter.t.sol

6 directories, 5 files

自动生成了 Counter.sol 合约文件与对应的 Counter.t.sol 测试文件

去 VS Code 的插件市场安装 Coverage Gutters

coverage-gutters.png

使用 Foundry 生成 Code Coverage Report

forge coverage --report lcov

然后会发现生成了一个 lcov.info 文件

窗口定位到 src/Counter.sol 文件后,点击底部的 watch

watch.png

可以发现在测试已经覆盖到的代码行前出现绿色标记,同时底部显示覆盖率 100%

shot-1.png

修改 test/Counter.t.sol 添加函数

function decrease() public {
    number--;
}

更新 Code Coverage Report

forge coverage --report lcov

会发现新增的未测试函数行前出现红色标记,底部覆盖率变为 67%

shot-2.png

点赞 1
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Confucian
Confucian
0xDa6E...5500
Keep Learning