runProjectCommand method
Future<void>
runProjectCommand(
)
override
Implementation
@override
Future<void> runProjectCommand() async {
final engine = DoctorEngine(context);
final result = await engine.runAllScans();
final scoreEngine = ScoreEngine(context);
final catScores = scoreEngine.calculateDetailedScore(result.issues);
final totalScore = scoreEngine.calculateTotalScore(catScores);
final report = ReportModel(
totalScore: totalScore,
categoryScores: catScores,
issues: result.issues,
metrics: result.metrics,
);
context.logger.info('');
context.logger.info('========== FLUTTER DOCTOR PRO ==========');
context.logger.info('Project: ${context.pubspec?["name"] ?? "Unknown"}');
context.logger.info('Total Score: $totalScore/100');
context.logger.info('');
for (final categoryScore in catScores.values) {
context.logger.info(
'${categoryScore.category}: ${categoryScore.score}/100 (Weight: ${categoryScore.weight})',
);
}
context.logger.info('');
if (result.issues.isEmpty) {
context.logger.success(
'No issues found! Your project is perfectly healthy.',
);
} else {
context.logger.info('--- Issues Found ---');
for (final issue in result.issues) {
context.logger.logIssue(issue);
}
}
final reporter = ReportGenerator(context);
await reporter.generateAll(report);
if (totalScore < context.config.scoreMinimum) {
context.logger.error(
'Project score $totalScore is below the required minimum of ${context.config.scoreMinimum}.',
);
throw ProjectDoctorException('Score below minimum threshold.');
}
}