区块链研究实验室|Solidity Linting和Formatting的使用教程

以太坊开发人员社区开始开发一些非常棒的工具,让我们更加接近自动化的工作流和开发人员的“cockpit”,例如我们现在使用的比较成熟的语言:javascript或go。

其中有两个工具是触及了开发人员工作流程最核心的部分编写代码:

•linters自动分析代码是否存在可能的编程样式错误(常见示例:eslint for javascript)

•Formatters根据预定义的规则和缩进默认值自动格式化代码(例子:gofmt for go)

我们在使用Truffle框架的repo的环境中涉及到这些工具,但是这些步骤可以适用于任何框架中。

Linter

在本教程中,我们将重点介绍solhint,不过我强烈建议您尝试一下ethlint。

Solhint

首先,确保您位于项目根目录中,然后使用NPM或Yarn添加solhint模块。

npminstall–save-devsolhint
配置Solhint

使用基本配置文件初始化solhint。

./node_modules/.bin/solhintinit-config
你应该在项目的根目录中创建一个./solhint.json文件。这个文件指定了您希望solhint为哪个规则执行lint。solhint对安全规则、样式指南规则和最佳实践规则有着非常出色的覆盖。

一个很大的问题:默认情况下,很少有规则被启用。经过一些试验和错误后,我发现solhint:稍微好一些(与solhint相比:Solhint在文档中列出的默认值)。

我强烈建议您浏览一下规则列表并添加到您想要的./solhint.json。我个人发现安全规则和最佳实践非常有用。

{“extends”:“solhint:recommended”,“plugins”:[],“rules”:{“avoid-throw”:false,“avoid-suicide”:“error”,“avoid-sha3”:“warn”}}

Solhint ignores

与.gitignore类似,您可以获取solhint去忽略文件和文件夹

node_modules/migrations/

Solhint脚本

编辑package.json以包含一个新脚本来运行Solhint。
“solhint”:"./node_modules/.bin/solhint-ftablecontracts/**/*.sol"
上面的命令有几点需要注意:

•Solhint运行在与文件模式匹配的globs上。在上面,它运行在contract目录中的所有** / * .sol文件中

•-f表以表格形式显示结果。您可以选择其他选项(例如unix,tap)

Solhint动作

npmrunsolhint
您可能会看到一堆错误,尤其是缩进和样式错误。您无需手动修复这些!我们的下一个工具(formatter)将对此有所帮助。

Formatter

Prettier是一款出色的工具,可根据预定义的样式指南自动格式化代码库。只需在团队层面上就规则达成一致,然后Prettier将以相同的方式自动编码每个人的代码。

prettier solidity是与solhint一起使用的solidity文件的prettier。它有助于自动修复solhint发现的许多错误,特别是像缩进和代码样式这样简单的错误。

安装Prettier

npminstall–save-devprettierprettier-plugin-solidity
配置Prettier

你可以使用.prettierrc文件配置prettier。大多数规则都是使用solhint现成的,但您可能需要添加或关闭其中的一些规则。我建议你保持规则尽量简短。

您可以阅读Prettier文档以获取更多详细信息。您还可以在.prettierignore中指定要忽略的文件。

{“printWidth”:100,“singleQuote”:true}

配置Solhint使用Prettier

安装solhint-plugin-prettier,这使得solhint可以很好地使用prettier solidity。

npminstall–save-devsolhint-plugin-prettier
然后更新./solhint.json以将Prettier添加为插件和规则。

{“extends”:[“solhint:recommended”],“rules”:{“prettier/prettier”:“error”,“avoid-throw”:false,“avoid-suicide”:“error”,“avoid-sha3”:“warn”},“plugins”:[“prettier”]}

运行Prettier-Solidity

将prettier命令添加到package.json中。–write标志将格式化并覆盖现有文件。根据prettier文档,最好先提交代码。
“prettier:solidity”:"./node_modules/.bin/prettier–writecontracts/**/*.sol"
然后在输入命令行

npmrunprettier:solidity

Git Hooks(可选)

在理想的世界中,我们总是记得在将代码推送到我们团队的代码库之前运行我们的linter和formatter。我们可以使用Git Hooks自动执行此过程。

设置Husky

我们将使用Husky,一个非常有用的npm模块,它可以处理git hook的内部问题。
npminstall–save-devhusky
然后,在package.json中添加几行。在下面的示例中,我们使用pre-push hook来运行我们的Prettier格式化程序。

//package.json{“husky”:{“hooks”:{“pre-push”:“npmrunprettier:solidity”}}}

本文来源于陀螺财经专栏作家:区块链研究实验室,区块链研究实验室简介:专注区块链技术研发,区块链大学知识培训,区块链技术研发社区和区块链孵化

区块链研究实验室专栏:https://www.tuoluocaijing.cn/columns/author355424

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值