processFile static method
Implementation
static Future<void> processFile(
File file, {
String? workingDirectoryPath,
}) async {
if (!danger.isGitHub) {
fail('dart_plugin_dart_analyze is supported by GitHub only.');
return;
}
if (!file.existsSync()) {
fail('Analyze report not found, path [${file.path}]');
return;
}
final workingPath = workingDirectoryPath ?? p.current;
final lines = file.readAsLinesSync();
final parser = DartAnalyzeResultParser(workingPath);
final results = lines.map(parser.parse).whereType<DartAnalyzeResult>();
if (results.isEmpty) return;
final baseRef = 'origin/${danger.github.pr.base.ref}';
final headRef = 'origin/${danger.github.pr.head.ref}';
final gitRepository = GitRepository(base: baseRef, head: headRef);
final filteredResults = results.where(
(e) => gitRepository.isTarget(
path: e.filePath,
line: e.line,
),
);
void sendMessage(DartAnalyzeResult result) {
final msg = result.message;
final file = result.filePath;
final line = result.line;
switch (result.severity) {
case Severity.info:
message(msg, file: file, line: line);
break;
case Severity.warning:
warn(msg, file: file, line: line);
break;
case Severity.error:
fail(msg, file: file, line: line);
break;
}
}
filteredResults.forEach(sendMessage);
}