From c78ccb0b5ef93a9799b0b37ef3a89802d27e7bb6 Mon Sep 17 00:00:00 2001 From: Paul Berry Date: Mon, 11 Mar 2019 09:47:20 -0700 Subject: [PATCH] Cause `flutter analyze` to fail if the analysis server experienced an error. (#29126) Substantially reduces the danger that a bug in the analysis server might prevent errors from being detected by `flutter analyze`. --- .../flutter_tools/lib/src/commands/analyze_continuously.dart | 3 +++ packages/flutter_tools/lib/src/commands/analyze_once.dart | 4 ++++ packages/flutter_tools/lib/src/dart/analysis.dart | 3 +++ 3 files changed, 10 insertions(+) diff --git a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart index 4d79959e18..d470d9e2a5 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_continuously.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_continuously.dart @@ -67,6 +67,9 @@ class AnalyzeContinuously extends AnalyzeBase { if (exitCode != 0) throwToolExit(message, exitCode: exitCode); printStatus(message); + + if (server.didServerErrorOccur) + throwToolExit('Server error(s) occurred.'); } void _handleAnalysisStatus(AnalysisServer server, bool isAnalyzing) { diff --git a/packages/flutter_tools/lib/src/commands/analyze_once.dart b/packages/flutter_tools/lib/src/commands/analyze_once.dart index d0c6536588..ca21e8326c 100644 --- a/packages/flutter_tools/lib/src/commands/analyze_once.dart +++ b/packages/flutter_tools/lib/src/commands/analyze_once.dart @@ -155,6 +155,10 @@ class AnalyzeOnce extends AnalyzeBase { } } + if (server.didServerErrorOccur) { + throwToolExit('Server error(s) occurred. (ran in ${seconds}s)'); + } + if (argResults['congratulate']) { if (undocumentedMembers > 0) { printStatus('No issues found! (ran in ${seconds}s; $dartdocMessage)'); diff --git a/packages/flutter_tools/lib/src/dart/analysis.dart b/packages/flutter_tools/lib/src/dart/analysis.dart index 59376bb98e..6f60c68735 100644 --- a/packages/flutter_tools/lib/src/dart/analysis.dart +++ b/packages/flutter_tools/lib/src/dart/analysis.dart @@ -27,6 +27,7 @@ class AnalysisServer { StreamController.broadcast(); final StreamController _errorsController = StreamController.broadcast(); + bool _didServerErrorOccur = false; int _id = 0; @@ -61,6 +62,7 @@ class AnalysisServer { {'included': directories, 'excluded': []}); } + bool get didServerErrorOccur => _didServerErrorOccur; Stream get onAnalyzing => _analyzingController.stream; Stream get onErrors => _errorsController.stream; @@ -120,6 +122,7 @@ class AnalysisServer { if (error['stackTrace'] != null) { printError(error['stackTrace']); } + _didServerErrorOccur = true; } void _handleAnalysisIssues(Map issueInfo) {