in lib/src/sdk_env.dart [157:215]
Future<String> runAnalyzer(
String packageDir,
String dir,
bool usesFlutter, {
required InspectOptions inspectOptions,
}) async {
final analysisOptionsFile =
File(p.join(packageDir, 'analysis_options.yaml'));
String? originalOptions;
if (await analysisOptionsFile.exists()) {
originalOptions = await analysisOptionsFile.readAsString();
}
final rawOptionsContent = inspectOptions.analysisOptionsYaml ??
await getDefaultAnalysisOptionsYaml(
usesFlutter: usesFlutter,
flutterSdkDir: flutterSdkDir,
);
final customOptionsContent = updatePassthroughOptions(
original: originalOptions, custom: rawOptionsContent);
try {
await analysisOptionsFile.writeAsString(customOptionsContent);
final proc = await runProc(
[
...usesFlutter ? _flutterDartAnalyzerCmd : _dartAnalyzerCmd,
'--format',
'machine',
dir,
],
environment: _environment,
workingDirectory: packageDir,
timeout: const Duration(minutes: 5),
);
if (proc.wasOutputExceeded) {
throw ToolException(
'Running `dart analyze` produced too large output.');
}
final output = proc.asJoinedOutput;
if (proc.wasTimeout) {
throw ToolException('Running `dart analyze` timed out.');
}
if ('\n$output'.contains('\nUnhandled exception:\n')) {
if (output.contains('No dart files found at: .')) {
log.warning('`dart analyze` found no files to analyze.');
} else {
log.severe('Bad input?: $output');
}
var errorMessage =
'\n$output'.split('\nUnhandled exception:\n')[1].split('\n').first;
throw ToolException('dart analyze exception: $errorMessage');
}
return output;
} finally {
if (originalOptions == null) {
await analysisOptionsFile.delete();
} else {
await analysisOptionsFile.writeAsString(originalOptions);
}
}
}