本文介绍 solhint 规范 solidity 代码。
概述
solhint
solhint 和 ethlint 都是 Solidity linting 工具,但从 nmm trends 可以看出 solhint 使用次数遥遥领先。所以选择 solhint 作为 lint 工具。
安装:
npm install --save-dev solhint
生成 配置 文件 .solhint.json
:
npx solhint --init
TL:DR 推荐使用下面的配置:
可以通过 npx solhint list-rules
检查配置是否生效。
更多配置规则参见 solhint Rules。
要忽略不需要验证的文件,可以使用 .solhintignore
文件。它支持 .gitignore
格式的规则。
还可以通过 注释来控制 solhint 的检查行为。
在 package.json 中添加用于 lint 的 script:
{
"lint:sol": "npx solhint src/**/*.sol script/**/*.sol test/**/*.sol"
}
执行 npm run lint:sol
来检查代码是否符合配置的规则。
Slither
mythril
mythril 是一款 EVM 字节码安全分析工具。它可以检测为 EVM 兼容区块链构建的智能合约中的安全漏洞。它使用 symbolic execution, SMT solving and taint analysis 来检测各种安全漏洞。MythX 安全分析平台也使用该工具(与其他工具和技术相结合)。
建议智能合约开发人员使用 MythX 工具,因为它对可用性进行了优化,并涵盖了更广泛的安全问题。
要使用 mythril 测试项目,这里有一个示例 mythril.config.json
:
安装
如果同时使用 mythril 和 slither ,二者都是用 python 编写的,二者在一些依赖上存在版本冲突,所以 mythril 使用 docker 安装和使用。
docker pull mythril/myth
使用
myth analyze src/Contract.sol --solc-json mythril.config.json
如果通过 docker 安装:
docker run -v $(pwd):/code --workdir /code mythril/myth analyze src/*.sol --solc-json mythril.config.json
有关详细信息,请参阅 mythril 文档。
您可以使用 --solc-json
标志将自定义 Solc 编译器输出传递给 Mythril。 例如:
评论