check method

  1. @override
void check(
  1. DcqRegistry registry
)

Implementation

@override
void check(DcqRegistry registry) {
  var hasPatrolImport = false;

  registry.addImportDirective((node) {
    final uri = node.uri.stringValue;
    if (uri != null && uri.startsWith('package:patrol')) {
      hasPatrolImport = true;
    }
  });

  final pendingNodes = <InstanceCreationExpression>[];

  registry.addInstanceCreationExpression((node) {
    final typeName = node.constructorName.type.name.lexeme;
    if (typeName != 'Key' && typeName != 'ValueKey') return;

    final args = node.argumentList.arguments;
    if (args.length == 1 && args.first is SimpleStringLiteral) {
      pendingNodes.add(node);
    }
  });

  registry.afterLibrary(() {
    if (!hasPatrolImport) return;
    for (final node in pendingNodes) {
      reportAtNode(node);
    }
  });
}