runWithReporter method
Override this method to implement your lint rule.
Use context to register callbacks for AST node types:
context.addMethodInvocation((node) {
if (condition) {
reporter.atNode(node);
}
});
Implementation
@override
void runWithReporter(
SaropaDiagnosticReporter reporter,
SaropaContext context,
) {
context.addCompilationUnit((CompilationUnit unit) {
final LineInfo? lineInfo = unit.lineInfo;
final String content = context.fileContent;
if (lineInfo == null) return;
final List<String> lines = content.split('\n');
for (int i = 0; i < lines.length; i++) {
final String line = lines[i];
final Match? match = _ignoreLinePattern.firstMatch(line);
if (match == null) continue;
final String rest = match.group(1) ?? '';
final List<String> names = rest
.split(',')
.map((String s) => s.trim().toLowerCase().replaceAll('-', '_'))
.where((String s) => s.isNotEmpty)
.toList();
if (names.length <= 1) continue;
final Set<String> seen = {};
for (final String name in names) {
if (!seen.add(name)) {
final int offset = lineInfo.getOffsetOfLine(i + 1);
reporter.atOffset(offset: offset, length: line.length);
break;
}
}
}
});
}