run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
void run() async {
try {
// Parse and validate arguments
final coverageConfig = _parseCoverageConfiguration();
final argMorphemeYaml = argResults.getOptionMorphemeYaml();
// Validate morpheme.yaml and coverage configuration
YamlHelper.validateMorphemeYaml(argMorphemeYaml);
final morphemeConfig = YamlHelper.loadFileYaml(argMorphemeYaml);
final coverageSettings = _validateCoverageSettings(morphemeConfig);
printMessage('🏃 Starting comprehensive coverage analysis...');
// Execute tests with coverage
await _executeTestsWithCoverage(coverageConfig, argMorphemeYaml);
// Validate required tools are available
_validateCoverageTools();
// Process coverage data
await _processCoverageData(coverageSettings);
// Generate HTML report
await _generateHtmlReport(coverageSettings);
printMessage('✨ Coverage analysis completed successfully!');
StatusHelper.success(
'Coverage report generated to ${coverageSettings.outputHtmlDir}');
} catch (e) {
StatusHelper.failed('Coverage analysis failed: $e');
}
}