run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<int> run() async {
final scanner = ProjectScanner();
final context = scanner.scan();
if (context == null) {
print('✗ Current directory is not a Flutter project.');
return 1;
}
final registry = const AuditRegistry();
final engine = AuditEngine(audits: registry.getAudits());
final rawResults = await engine.run(context);
final ignoreConfig = await IgnoreConfigHelper.load(context);
final (results, suppressedCount) = ignoreConfig.apply(rawResults, context);
if (suppressedCount > 0) {
print(
'ⓘ $suppressedCount finding(s) suppressed by .flutter_auditor_ignore.yaml',
);
print('');
}
final reporter = const ConsoleReporter();
final verbose = argResults!.flag('verbose');
final failOnArg = argResults!.option('fail-on')!;
final failOn = failOnArg == 'none'
? null
: Severity.values.firstWhere((severity) => severity.name == failOnArg);
final exitCode = reporter.printReport(
results,
context: context,
verbose: verbose,
failOn: failOn,
);
final htmlPath = argResults!.option('html');
if (htmlPath != null) {
final htmlReporter = const HtmlReporter();
final file = htmlReporter.writeReport(
results,
context: context,
outputPath: htmlPath,
);
print('');
print('📊 HTML report written to: ${file.path}');
if (argResults!.flag('open')) {
await _openInBrowser(file.path);
}
}
return exitCode;
}