check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(
DcqRegistry registry,
) {
registry.addCompilationUnit((node) {
final filePath = registry.context.currentUnit?.file.path ?? '';
final separatorIndex = filePath.lastIndexOf(RegExp(r'[/\\]'));
final fileName = separatorIndex < 0
? filePath
: filePath.substring(separatorIndex + 1);
if (!fileName.endsWith('.dart')) return;
if ((configStringList(ruleConfig, 'exclude') ??
const ['.g.dart', '.mapper.dart', '.freezed.dart'])
.any(fileName.endsWith)) {
return;
}
final baseName = fileName.substring(0, fileName.length - 5);
if (baseName.startsWith('_')) return;
final expectedName = _snakeToPascal(baseName);
final typeDeclarations = node.declarations.where(
(d) =>
d is ClassDeclaration ||
d is EnumDeclaration ||
d is MixinDeclaration ||
d is ExtensionTypeDeclaration ||
(!(configBool(ruleConfig, 'ignore-typedefs') ?? true) &&
d is GenericTypeAlias),
);
if (typeDeclarations.isEmpty) return;
final first = typeDeclarations.first;
final nameToken = switch (first) {
final ClassDeclaration d => d.namePart.typeName,
final EnumDeclaration d => d.namePart.typeName,
final MixinDeclaration d => d.name,
final ExtensionTypeDeclaration d => d.primaryConstructor.typeName,
final GenericTypeAlias d => d.name,
_ => null,
};
if (nameToken == null) return;
final name = nameToken.lexeme;
if (name.startsWith('_')) return;
if (name != expectedName &&
name.toLowerCase() != expectedName.toLowerCase()) {
reportAtToken(nameToken);
}
});
}