| OLD | NEW | 
|---|
| 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:collection'; | 7 import 'dart:collection'; | 
| 8 import 'dart:io'; | 8 import 'dart:io'; | 
| 9 | 9 | 
| 10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 33   static final PerformanceTag _prepareErrorsTag = | 33   static final PerformanceTag _prepareErrorsTag = | 
| 34       new PerformanceTag("AnalyzerImpl.prepareErrors"); | 34       new PerformanceTag("AnalyzerImpl.prepareErrors"); | 
| 35   static final PerformanceTag _resolveLibraryTag = | 35   static final PerformanceTag _resolveLibraryTag = | 
| 36       new PerformanceTag("AnalyzerImpl._resolveLibrary"); | 36       new PerformanceTag("AnalyzerImpl._resolveLibrary"); | 
| 37 | 37 | 
| 38   final CommandLineOptions options; | 38   final CommandLineOptions options; | 
| 39   final int startTime; | 39   final int startTime; | 
| 40 | 40 | 
| 41   final AnalysisContext context; | 41   final AnalysisContext context; | 
| 42 | 42 | 
|  | 43   /// Accumulated analysis statistics. | 
|  | 44   final AnalysisStats stats; | 
|  | 45 | 
| 43   final Source librarySource; | 46   final Source librarySource; | 
| 44 | 47 | 
| 45   /// All [Source]s references by the analyzed library. | 48   /// All [Source]s references by the analyzed library. | 
| 46   final Set<Source> sources = new Set<Source>(); | 49   final Set<Source> sources = new Set<Source>(); | 
| 47 | 50 | 
| 48   /// All [AnalysisErrorInfo]s in the analyzed library. | 51   /// All [AnalysisErrorInfo]s in the analyzed library. | 
| 49   final List<AnalysisErrorInfo> errorInfos = new List<AnalysisErrorInfo>(); | 52   final List<AnalysisErrorInfo> errorInfos = new List<AnalysisErrorInfo>(); | 
| 50 | 53 | 
| 51   /// [HashMap] between sources and analysis error infos. | 54   /// [HashMap] between sources and analysis error infos. | 
| 52   final HashMap<Source, AnalysisErrorInfo> sourceErrorsMap = | 55   final HashMap<Source, AnalysisErrorInfo> sourceErrorsMap = | 
| 53       new HashMap<Source, AnalysisErrorInfo>(); | 56       new HashMap<Source, AnalysisErrorInfo>(); | 
| 54 | 57 | 
| 55   /// If the file specified on the command line is part of a package, the name | 58   /// If the file specified on the command line is part of a package, the name | 
| 56   /// of that package.  Otherwise `null`.  This allows us to analyze the file | 59   /// of that package.  Otherwise `null`.  This allows us to analyze the file | 
| 57   /// specified on the command line as though it is reached via a "package:" | 60   /// specified on the command line as though it is reached via a "package:" | 
| 58   /// URI, but avoid suppressing its output in the event that the user has not | 61   /// URI, but avoid suppressing its output in the event that the user has not | 
| 59   /// specified the "--package-warnings" option. | 62   /// specified the "--package-warnings" option. | 
| 60   String _selfPackageName; | 63   String _selfPackageName; | 
| 61 | 64 | 
| 62   AnalyzerImpl(this.context, this.librarySource, this.options, this.startTime); | 65   AnalyzerImpl(this.context, this.librarySource, this.options, this.stats, | 
|  | 66       this.startTime); | 
| 63 | 67 | 
| 64   /// Returns the maximal [ErrorSeverity] of the recorded errors. | 68   /// Returns the maximal [ErrorSeverity] of the recorded errors. | 
| 65   ErrorSeverity get maxErrorSeverity { | 69   ErrorSeverity get maxErrorSeverity { | 
| 66     var status = ErrorSeverity.NONE; | 70     var status = ErrorSeverity.NONE; | 
| 67     for (AnalysisErrorInfo errorInfo in errorInfos) { | 71     for (AnalysisErrorInfo errorInfo in errorInfos) { | 
| 68       for (AnalysisError error in errorInfo.errors) { | 72       for (AnalysisError error in errorInfo.errors) { | 
| 69         if (_processError(error) == null) { | 73         if (_processError(error) == null) { | 
| 70           continue; | 74           continue; | 
| 71         } | 75         } | 
| 72         var severity = computeSeverity(error, options); | 76         var severity = computeSeverity(error, options); | 
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 213   _printErrors() { | 217   _printErrors() { | 
| 214     // The following is a hack. We currently print out to stderr to ensure that | 218     // The following is a hack. We currently print out to stderr to ensure that | 
| 215     // when in batch mode we print to stderr, this is because the prints from | 219     // when in batch mode we print to stderr, this is because the prints from | 
| 216     // batch are made to stderr. The reason that options.shouldBatch isn't used | 220     // batch are made to stderr. The reason that options.shouldBatch isn't used | 
| 217     // is because when the argument flags are constructed in BatchRunner and | 221     // is because when the argument flags are constructed in BatchRunner and | 
| 218     // passed in from batch mode which removes the batch flag to prevent the | 222     // passed in from batch mode which removes the batch flag to prevent the | 
| 219     // "cannot have the batch flag and source file" error message. | 223     // "cannot have the batch flag and source file" error message. | 
| 220     StringSink sink = options.machineFormat ? errorSink : outSink; | 224     StringSink sink = options.machineFormat ? errorSink : outSink; | 
| 221 | 225 | 
| 222     // Print errors. | 226     // Print errors. | 
| 223     ErrorFormatter formatter = new ErrorFormatter(sink, options, _processError); | 227     ErrorFormatter formatter = | 
|  | 228         new ErrorFormatter(sink, options, stats, _processError); | 
| 224     formatter.formatErrors(errorInfos); | 229     formatter.formatErrors(errorInfos); | 
| 225   } | 230   } | 
| 226 | 231 | 
| 227   ProcessedSeverity _processError(AnalysisError error) => | 232   ProcessedSeverity _processError(AnalysisError error) => | 
| 228       processError(error, options, context); | 233       processError(error, options, context); | 
| 229 | 234 | 
| 230   LibraryElement _resolveLibrary() { | 235   LibraryElement _resolveLibrary() { | 
| 231     return _resolveLibraryTag.makeCurrentWhile(() { | 236     return _resolveLibraryTag.makeCurrentWhile(() { | 
| 232       return context.computeLibraryElement(librarySource); | 237       return context.computeLibraryElement(librarySource); | 
| 233     }); | 238     }); | 
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 323   } | 328   } | 
| 324 | 329 | 
| 325   @override | 330   @override | 
| 326   void logInformation(String message, [CaughtException exception]) { | 331   void logInformation(String message, [CaughtException exception]) { | 
| 327     outSink.writeln(message); | 332     outSink.writeln(message); | 
| 328     if (exception != null) { | 333     if (exception != null) { | 
| 329       outSink.writeln(exception); | 334       outSink.writeln(exception); | 
| 330     } | 335     } | 
| 331   } | 336   } | 
| 332 } | 337 } | 
| OLD | NEW | 
|---|