| 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 /// Summarizes the information produced by the checker. | 5 /// Summarizes the information produced by the checker. | 
| 6 library ddc.src.report; | 6 library ddc.src.report; | 
| 7 | 7 | 
| 8 import 'dart:math' show max; | 8 import 'dart:math' show max; | 
| 9 | 9 | 
| 10 import 'package:path/path.dart' as path; | 10 import 'package:path/path.dart' as path; | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 70         level, span.message('[from analyzer]: ${message}', color: color)); | 70         level, span.message('[from analyzer]: ${message}', color: color)); | 
| 71   } | 71   } | 
| 72 } | 72 } | 
| 73 | 73 | 
| 74 /// A reporter that gathers all the information in a [GlobalSummary]. | 74 /// A reporter that gathers all the information in a [GlobalSummary]. | 
| 75 class SummaryReporter implements CheckerReporter { | 75 class SummaryReporter implements CheckerReporter { | 
| 76   GlobalSummary result = new GlobalSummary(); | 76   GlobalSummary result = new GlobalSummary(); | 
| 77   LibrarySummary _currentLibrary; | 77   LibrarySummary _currentLibrary; | 
| 78   SourceFile _file; | 78   SourceFile _file; | 
| 79 | 79 | 
|  | 80   clear() { | 
|  | 81     result = new GlobalSummary(); | 
|  | 82   } | 
|  | 83 | 
| 80   void enterLibrary(LibraryInfo lib) { | 84   void enterLibrary(LibraryInfo lib) { | 
| 81     var libKey = '${lib.library.source.uri}'; | 85     var libKey = '${lib.library.source.uri}'; | 
| 82     var libSummary = _currentLibrary = new LibrarySummary(libKey); | 86     var libSummary = _currentLibrary = new LibrarySummary(libKey); | 
| 83 | 87 | 
| 84     var uri = lib.library.source.uri; | 88     var uri = lib.library.source.uri; | 
| 85     if (uri.scheme == 'package') { | 89     if (uri.scheme == 'package') { | 
| 86       var pname = path.split(uri.path)[0]; | 90       var pname = path.split(uri.path)[0]; | 
| 87       result.packages.putIfAbsent(pname, () => new PackageSummary(pname)); | 91       result.packages.putIfAbsent(pname, () => new PackageSummary(pname)); | 
| 88       if (result.packages[pname].libraries[libKey] != null) { | 92       if (result.packages[pname].libraries[libKey] != null) { | 
| 89         print('ERROR: duplicate ${libKey}'); | 93         print('ERROR: duplicate ${libKey}'); | 
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 482     var kind = message.kind; | 486     var kind = message.kind; | 
| 483     errorCount.putIfAbsent(currentPackage, () => <String, int>{}); | 487     errorCount.putIfAbsent(currentPackage, () => <String, int>{}); | 
| 484     errorCount[currentPackage].putIfAbsent(kind, () => 0); | 488     errorCount[currentPackage].putIfAbsent(kind, () => 0); | 
| 485     errorCount[currentPackage][kind]++; | 489     errorCount[currentPackage][kind]++; | 
| 486     totals.putIfAbsent(kind, () => 0); | 490     totals.putIfAbsent(kind, () => 0); | 
| 487     totals[kind]++; | 491     totals[kind]++; | 
| 488   } | 492   } | 
| 489 } | 493 } | 
| 490 | 494 | 
| 491 /// Returns a [SourceSpan] in [file] for the offsets of [node]. | 495 /// Returns a [SourceSpan] in [file] for the offsets of [node]. | 
|  | 496 // TODO(sigmund): convert to use span information from AST (issue #73) | 
| 492 SourceSpan _spanForNode(SourceFile file, AstNode node) { | 497 SourceSpan _spanForNode(SourceFile file, AstNode node) { | 
| 493   final begin = node is AnnotatedNode | 498   final begin = node is AnnotatedNode | 
| 494       ? node.firstTokenAfterCommentAndMetadata.offset | 499       ? node.firstTokenAfterCommentAndMetadata.offset | 
| 495       : node.offset; | 500       : node.offset; | 
| 496   return file.span(begin, node.end); | 501   return file.span(begin, node.end); | 
| 497 } | 502 } | 
| OLD | NEW | 
|---|