check method
void
check(
- DcqRegistry registry
)
Implementation
@override
void check(DcqRegistry registry) {
registry.addCompilationUnit((node) {
final unit = registry.context.currentUnit;
if (unit == null) return;
final filePath = unit.file.path;
// Only check files inside test/.
final testSeg = '${p.separator}test${p.separator}';
if (!filePath.contains(testSeg)) return;
// Skip non-test files.
if (!filePath.endsWith('_test.dart')) return;
final testIndex = filePath.lastIndexOf(testSeg);
final projectRoot = filePath.substring(0, testIndex);
final relativePath = filePath.substring(
testIndex + testSeg.length,
);
// Build expected lib path: test/src/foo_test.dart -> lib/src/foo.dart
final baseName = p.basenameWithoutExtension(relativePath);
if (!baseName.endsWith('_test')) return;
final srcName = baseName.substring(0, baseName.length - 5);
final dirName = p.dirname(relativePath);
final libPath = p.join(projectRoot, 'lib', dirName, '$srcName.dart');
// Note: uses dart:io directly; may not work in all analyzer host environments.
if (!File(libPath).existsSync()) {
final target = node.directives.isNotEmpty
? node.directives.first
: node.declarations.isNotEmpty
? node.declarations.first
: null;
if (target != null) reportAtNode(target);
}
});
}