Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: pkg/analyzer_cli/lib/src/analyzer_impl.dart

Issue 2857203002: Make the exit code for dartanalyzer more deterministic. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | pkg/analyzer_cli/lib/src/build_mode.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer_cli.src.analyzer_impl; 5 library analyzer_cli.src.analyzer_impl;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:io'; 9 import 'dart:io';
10 10
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 /// of that package. Otherwise `null`. This allows us to analyze the file 58 /// of that package. Otherwise `null`. This allows us to analyze the file
59 /// specified on the command line as though it is reached via a "package:" 59 /// specified on the command line as though it is reached via a "package:"
60 /// URI, but avoid suppressing its output in the event that the user has not 60 /// URI, but avoid suppressing its output in the event that the user has not
61 /// specified the "--package-warnings" option. 61 /// specified the "--package-warnings" option.
62 String _selfPackageName; 62 String _selfPackageName;
63 63
64 AnalyzerImpl(this.analysisOptions, this.context, this.analysisDriver, 64 AnalyzerImpl(this.analysisOptions, this.context, this.analysisDriver,
65 this.librarySource, this.options, this.stats, this.startTime); 65 this.librarySource, this.options, this.stats, this.startTime);
66 66
67 /// Returns the maximal [ErrorSeverity] of the recorded errors. 67 /// Returns the maximal [ErrorSeverity] of the recorded errors.
68 ErrorSeverity get maxErrorSeverity { 68 ErrorSeverity computeMaxErrorSeverity() {
69 ErrorSeverity status = ErrorSeverity.NONE; 69 ErrorSeverity status = ErrorSeverity.NONE;
70 for (AnalysisErrorInfo errorInfo in errorInfos) { 70 for (AnalysisErrorInfo errorInfo in errorInfos) {
71 for (AnalysisError error in errorInfo.errors) { 71 for (AnalysisError error in errorInfo.errors) {
72 if (_defaultSeverityProcessor(error) == null) { 72 if (_defaultSeverityProcessor(error) == null) {
73 continue; 73 continue;
74 } 74 }
75 ErrorSeverity severity = computeSeverity(error, options); 75 status = status.max(computeSeverity(error, options, analysisOptions));
76 status = status.max(severity);
77 } 76 }
78 } 77 }
79 return status; 78 return status;
80 } 79 }
81 80
82 void addCompilationUnitSource( 81 void addCompilationUnitSource(
83 CompilationUnitElement unit, Set<CompilationUnitElement> units) { 82 CompilationUnitElement unit, Set<CompilationUnitElement> units) {
84 if (unit == null || !units.add(unit)) { 83 if (unit == null || !units.add(unit)) {
85 return; 84 return;
86 } 85 }
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 prepareSources(libraryElement); 177 prepareSources(libraryElement);
179 await prepareErrors(); 178 await prepareErrors();
180 179
181 // Print errors and performance numbers. 180 // Print errors and performance numbers.
182 if (printMode == 1) { 181 if (printMode == 1) {
183 formatter.formatErrors(errorInfos); 182 formatter.formatErrors(errorInfos);
184 } else if (printMode == 2) { 183 } else if (printMode == 2) {
185 _printColdPerf(); 184 _printColdPerf();
186 } 185 }
187 186
188 // Compute max severity and set exitCode. 187 // Compute and return max severity.
189 ErrorSeverity status = maxErrorSeverity; 188 return computeMaxErrorSeverity();
190 if (status == ErrorSeverity.WARNING && options.warningsAreFatal) {
191 status = ErrorSeverity.ERROR;
192 }
193 return status;
194 } 189 }
195 190
196 /// Returns true if we want to report diagnostics for this library. 191 /// Returns true if we want to report diagnostics for this library.
197 bool _isAnalyzedLibrary(LibraryElement library) { 192 bool _isAnalyzedLibrary(LibraryElement library) {
198 Source source = library.source; 193 Source source = library.source;
199 switch (source.uriKind) { 194 switch (source.uriKind) {
200 case UriKind.DART_URI: 195 case UriKind.DART_URI:
201 return options.showSdkWarnings; 196 return options.showSdkWarnings;
202 case UriKind.PACKAGE_URI: 197 case UriKind.PACKAGE_URI:
203 if (_isPathInPubCache(source.fullName)) { 198 if (_isPathInPubCache(source.fullName)) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 if (tag != PerformanceTag.UNKNOWN) { 230 if (tag != PerformanceTag.UNKNOWN) {
236 int tagTime = tag.elapsedMs; 231 int tagTime = tag.elapsedMs;
237 outSink.writeln('${tag.label}-cold:$tagTime'); 232 outSink.writeln('${tag.label}-cold:$tagTime');
238 otherTime -= tagTime; 233 otherTime -= tagTime;
239 } 234 }
240 } 235 }
241 outSink.writeln('other-cold:$otherTime'); 236 outSink.writeln('other-cold:$otherTime');
242 outSink.writeln("total-cold:$totalTime"); 237 outSink.writeln("total-cold:$totalTime");
243 } 238 }
244 239
245 ProcessedSeverity _defaultSeverityProcessor(AnalysisError error) => 240 ErrorSeverity _defaultSeverityProcessor(AnalysisError error) =>
246 determineProcessedSeverity(error, options, analysisOptions); 241 determineProcessedSeverity(error, options, analysisOptions);
247 242
248 Future<LibraryElement> _resolveLibrary() async { 243 Future<LibraryElement> _resolveLibrary() async {
249 PerformanceTag previous = _resolveLibraryTag.makeCurrent(); 244 PerformanceTag previous = _resolveLibraryTag.makeCurrent();
250 try { 245 try {
251 if (analysisDriver != null) { 246 if (analysisDriver != null) {
252 String path = librarySource.fullName; 247 String path = librarySource.fullName;
253 analysisDriver.priorityFiles = [path]; 248 analysisDriver.priorityFiles = [path];
254 UnitElementResult elementResult = 249 UnitElementResult elementResult =
255 await analysisDriver.getUnitElement(path); 250 await analysisDriver.getUnitElement(path);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 303 }
309 304
310 @override 305 @override
311 void logInformation(String message, [CaughtException exception]) { 306 void logInformation(String message, [CaughtException exception]) {
312 outSink.writeln(message); 307 outSink.writeln(message);
313 if (exception != null) { 308 if (exception != null) {
314 outSink.writeln(exception); 309 outSink.writeln(exception);
315 } 310 }
316 } 311 }
317 } 312 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer_cli/lib/src/build_mode.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698