solhint
Version:
Solidity Code Linter
31 lines (24 loc) • 894 B
JavaScript
const BaseChecker = require('./../base-checker')
const TreeTraversing = require('./../../common/tree-traversing')
const traversing = new TreeTraversing()
class ExternalCallChecker extends BaseChecker {
exitExpression(ctx) {
this.validateSend(ctx)
this.validateCallValue(ctx)
}
validateSend(ctx) {
if (ctx.getText().includes('.send(')) {
const hasVarDeclaration = traversing.statementNotContains(ctx, 'VariableDeclarationContext')
const hasIfStatement = traversing.statementNotContains(ctx, 'IfStatementContext')
if (!hasIfStatement && !hasVarDeclaration) {
this.error(ctx, 'check-send-result', 'Check result of "send" call')
}
}
}
validateCallValue(ctx) {
if (ctx.getText().endsWith('.call.value')) {
this.error(ctx, 'avoid-call-value', 'Avoid to use ".call.value()()"')
}
}
}
module.exports = ExternalCallChecker