check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
registry.addBinaryExpression((node) {
final left = node.leftOperand;
final right = node.rightOperand;
final op = node.operator.lexeme;
// Pattern: x.indexOf(y) != -1, x.indexOf(y) == -1,
// x.indexOf(y) >= 0, x.indexOf(y) > -1, x.indexOf(y) < 0
if (left is MethodInvocation && left.methodName.name == 'indexOf') {
if ((op == '!=' || op == '==') && _isMinusOne(right)) {
reportAtNode(node);
} else if (op == '>' && _isMinusOne(right)) {
reportAtNode(node);
} else if (op == '>=' && _isZero(right)) {
reportAtNode(node);
} else if (op == '<' && _isZero(right)) {
reportAtNode(node);
}
}
// Reverse: -1 != x.indexOf(y)
if (right is MethodInvocation && right.methodName.name == 'indexOf') {
if ((op == '!=' || op == '==') && _isMinusOne(left)) {
reportAtNode(node);
}
}
});
}