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.driver; | 5 library analyzer_cli.src.driver; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 import 'dart:io'; | 9 import 'dart:io'; |
10 | 10 |
11 import 'package:analyzer/file_system/file_system.dart' as fileSystem; | 11 import 'package:analyzer/file_system/file_system.dart' as fileSystem; |
12 import 'package:analyzer/file_system/physical_file_system.dart'; | 12 import 'package:analyzer/file_system/physical_file_system.dart'; |
13 import 'package:analyzer/plugin/embedded_resolver_provider.dart'; | 13 import 'package:analyzer/plugin/embedded_resolver_provider.dart'; |
14 import 'package:analyzer/plugin/options.dart'; | 14 import 'package:analyzer/plugin/options.dart'; |
15 import 'package:analyzer/plugin/resolver_provider.dart'; | 15 import 'package:analyzer/plugin/resolver_provider.dart'; |
16 import 'package:analyzer/source/analysis_options_provider.dart'; | 16 import 'package:analyzer/source/analysis_options_provider.dart'; |
17 import 'package:analyzer/source/embedder.dart'; | 17 import 'package:analyzer/source/embedder.dart'; |
18 import 'package:analyzer/source/package_map_provider.dart'; | 18 import 'package:analyzer/source/package_map_provider.dart'; |
19 import 'package:analyzer/source/package_map_resolver.dart'; | 19 import 'package:analyzer/source/package_map_resolver.dart'; |
20 import 'package:analyzer/source/pub_package_map_provider.dart'; | 20 import 'package:analyzer/source/pub_package_map_provider.dart'; |
21 import 'package:analyzer/source/sdk_ext.dart'; | 21 import 'package:analyzer/source/sdk_ext.dart'; |
22 import 'package:analyzer/src/generated/constant.dart'; | 22 import 'package:analyzer/src/generated/constant.dart'; |
23 import 'package:analyzer/src/generated/engine.dart'; | 23 import 'package:analyzer/src/generated/engine.dart'; |
24 import 'package:analyzer/src/generated/error.dart'; | 24 import 'package:analyzer/src/generated/error.dart'; |
25 import 'package:analyzer/src/generated/interner.dart'; | 25 import 'package:analyzer/src/generated/interner.dart'; |
26 import 'package:analyzer/src/generated/java_engine.dart'; | 26 import 'package:analyzer/src/generated/java_engine.dart'; |
27 import 'package:analyzer/src/generated/java_io.dart'; | 27 import 'package:analyzer/src/generated/java_io.dart'; |
| 28 import 'package:analyzer/src/generated/sdk.dart'; |
28 import 'package:analyzer/src/generated/sdk_io.dart'; | 29 import 'package:analyzer/src/generated/sdk_io.dart'; |
29 import 'package:analyzer/src/generated/source.dart'; | 30 import 'package:analyzer/src/generated/source.dart'; |
30 import 'package:analyzer/src/generated/source_io.dart'; | 31 import 'package:analyzer/src/generated/source_io.dart'; |
31 import 'package:analyzer/src/generated/utilities_general.dart' | 32 import 'package:analyzer/src/generated/utilities_general.dart' |
32 show PerformanceTag; | 33 show PerformanceTag; |
33 import 'package:analyzer/src/services/lint.dart'; | 34 import 'package:analyzer/src/services/lint.dart'; |
| 35 import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk; |
34 import 'package:analyzer/src/task/options.dart'; | 36 import 'package:analyzer/src/task/options.dart'; |
35 import 'package:analyzer_cli/src/analyzer_impl.dart'; | 37 import 'package:analyzer_cli/src/analyzer_impl.dart'; |
36 import 'package:analyzer_cli/src/build_mode.dart'; | 38 import 'package:analyzer_cli/src/build_mode.dart'; |
37 import 'package:analyzer_cli/src/error_formatter.dart'; | 39 import 'package:analyzer_cli/src/error_formatter.dart'; |
38 import 'package:analyzer_cli/src/options.dart'; | 40 import 'package:analyzer_cli/src/options.dart'; |
39 import 'package:analyzer_cli/src/perf_report.dart'; | 41 import 'package:analyzer_cli/src/perf_report.dart'; |
40 import 'package:analyzer_cli/starter.dart'; | 42 import 'package:analyzer_cli/starter.dart'; |
41 import 'package:linter/src/plugin/linter_plugin.dart'; | 43 import 'package:linter/src/plugin/linter_plugin.dart'; |
42 import 'package:package_config/discovery.dart' as pkgDiscovery; | 44 import 'package:package_config/discovery.dart' as pkgDiscovery; |
43 import 'package:package_config/packages.dart' show Packages; | 45 import 'package:package_config/packages.dart' show Packages; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 /// creation. | 86 /// creation. |
85 CommandLineOptions _previousOptions; | 87 CommandLineOptions _previousOptions; |
86 | 88 |
87 @override | 89 @override |
88 EmbeddedResolverProvider embeddedUriResolverProvider; | 90 EmbeddedResolverProvider embeddedUriResolverProvider; |
89 | 91 |
90 @override | 92 @override |
91 ResolverProvider packageResolverProvider; | 93 ResolverProvider packageResolverProvider; |
92 | 94 |
93 /// SDK instance. | 95 /// SDK instance. |
94 DirectoryBasedDartSdk sdk; | 96 DartSdk sdk; |
95 | 97 |
96 /// Collected analysis statistics. | 98 /// Collected analysis statistics. |
97 final AnalysisStats stats = new AnalysisStats(); | 99 final AnalysisStats stats = new AnalysisStats(); |
98 | 100 |
99 /// This Driver's current analysis context. | 101 /// This Driver's current analysis context. |
100 /// | 102 /// |
101 /// *Visible for testing.* | 103 /// *Visible for testing.* |
102 AnalysisContext get context => _context; | 104 AnalysisContext get context => _context; |
103 | 105 |
104 @override | 106 @override |
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 exitCode = errorSeverity.ordinal; | 579 exitCode = errorSeverity.ordinal; |
578 } | 580 } |
579 if (options.warningsAreFatal && errorSeverity == ErrorSeverity.WARNING) { | 581 if (options.warningsAreFatal && errorSeverity == ErrorSeverity.WARNING) { |
580 exitCode = errorSeverity.ordinal; | 582 exitCode = errorSeverity.ordinal; |
581 } | 583 } |
582 return errorSeverity; | 584 return errorSeverity; |
583 } | 585 } |
584 | 586 |
585 void _setupSdk(CommandLineOptions options) { | 587 void _setupSdk(CommandLineOptions options) { |
586 if (sdk == null) { | 588 if (sdk == null) { |
587 String dartSdkPath = options.dartSdkPath; | 589 if (options.dartSdkSummaryPath != null) { |
588 sdk = new DirectoryBasedDartSdk(new JavaFile(dartSdkPath)); | 590 sdk = new SummaryBasedDartSdk(options.dartSdkSummaryPath); |
589 sdk.useSummary = options.sourceFiles.every((String sourcePath) { | 591 } else { |
590 sourcePath = path.absolute(sourcePath); | 592 String dartSdkPath = options.dartSdkPath; |
591 sourcePath = path.normalize(sourcePath); | 593 DirectoryBasedDartSdk directorySdk = |
592 return !path.isWithin(dartSdkPath, sourcePath); | 594 new DirectoryBasedDartSdk(new JavaFile(dartSdkPath)); |
593 }); | 595 directorySdk.useSummary = |
594 sdk.analysisOptions = context.analysisOptions; | 596 options.sourceFiles.every((String sourcePath) { |
| 597 sourcePath = path.absolute(sourcePath); |
| 598 sourcePath = path.normalize(sourcePath); |
| 599 return !path.isWithin(dartSdkPath, sourcePath); |
| 600 }); |
| 601 directorySdk.analysisOptions = context.analysisOptions; |
| 602 sdk = directorySdk; |
| 603 } |
595 } | 604 } |
596 } | 605 } |
597 | 606 |
598 static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions( | 607 static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions( |
599 CommandLineOptions options) { | 608 CommandLineOptions options) { |
600 AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl(); | 609 AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl(); |
601 contextOptions.hint = !options.disableHints; | 610 contextOptions.hint = !options.disableHints; |
602 contextOptions.enableStrictCallChecks = options.enableStrictCallChecks; | 611 contextOptions.enableStrictCallChecks = options.enableStrictCallChecks; |
603 contextOptions.enableSuperMixins = options.enableSuperMixins; | 612 contextOptions.enableSuperMixins = options.enableSuperMixins; |
604 contextOptions.generateImplicitErrors = options.showPackageWarnings; | 613 contextOptions.generateImplicitErrors = options.showPackageWarnings; |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
783 for (var package in packages) { | 792 for (var package in packages) { |
784 var packageName = path.basename(package.path); | 793 var packageName = path.basename(package.path); |
785 var realPath = package.resolveSymbolicLinksSync(); | 794 var realPath = package.resolveSymbolicLinksSync(); |
786 result[packageName] = [ | 795 result[packageName] = [ |
787 PhysicalResourceProvider.INSTANCE.getFolder(realPath) | 796 PhysicalResourceProvider.INSTANCE.getFolder(realPath) |
788 ]; | 797 ]; |
789 } | 798 } |
790 return result; | 799 return result; |
791 } | 800 } |
792 } | 801 } |
OLD | NEW |