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.addSetOrMapLiteral((SetOrMapLiteral node) {
if (!node.isMap) return;
final List<String> stringKeys = <String>[];
for (final CollectionElement element in node.elements) {
if (element is MapLiteralEntry) {
final Expression key = element.key;
if (key is SimpleStringLiteral) {
stringKeys.add(key.value);
} else {
// Non-string key, skip ordering check
return;
}
}
}
// Check if keys are sorted
for (int i = 1; i < stringKeys.length; i++) {
if (stringKeys[i].compareTo(stringKeys[i - 1]) < 0) {
reporter.atNode(node);
return;
}
}
});
}