问题描述
我正在使用 solhint 插件来检查 solidity 代码。但是我想为代码分析添加自定义规则。如何添加自定义规则作为规则集的一部分?
const BaseChecker = require('./../base-checker')
const ruleId = 'no-foos'
const Meta = {
type: 'naming',docs: {
description: `Don't use Foo for Contract name`,category: 'Style Guide Rules'
},isDefault: false,recommended: true,defaultSetup: 'warn',schema: null
}
class NoFoosAllowed extends BaseChecker {
constructor(reporter) {
super(reporter,ruleId,Meta)
}
ContractDeFinition(ctx) {
const { name } = ctx
if (name === 'Foo') {
this.reporter.error(ctx,this.ruleId,'Contracts cannot be named "Foo"')
}
}
}
module.exports = NoFoosAllowed
我已将上述代码保存到 rules->naming 文件夹中的新 js 文件中。我在我的 .solhint.json 文件中的 rules 属性中使用了“no-foos”规则 ID。
{
"extends": "solhint:all","plugins": [],"rules": {
"avoid-suicide": "error","avoid-sha3": "warn","no-foos" : "warn","var-name-mixedcase": "error"
}
}
解决方法
每个规则集循环遍历所有 rules 并根据 rule metadata 和 ruleset config 启用(或不启用)它。
因此,您可以在 rules
文件夹中创建自定义规则,并将其设置为您的规则集将启用的元数据组合。