in tool/fuzz_driver.dart [140:225]
Future<void> testPath(
String path,
analysis_server.AnalysisServerWrapper wrapper,
comp.Compiler compiler) async {
final f = io.File(path);
var src = f.readAsStringSync();
print('Path, Compilation/ms, Analysis/ms, '
'Completion/ms, Document/ms, Fixes/ms, Format/ms');
for (var i = 0; i < iterations; i++) {
// Run once for each file without mutation.
num averageCompilationTime = 0;
num averageAnalysisTime = 0;
num averageCompletionTime = 0;
num averageDocumentTime = 0;
num averageFixesTime = 0;
num averageFormatTime = 0;
if (dumpSrc) print(src);
try {
switch (commandToRun.toLowerCase()) {
case 'all':
averageCompilationTime = await testCompilation(src, compiler);
averageCompletionTime = await testCompletions(src, wrapper);
averageAnalysisTime = await testAnalysis(src, wrapper);
averageDocumentTime = await testDocument(src, wrapper);
averageFixesTime = await testFixes(src, wrapper);
averageFormatTime = await testFormat(src);
break;
case 'complete':
averageCompletionTime = await testCompletions(src, wrapper);
break;
case 'analyze':
averageAnalysisTime = await testAnalysis(src, wrapper);
break;
case 'document':
averageDocumentTime = await testDocument(src, wrapper);
break;
case 'compile':
averageCompilationTime = await testCompilation(src, compiler);
break;
case 'fix':
averageFixesTime = await testFixes(src, wrapper);
break;
case 'format':
averageFormatTime = await testFormat(src);
break;
default:
throw 'Unknown command';
}
} catch (e, stacktrace) {
print('===== FAILING OP: $lastExecuted, offset: $lastOffset =====');
print(src);
print('===== =====');
print(e);
print(stacktrace);
print('===========================================================');
rethrow;
}
print('$path-$i, '
'${averageCompilationTime.toStringAsFixed(2)}, '
'${averageAnalysisTime.toStringAsFixed(2)}, '
'${averageCompletionTime.toStringAsFixed(2)}, '
'${averageDocumentTime.toStringAsFixed(2)}, '
'${averageFixesTime.toStringAsFixed(2)}, '
'${averageFormatTime.toStringAsFixed(2)}');
if (maxMutations == 0) break;
// And then for the remainder with an increasing mutated file.
final noChanges = random.nextInt(maxMutations);
for (var j = 0; j < noChanges; j++) {
src = mutate(src);
}
}
}