| 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 analyze_helper; | 5 library analyze_helper; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 import 'package:compiler/compiler.dart' as api; | 9 import 'package:compiler/compiler.dart' as api; |
| 10 import 'package:compiler/src/apiimpl.dart'; | 10 import 'package:compiler/src/apiimpl.dart'; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 if (message.contains(messagePart)) { | 88 if (message.contains(messagePart)) { |
| 89 whiteListMap[file][messagePart]++; | 89 whiteListMap[file][messagePart]++; |
| 90 return true; | 90 return true; |
| 91 } | 91 } |
| 92 } | 92 } |
| 93 } | 93 } |
| 94 } | 94 } |
| 95 return false; | 95 return false; |
| 96 } | 96 } |
| 97 | 97 |
| 98 void diagnosticHandler(Uri uri, int begin, int end, String message, | 98 @override |
| 99 api.Diagnostic kind) { | 99 void report(Uri uri, int begin, int end, String message, |
| 100 api.Diagnostic kind) { |
| 100 if (kind == api.Diagnostic.WARNING) { | 101 if (kind == api.Diagnostic.WARNING) { |
| 101 if (checkWhiteList(uri, message)) { | 102 if (checkWhiteList(uri, message)) { |
| 102 // Suppress whitelisted warnings. | 103 // Suppress whitelisted warnings. |
| 103 lastWasWhitelisted = true; | 104 lastWasWhitelisted = true; |
| 104 return; | 105 return; |
| 105 } | 106 } |
| 106 hasWarnings = true; | 107 hasWarnings = true; |
| 107 } | 108 } |
| 108 if (kind == api.Diagnostic.HINT) { | 109 if (kind == api.Diagnostic.HINT) { |
| 109 if (checkWhiteList(uri, message)) { | 110 if (checkWhiteList(uri, message)) { |
| 110 // Suppress whitelisted hints. | 111 // Suppress whitelisted hints. |
| 111 lastWasWhitelisted = true; | 112 lastWasWhitelisted = true; |
| 112 return; | 113 return; |
| 113 } | 114 } |
| 114 hasHint = true; | 115 hasHint = true; |
| 115 } | 116 } |
| 116 if (kind == api.Diagnostic.ERROR) { | 117 if (kind == api.Diagnostic.ERROR) { |
| 117 if (checkWhiteList(uri, message)) { | 118 if (checkWhiteList(uri, message)) { |
| 118 // Suppress whitelisted errors. | 119 // Suppress whitelisted errors. |
| 119 lastWasWhitelisted = true; | 120 lastWasWhitelisted = true; |
| 120 return; | 121 return; |
| 121 } | 122 } |
| 122 hasErrors = true; | 123 hasErrors = true; |
| 123 } | 124 } |
| 124 if (kind == api.Diagnostic.INFO && lastWasWhitelisted) { | 125 if (kind == api.Diagnostic.INFO && lastWasWhitelisted) { |
| 125 return; | 126 return; |
| 126 } | 127 } |
| 127 lastWasWhitelisted = false; | 128 lastWasWhitelisted = false; |
| 128 super.diagnosticHandler(uri, begin, end, message, kind); | 129 super.report(uri, begin, end, message, kind); |
| 129 } | 130 } |
| 130 } | 131 } |
| 131 | 132 |
| 132 typedef bool CheckResults(Compiler compiler, | 133 typedef bool CheckResults(Compiler compiler, |
| 133 CollectingDiagnosticHandler handler); | 134 CollectingDiagnosticHandler handler); |
| 134 | 135 |
| 135 Future analyze(List<Uri> uriList, | 136 Future analyze(List<Uri> uriList, |
| 136 Map<String, List<String>> whiteList, | 137 Map<String, List<String>> whiteList, |
| 137 {bool analyzeAll: true, | 138 {bool analyzeAll: true, |
| 138 CheckResults checkResults}) { | 139 CheckResults checkResults}) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 151 | 152 |
| 152 var libraryRoot = currentDirectory.resolve('sdk/'); | 153 var libraryRoot = currentDirectory.resolve('sdk/'); |
| 153 var packageRoot = | 154 var packageRoot = |
| 154 currentDirectory.resolveUri(new Uri.file('${Platform.packageRoot}/')); | 155 currentDirectory.resolveUri(new Uri.file('${Platform.packageRoot}/')); |
| 155 var provider = new CompilerSourceFileProvider(); | 156 var provider = new CompilerSourceFileProvider(); |
| 156 var handler = new CollectingDiagnosticHandler(whiteList, provider); | 157 var handler = new CollectingDiagnosticHandler(whiteList, provider); |
| 157 var options = <String>['--analyze-only', '--categories=Client,Server', | 158 var options = <String>['--analyze-only', '--categories=Client,Server', |
| 158 '--show-package-warnings']; | 159 '--show-package-warnings']; |
| 159 if (analyzeAll) options.add('--analyze-all'); | 160 if (analyzeAll) options.add('--analyze-all'); |
| 160 var compiler = new Compiler( | 161 var compiler = new Compiler( |
| 161 provider.readStringFromUri, | 162 provider, |
| 162 null, | 163 null, |
| 163 handler.diagnosticHandler, | 164 handler, |
| 164 libraryRoot, packageRoot, | 165 libraryRoot, |
| 166 packageRoot, |
| 165 options, | 167 options, |
| 166 {}); | 168 {}); |
| 167 String MESSAGE = """ | 169 String MESSAGE = """ |
| 168 | 170 |
| 169 | 171 |
| 170 === | 172 === |
| 171 === ERROR: Unexpected result of analysis. | 173 === ERROR: Unexpected result of analysis. |
| 172 === | 174 === |
| 173 === Please update [WHITE_LIST] in $testFileName | 175 === Please update [WHITE_LIST] in $testFileName |
| 174 === | 176 === |
| (...skipping 11 matching lines...) Expand all Loading... |
| 186 exit(1); | 188 exit(1); |
| 187 } | 189 } |
| 188 } | 190 } |
| 189 if (analyzeAll) { | 191 if (analyzeAll) { |
| 190 compiler.librariesToAnalyzeWhenRun = uriList; | 192 compiler.librariesToAnalyzeWhenRun = uriList; |
| 191 return compiler.run(null).then(onCompletion); | 193 return compiler.run(null).then(onCompletion); |
| 192 } else { | 194 } else { |
| 193 return compiler.run(uriList.single).then(onCompletion); | 195 return compiler.run(uriList.single).then(onCompletion); |
| 194 } | 196 } |
| 195 } | 197 } |
| OLD | NEW |