check method

  1. @override
void check(
  1. 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);
      }
    }
  });
}