| 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.build_mode; | 5 library analyzer_cli.src.build_mode; |
| 6 | 6 |
| 7 import 'dart:core' hide Resource; | 7 import 'dart:core' hide Resource; |
| 8 import 'dart:io' as io; | 8 import 'dart:io' as io; |
| 9 | 9 |
| 10 import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit; | 10 import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit; |
| 11 import 'package:analyzer/dart/element/element.dart'; | 11 import 'package:analyzer/dart/element/element.dart'; |
| 12 import 'package:analyzer/file_system/file_system.dart'; | 12 import 'package:analyzer/file_system/file_system.dart'; |
| 13 import 'package:analyzer/file_system/physical_file_system.dart'; | |
| 14 import 'package:analyzer/src/generated/engine.dart'; | 13 import 'package:analyzer/src/generated/engine.dart'; |
| 15 import 'package:analyzer/src/generated/error.dart'; | 14 import 'package:analyzer/src/generated/error.dart'; |
| 16 import 'package:analyzer/src/generated/java_io.dart'; | 15 import 'package:analyzer/src/generated/java_io.dart'; |
| 17 import 'package:analyzer/src/generated/sdk.dart'; | 16 import 'package:analyzer/src/generated/sdk.dart'; |
| 18 import 'package:analyzer/src/generated/sdk_io.dart'; | 17 import 'package:analyzer/src/generated/sdk_io.dart'; |
| 19 import 'package:analyzer/src/generated/source.dart'; | 18 import 'package:analyzer/src/generated/source.dart'; |
| 20 import 'package:analyzer/src/generated/source_io.dart'; | 19 import 'package:analyzer/src/generated/source_io.dart'; |
| 21 import 'package:analyzer/src/summary/format.dart'; | 20 import 'package:analyzer/src/summary/format.dart'; |
| 22 import 'package:analyzer/src/summary/idl.dart'; | 21 import 'package:analyzer/src/summary/idl.dart'; |
| 23 import 'package:analyzer/src/summary/link.dart'; | 22 import 'package:analyzer/src/summary/link.dart'; |
| 24 import 'package:analyzer/src/summary/package_bundle_reader.dart'; | 23 import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
| 25 import 'package:analyzer/src/summary/summarize_ast.dart'; | 24 import 'package:analyzer/src/summary/summarize_ast.dart'; |
| 26 import 'package:analyzer/src/summary/summarize_elements.dart'; | 25 import 'package:analyzer/src/summary/summarize_elements.dart'; |
| 27 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; | 26 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; |
| 28 import 'package:analyzer/task/dart.dart'; | 27 import 'package:analyzer/task/dart.dart'; |
| 29 import 'package:analyzer_cli/src/analyzer_impl.dart'; | 28 import 'package:analyzer_cli/src/analyzer_impl.dart'; |
| 30 import 'package:analyzer_cli/src/driver.dart'; | 29 import 'package:analyzer_cli/src/driver.dart'; |
| 31 import 'package:analyzer_cli/src/error_formatter.dart'; | 30 import 'package:analyzer_cli/src/error_formatter.dart'; |
| 32 import 'package:analyzer_cli/src/options.dart'; | 31 import 'package:analyzer_cli/src/options.dart'; |
| 33 import 'package:bazel_worker/bazel_worker.dart'; | 32 import 'package:bazel_worker/bazel_worker.dart'; |
| 34 | 33 |
| 35 /** | 34 /** |
| 36 * Persistent Bazel worker. | 35 * Persistent Bazel worker. |
| 37 */ | 36 */ |
| 38 class AnalyzerWorkerLoop extends SyncWorkerLoop { | 37 class AnalyzerWorkerLoop extends SyncWorkerLoop { |
| 39 final StringBuffer errorBuffer = new StringBuffer(); | 38 final StringBuffer errorBuffer = new StringBuffer(); |
| 40 final StringBuffer outBuffer = new StringBuffer(); | 39 final StringBuffer outBuffer = new StringBuffer(); |
| 41 | 40 |
| 41 final ResourceProvider resourceProvider; |
| 42 final String dartSdkPath; | 42 final String dartSdkPath; |
| 43 | 43 |
| 44 AnalyzerWorkerLoop(SyncWorkerConnection connection, {this.dartSdkPath}) | 44 AnalyzerWorkerLoop(this.resourceProvider, SyncWorkerConnection connection, |
| 45 {this.dartSdkPath}) |
| 45 : super(connection: connection); | 46 : super(connection: connection); |
| 46 | 47 |
| 47 factory AnalyzerWorkerLoop.std( | 48 factory AnalyzerWorkerLoop.std(ResourceProvider resourceProvider, |
| 48 {io.Stdin stdinStream, io.Stdout stdoutStream, String dartSdkPath}) { | 49 {io.Stdin stdinStream, io.Stdout stdoutStream, String dartSdkPath}) { |
| 49 SyncWorkerConnection connection = new StdSyncWorkerConnection( | 50 SyncWorkerConnection connection = new StdSyncWorkerConnection( |
| 50 stdinStream: stdinStream, stdoutStream: stdoutStream); | 51 stdinStream: stdinStream, stdoutStream: stdoutStream); |
| 51 return new AnalyzerWorkerLoop(connection, dartSdkPath: dartSdkPath); | 52 return new AnalyzerWorkerLoop(resourceProvider, connection, |
| 53 dartSdkPath: dartSdkPath); |
| 52 } | 54 } |
| 53 | 55 |
| 54 /** | 56 /** |
| 55 * Performs analysis with given [options]. | 57 * Performs analysis with given [options]. |
| 56 */ | 58 */ |
| 57 void analyze(CommandLineOptions options) { | 59 void analyze(CommandLineOptions options) { |
| 58 new BuildMode(options, new AnalysisStats()).analyze(); | 60 new BuildMode(resourceProvider, options, new AnalysisStats()).analyze(); |
| 59 AnalysisEngine.instance.clearCaches(); | 61 AnalysisEngine.instance.clearCaches(); |
| 60 } | 62 } |
| 61 | 63 |
| 62 /** | 64 /** |
| 63 * Perform a single loop step. | 65 * Perform a single loop step. |
| 64 */ | 66 */ |
| 65 @override | 67 @override |
| 66 WorkResponse performRequest(WorkRequest request) { | 68 WorkResponse performRequest(WorkRequest request) { |
| 67 errorBuffer.clear(); | 69 errorBuffer.clear(); |
| 68 outBuffer.clear(); | 70 outBuffer.clear(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 msg += outBuffer.toString() + '\n'; | 118 msg += outBuffer.toString() + '\n'; |
| 117 } | 119 } |
| 118 return msg; | 120 return msg; |
| 119 } | 121 } |
| 120 } | 122 } |
| 121 | 123 |
| 122 /** | 124 /** |
| 123 * Analyzer used when the "--build-mode" option is supplied. | 125 * Analyzer used when the "--build-mode" option is supplied. |
| 124 */ | 126 */ |
| 125 class BuildMode { | 127 class BuildMode { |
| 128 final ResourceProvider resourceProvider; |
| 126 final CommandLineOptions options; | 129 final CommandLineOptions options; |
| 127 final AnalysisStats stats; | 130 final AnalysisStats stats; |
| 128 | 131 |
| 129 final ResourceProvider resourceProvider = PhysicalResourceProvider.INSTANCE; | |
| 130 SummaryDataStore summaryDataStore; | 132 SummaryDataStore summaryDataStore; |
| 131 InternalAnalysisContext context; | 133 InternalAnalysisContext context; |
| 132 Map<Uri, JavaFile> uriToFileMap; | 134 Map<Uri, JavaFile> uriToFileMap; |
| 133 final List<Source> explicitSources = <Source>[]; | 135 final List<Source> explicitSources = <Source>[]; |
| 134 | 136 |
| 135 PackageBundleAssembler assembler; | 137 PackageBundleAssembler assembler; |
| 136 final Set<Source> processedSources = new Set<Source>(); | 138 final Set<Source> processedSources = new Set<Source>(); |
| 137 final Map<Uri, UnlinkedUnit> uriToUnit = <Uri, UnlinkedUnit>{}; | 139 final Map<Uri, UnlinkedUnit> uriToUnit = <Uri, UnlinkedUnit>{}; |
| 138 | 140 |
| 139 BuildMode(this.options, this.stats); | 141 BuildMode(this.resourceProvider, this.options, this.stats); |
| 140 | 142 |
| 141 /** | 143 /** |
| 142 * Perform package analysis according to the given [options]. | 144 * Perform package analysis according to the given [options]. |
| 143 */ | 145 */ |
| 144 ErrorSeverity analyze() { | 146 ErrorSeverity analyze() { |
| 145 // Write initial progress message. | 147 // Write initial progress message. |
| 146 if (!options.machineFormat) { | 148 if (!options.machineFormat) { |
| 147 outSink.writeln("Analyzing sources ${options.sourceFiles}..."); | 149 outSink.writeln("Analyzing sources ${options.sourceFiles}..."); |
| 148 } | 150 } |
| 149 | 151 |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 | 280 |
| 279 // Create the context. | 281 // Create the context. |
| 280 context = AnalysisEngine.instance.createAnalysisContext(); | 282 context = AnalysisEngine.instance.createAnalysisContext(); |
| 281 context.sourceFactory = new SourceFactory(<UriResolver>[ | 283 context.sourceFactory = new SourceFactory(<UriResolver>[ |
| 282 new DartUriResolver(sdk), | 284 new DartUriResolver(sdk), |
| 283 new InSummaryPackageUriResolver(summaryDataStore), | 285 new InSummaryPackageUriResolver(summaryDataStore), |
| 284 new ExplicitSourceResolver(uriToFileMap) | 286 new ExplicitSourceResolver(uriToFileMap) |
| 285 ]); | 287 ]); |
| 286 | 288 |
| 287 // Set context options. | 289 // Set context options. |
| 288 Driver.setAnalysisContextOptions(context, options, | 290 Driver.setAnalysisContextOptions(resourceProvider, context, options, |
| 289 (AnalysisOptionsImpl contextOptions) { | 291 (AnalysisOptionsImpl contextOptions) { |
| 290 if (options.buildSummaryOnlyDiet) { | 292 if (options.buildSummaryOnlyDiet) { |
| 291 contextOptions.analyzeFunctionBodies = false; | 293 contextOptions.analyzeFunctionBodies = false; |
| 292 } | 294 } |
| 293 }); | 295 }); |
| 294 | 296 |
| 295 if (!options.buildSummaryOnlyAst) { | 297 if (!options.buildSummaryOnlyAst) { |
| 296 // Configure using summaries. | 298 // Configure using summaries. |
| 297 context.typeProvider = sdk.context.typeProvider; | 299 context.typeProvider = sdk.context.typeProvider; |
| 298 context.resultProvider = | 300 context.resultProvider = |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 'Illegal input file (must be "\$uri|\$path"): $sourceFile'); | 384 'Illegal input file (must be "\$uri|\$path"): $sourceFile'); |
| 383 return null; | 385 return null; |
| 384 } | 386 } |
| 385 Uri uri = Uri.parse(sourceFile.substring(0, pipeIndex)); | 387 Uri uri = Uri.parse(sourceFile.substring(0, pipeIndex)); |
| 386 String path = sourceFile.substring(pipeIndex + 1); | 388 String path = sourceFile.substring(pipeIndex + 1); |
| 387 uriToFileMap[uri] = new JavaFile(path); | 389 uriToFileMap[uri] = new JavaFile(path); |
| 388 } | 390 } |
| 389 return uriToFileMap; | 391 return uriToFileMap; |
| 390 } | 392 } |
| 391 } | 393 } |
| OLD | NEW |