LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > Solidity Linting和Formatting的使用教程

Solidity Linting和Formatting的使用教程

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

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

· linters自动分析代码是否存在可能的编程样式错误(常见示例:eslint for javascript)
· Formatters根据预定义的规则和缩进默认值自动格式化代码(例子:gofmt for go)

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

Linter

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

Solhint

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

> npm install --save-dev solhint

配置Solhint

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

> ./node_modules/.bin/solhint init-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 -f table contracts/**/*.sol"

上面的命令有几点需要注意:

· Solhint运行在与文件模式匹配的globs上。在上面,它运行在contract目录中的所有** / * .sol文件中
· -f表以表格形式显示结果。您可以选择其他选项(例如unix,tap)

Solhint动作

> npm run solhint

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

Formatter

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

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

安装Prettier

> npm install --save-dev prettier prettier-plugin-solidity

配置Prettier

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

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

{
"printWidth": 100,
"singleQuote": true
}

配置Solhint使用Prettier

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

> npm install --save-dev solhint-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 --write contracts/**/*.sol"

然后在输入命令行

> npm run prettier:solidity

Git Hooks(可选)

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

设置Husky

我们将使用Husky,一个非常有用的npm模块,它可以处理git hook的内部问题。

npm install --save-dev husky

然后,在package.json中添加几行。在下面的示例中,我们使用pre-push hook来运行我们的Prettier格式化程序。

// package.json
{
"husky": {
"hooks": {
"pre-push": "npm run prettier:solidity"
}
}
}

现在,每当团队中的任何开发人员推到Github时,formatter都会运行。

—-

编译者/作者:不详

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...