analyzeCode function
/////////////////////////////////////////////////////////// ENTRY FUNCTION ///////////////////////////////////////////////////////////
Implementation
Future<void> analyzeCode() async {
final lib = Directory('lib');
if (!lib.existsSync()) {
print("❌ lib directory doesn't exist");
return;
}
final dartFiles = lib
.listSync(recursive: true)
.where((e) => e is File && e.path.endsWith('.dart'))
.cast<File>();
final Map<String, ConstInfo> constants = {};
final List<UiStringInfo> uiStrings = [];
print("🔍 Scanning project...\n");
////////////////////////////////////////////////////////////
/// STEP 1: Collect static const
////////////////////////////////////////////////////////////
for (final file in dartFiles) {
final result = parseFile(
path: file.path,
featureSet: FeatureSet.latestLanguageVersion(),
);
result.unit.visitChildren(
StaticConstCollector(file.path, constants),
);
}
////////////////////////////////////////////////////////////
/// STEP 2: Extract UI strings
////////////////////////////////////////////////////////////
for (final file in dartFiles) {
final result = parseFile(
path: file.path,
featureSet: FeatureSet.latestLanguageVersion(),
);
result.unit.visitChildren(
UiStringVisitor(
file.path,
constants,
uiStrings,
result.lineInfo,
),
);
}
////////////////////////////////////////////////////////////
/// OUTPUT
////////////////////////////////////////////////////////////
printVisualOutput(constants, uiStrings);
exportToJson(constants, uiStrings);
}