From a562b5e8afaa7ad40f047cb2ec99a7228c5dd7b8 Mon Sep 17 00:00:00 2001 From: Travis Sanderson Date: Wed, 25 Nov 2015 16:22:55 -0600 Subject: [PATCH] Use dartanalyzer --fatal-hints instead of post-processing on our own --- lib/src/tasks/analyze/api.dart | 33 +++++++++--------------------- test/integration/analyze_test.dart | 3 ++- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/lib/src/tasks/analyze/api.dart b/lib/src/tasks/analyze/api.dart index a1712c3c..f4960973 100644 --- a/lib/src/tasks/analyze/api.dart +++ b/lib/src/tasks/analyze/api.dart @@ -34,33 +34,20 @@ AnalyzeTask analyze( } if (!hints) { args.add('--no-hints'); + } else if (fatalHints) { + args.add('--fatal-hints'); } + args.addAll(_findFilesFromEntryPoints(entryPoints)); - var postProcessCompleter = new Completer(); TaskProcess process = new TaskProcess(executable, args); - AnalyzeTask task = new AnalyzeTask( - '$executable ${args.join(' ')}', postProcessCompleter.future); - - var matchingLineFuture = task.analyzerOutput - .firstWhere((line) => line.contains('[hint] '), defaultValue: () => null); - - var stdoutDone = process.stdout.listen(task._analyzerOutput.add).asFuture(); - var stderrDone = process.stderr.listen(task._analyzerOutput.add).asFuture(); - Future.wait([stdoutDone, stderrDone]) - .then((_) => task._analyzerOutput.close()); + AnalyzeTask task = + new AnalyzeTask('$executable ${args.join(' ')}', process.done); - matchingLineFuture.then((matchingLine) { - process.exitCode.then((exitCode) async { - if (exitCode > 0) { - task.successful = false; - } else if (fatalHints) { - task.successful = matchingLine == null; - } else { - task.successful = true; - } - postProcessCompleter.complete(); - }); + process.stdout.listen(task._analyzerOutput.add); + process.stderr.listen(task._analyzerOutput.addError); + process.exitCode.then((code) { + task.successful = code <= 0; }); return task; @@ -89,7 +76,7 @@ class AnalyzeTask extends Task { final String analyzerCommand; final Future done; - StreamController _analyzerOutput = new StreamController.broadcast(); + StreamController _analyzerOutput = new StreamController(); Stream get analyzerOutput => _analyzerOutput.stream; AnalyzeTask(String this.analyzerCommand, Future this.done); } diff --git a/test/integration/analyze_test.dart b/test/integration/analyze_test.dart index 3a8873c4..c58ed9db 100644 --- a/test/integration/analyze_test.dart +++ b/test/integration/analyze_test.dart @@ -114,7 +114,8 @@ void main() { test('should report hints as fatal if configured to do so', () async { Analysis analysis = await analyzeProject(projectWithHints, fatalHints: true); - expect(analysis.numHints, equals(2)); + expect(analysis.numErrors, equals(2)); + expect(analysis.numHints, equals(0)); expect(analysis.exitCode, greaterThan(0)); });