Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: pkg/analyzer_cli/lib/src/driver.dart

Issue 1974323003: Add '--dart-sdk-summary' option to analyzer-cli and use SummaryBasedDartSdk. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698