OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_impl; | 5 library 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 |
11 import 'package:analyzer/file_system/file_system.dart' show Folder; | 11 import 'package:analyzer/file_system/file_system.dart' show Folder; |
12 import 'package:analyzer/file_system/physical_file_system.dart'; | 12 import 'package:analyzer/file_system/physical_file_system.dart'; |
13 import 'package:analyzer/source/package_map_provider.dart'; | 13 import 'package:analyzer/source/package_map_provider.dart'; |
14 import 'package:analyzer/source/package_map_resolver.dart'; | 14 import 'package:analyzer/source/package_map_resolver.dart'; |
15 import 'package:analyzer/source/pub_package_map_provider.dart'; | 15 import 'package:analyzer/source/pub_package_map_provider.dart'; |
16 import 'package:analyzer/src/error_formatter.dart'; | 16 import 'package:analyzer/src/error_formatter.dart'; |
17 import 'package:analyzer/src/generated/java_core.dart' show JavaSystem; | 17 import 'package:analyzer/src/generated/java_core.dart' show JavaSystem; |
18 import 'package:analyzer/src/generated/java_engine.dart'; | 18 import 'package:analyzer/src/generated/java_engine.dart'; |
19 | 19 |
20 import '../options.dart'; | 20 import '../options.dart'; |
21 import 'generated/constant.dart'; | 21 import 'generated/constant.dart'; |
22 import 'generated/element.dart'; | 22 import 'generated/element.dart'; |
23 import 'generated/engine.dart'; | 23 import 'generated/engine.dart'; |
24 import 'generated/error.dart'; | 24 import 'generated/error.dart'; |
25 import 'generated/java_io.dart'; | 25 import 'generated/java_io.dart'; |
26 import 'generated/sdk_io.dart'; | 26 import 'generated/sdk_io.dart'; |
27 import 'generated/source_io.dart'; | 27 import 'generated/source_io.dart'; |
| 28 import 'package:analyzer/src/generated/utilities_general.dart'; |
28 | 29 |
29 DirectoryBasedDartSdk sdk; | 30 DirectoryBasedDartSdk sdk; |
30 | 31 |
31 /** | 32 /** |
32 * The maximum number of sources for which AST structures should be kept in the
cache. | 33 * The maximum number of sources for which AST structures should be kept in the
cache. |
33 */ | 34 */ |
34 const int _MAX_CACHE_SIZE = 512; | 35 const int _MAX_CACHE_SIZE = 512; |
35 | 36 |
36 /// Analyzes single library [File]. | 37 /// Analyzes single library [File]. |
37 class AnalyzerImpl { | 38 class AnalyzerImpl { |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 ErrorSeverity.INFO && | 293 ErrorSeverity.INFO && |
293 options.disableHints) { | 294 options.disableHints) { |
294 return false; | 295 return false; |
295 } | 296 } |
296 return true; | 297 return true; |
297 } | 298 } |
298 | 299 |
299 _printColdPerf() { | 300 _printColdPerf() { |
300 // print cold VM performance numbers | 301 // print cold VM performance numbers |
301 int totalTime = JavaSystem.currentTimeMillis() - startTime; | 302 int totalTime = JavaSystem.currentTimeMillis() - startTime; |
302 int ioTime = PerformanceStatistics.io.result; | 303 int otherTime = totalTime; |
303 int scanTime = PerformanceStatistics.scan.result; | 304 for (PerformanceTag tag in PerformanceTag.all) { |
304 int parseTime = PerformanceStatistics.parse.result; | 305 if (tag != PerformanceTag.UNKNOWN) { |
305 int resolveTime = PerformanceStatistics.resolve.result; | 306 int tagTime = tag.elapsedMs; |
306 int errorsTime = PerformanceStatistics.errors.result; | 307 stdout.writeln('${tag.label}-cold:$tagTime'); |
307 int hintsTime = PerformanceStatistics.hints.result; | 308 otherTime -= tagTime; |
308 stdout.writeln("io-cold:$ioTime"); | 309 } |
309 stdout.writeln("scan-cold:$scanTime"); | 310 } |
310 stdout.writeln("parse-cold:$parseTime"); | 311 stdout.writeln('other-cold:$otherTime'); |
311 stdout.writeln("resolve-cold:$resolveTime"); | |
312 stdout.writeln("errors-cold:$errorsTime"); | |
313 stdout.writeln("hints-cold:$hintsTime"); | |
314 stdout.writeln("other-cold:${totalTime | |
315 - (ioTime + scanTime + parseTime + resolveTime + errorsTime + hintsTime)
}"); | |
316 stdout.writeln("total-cold:$totalTime"); | 312 stdout.writeln("total-cold:$totalTime"); |
317 } | 313 } |
318 | 314 |
319 _printErrorsAndPerf() { | 315 _printErrorsAndPerf() { |
320 // The following is a hack. We currently print out to stderr to ensure that | 316 // The following is a hack. We currently print out to stderr to ensure that |
321 // when in batch mode we print to stderr, this is because the prints from | 317 // when in batch mode we print to stderr, this is because the prints from |
322 // batch are made to stderr. The reason that options.shouldBatch isn't used | 318 // batch are made to stderr. The reason that options.shouldBatch isn't used |
323 // is because when the argument flags are constructed in BatchRunner and | 319 // is because when the argument flags are constructed in BatchRunner and |
324 // passed in from batch mode which removes the batch flag to prevent the | 320 // passed in from batch mode which removes the batch flag to prevent the |
325 // "cannot have the batch flag and source file" error message. | 321 // "cannot have the batch flag and source file" error message. |
326 IOSink sink = options.machineFormat ? stderr : stdout; | 322 IOSink sink = options.machineFormat ? stderr : stdout; |
327 | 323 |
328 // print errors | 324 // print errors |
329 ErrorFormatter formatter = | 325 ErrorFormatter formatter = |
330 new ErrorFormatter(sink, options, _isDesiredError); | 326 new ErrorFormatter(sink, options, _isDesiredError); |
331 formatter.formatErrors(errorInfos); | 327 formatter.formatErrors(errorInfos); |
332 | 328 |
333 // print performance numbers | 329 // print performance numbers |
334 if (options.perf || options.warmPerf) { | 330 if (options.perf || options.warmPerf) { |
335 int totalTime = JavaSystem.currentTimeMillis() - startTime; | 331 int totalTime = JavaSystem.currentTimeMillis() - startTime; |
336 int ioTime = PerformanceStatistics.io.result; | 332 int otherTime = totalTime; |
337 int scanTime = PerformanceStatistics.scan.result; | 333 for (PerformanceTag tag in PerformanceTag.all) { |
338 int parseTime = PerformanceStatistics.parse.result; | 334 if (tag != PerformanceTag.UNKNOWN) { |
339 int resolveTime = PerformanceStatistics.resolve.result; | 335 int tagTime = tag.elapsedMs; |
340 int errorsTime = PerformanceStatistics.errors.result; | 336 stdout.writeln('${tag.label}:$tagTime'); |
341 int hintsTime = PerformanceStatistics.hints.result; | 337 otherTime -= tagTime; |
342 stdout.writeln("io:$ioTime"); | 338 } |
343 stdout.writeln("scan:$scanTime"); | 339 } |
344 stdout.writeln("parse:$parseTime"); | 340 stdout.writeln('other:$otherTime'); |
345 stdout.writeln("resolve:$resolveTime"); | |
346 stdout.writeln("errors:$errorsTime"); | |
347 stdout.writeln("hints:$hintsTime"); | |
348 stdout.writeln("other:${totalTime | |
349 - (ioTime + scanTime + parseTime + resolveTime + errorsTime + hintsTim
e)}"); | |
350 stdout.writeln("total:$totalTime"); | 341 stdout.writeln("total:$totalTime"); |
351 } | 342 } |
352 } | 343 } |
353 | 344 |
354 /** | 345 /** |
355 * Compute the severity of the error; however, if | 346 * Compute the severity of the error; however, if |
356 * [enableTypeChecks] is false, then de-escalate checked-mode compile time | 347 * [enableTypeChecks] is false, then de-escalate checked-mode compile time |
357 * errors to a severity of [ErrorSeverity.INFO]. | 348 * errors to a severity of [ErrorSeverity.INFO]. |
358 */ | 349 */ |
359 static ErrorSeverity computeSeverity(AnalysisError error, | 350 static ErrorSeverity computeSeverity(AnalysisError error, |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 } | 430 } |
440 } | 431 } |
441 | 432 |
442 @override | 433 @override |
443 void logInformation2(String message, Object exception) { | 434 void logInformation2(String message, Object exception) { |
444 if (log) { | 435 if (log) { |
445 stdout.writeln(message); | 436 stdout.writeln(message); |
446 } | 437 } |
447 } | 438 } |
448 } | 439 } |
OLD | NEW |