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

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

Issue 2694083002: Switch to the new analysis driver in analyzer_cli. (Closed)
Patch Set: Created 3 years, 10 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
« no previous file with comments | « pkg/analyzer_cli/lib/src/analyzer_impl.dart ('k') | pkg/analyzer_cli/lib/src/options.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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' as io; 9 import 'dart:io' as io;
10 10
11 import 'package:analyzer/error/error.dart'; 11 import 'package:analyzer/error/error.dart';
12 import 'package:analyzer/file_system/file_system.dart' as file_system; 12 import 'package:analyzer/file_system/file_system.dart' as file_system;
13 import 'package:analyzer/file_system/file_system.dart'; 13 import 'package:analyzer/file_system/file_system.dart';
14 import 'package:analyzer/file_system/physical_file_system.dart'; 14 import 'package:analyzer/file_system/physical_file_system.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/package_map_provider.dart'; 17 import 'package:analyzer/source/package_map_provider.dart';
18 import 'package:analyzer/source/package_map_resolver.dart'; 18 import 'package:analyzer/source/package_map_resolver.dart';
19 import 'package:analyzer/source/pub_package_map_provider.dart'; 19 import 'package:analyzer/source/pub_package_map_provider.dart';
20 import 'package:analyzer/source/sdk_ext.dart'; 20 import 'package:analyzer/source/sdk_ext.dart';
21 import 'package:analyzer/src/context/builder.dart'; 21 import 'package:analyzer/src/context/builder.dart';
22 import 'package:analyzer/src/dart/analysis/byte_store.dart'; 22 import 'package:analyzer/src/dart/analysis/byte_store.dart';
23 import 'package:analyzer/src/dart/analysis/driver.dart'; 23 import 'package:analyzer/src/dart/analysis/driver.dart';
24 import 'package:analyzer/src/dart/analysis/file_byte_store.dart';
24 import 'package:analyzer/src/dart/analysis/file_state.dart'; 25 import 'package:analyzer/src/dart/analysis/file_state.dart';
25 import 'package:analyzer/src/dart/sdk/sdk.dart'; 26 import 'package:analyzer/src/dart/sdk/sdk.dart';
26 import 'package:analyzer/src/generated/constant.dart'; 27 import 'package:analyzer/src/generated/constant.dart';
27 import 'package:analyzer/src/generated/engine.dart'; 28 import 'package:analyzer/src/generated/engine.dart';
28 import 'package:analyzer/src/generated/interner.dart'; 29 import 'package:analyzer/src/generated/interner.dart';
29 import 'package:analyzer/src/generated/java_engine.dart'; 30 import 'package:analyzer/src/generated/java_engine.dart';
30 import 'package:analyzer/src/generated/sdk.dart'; 31 import 'package:analyzer/src/generated/sdk.dart';
31 import 'package:analyzer/src/generated/source.dart'; 32 import 'package:analyzer/src/generated/source.dart';
32 import 'package:analyzer/src/generated/source_io.dart'; 33 import 'package:analyzer/src/generated/source_io.dart';
33 import 'package:analyzer/src/generated/utilities_general.dart' 34 import 'package:analyzer/src/generated/utilities_general.dart'
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 var linterNode = options['linter']; 70 var linterNode = options['linter'];
70 return linterNode is YamlMap && linterNode.containsKey('rules'); 71 return linterNode is YamlMap && linterNode.containsKey('rules');
71 } 72 }
72 73
73 typedef Future<ErrorSeverity> _BatchRunnerHandler(List<String> args); 74 typedef Future<ErrorSeverity> _BatchRunnerHandler(List<String> args);
74 75
75 class Driver implements CommandLineStarter { 76 class Driver implements CommandLineStarter {
76 static final PerformanceTag _analyzeAllTag = 77 static final PerformanceTag _analyzeAllTag =
77 new PerformanceTag("Driver._analyzeAll"); 78 new PerformanceTag("Driver._analyzeAll");
78 79
79 static ByteStore analysisDriverByteStore = new MemoryByteStore(); 80 static ByteStore analysisDriverMemoryByteStore = new MemoryByteStore();
81 static ByteStore analysisDriverFileByteStore = new MemoryCachingByteStore(
82 new EvictingFileByteStore(
83 PhysicalResourceProvider.INSTANCE
84 .getStateLocation('.analysis-driver')
85 .path,
86 1024 * 1024 * 1024 /*1 GiB*/),
87 64 * 1024 * 1024 /*64 MiB*/);
80 88
81 /// The plugins that are defined outside the `analyzer_cli` package. 89 /// The plugins that are defined outside the `analyzer_cli` package.
82 List<Plugin> _userDefinedPlugins = <Plugin>[]; 90 List<Plugin> _userDefinedPlugins = <Plugin>[];
83 91
84 /// The context that was most recently created by a call to [_analyzeAll], or 92 /// The context that was most recently created by a call to [_analyzeAll], or
85 /// `null` if [_analyzeAll] hasn't been called yet. 93 /// `null` if [_analyzeAll] hasn't been called yet.
86 InternalAnalysisContext _context; 94 InternalAnalysisContext _context;
87 95
88 AnalysisDriver analysisDriver; 96 AnalysisDriver analysisDriver;
89 97
(...skipping 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 setupAnalysisContext(_context, options, analysisOptions); 573 setupAnalysisContext(_context, options, analysisOptions);
566 _context.sourceFactory = sourceFactory; 574 _context.sourceFactory = sourceFactory;
567 575
568 if (options.enableNewAnalysisDriver) { 576 if (options.enableNewAnalysisDriver) {
569 PerformanceLog log = new PerformanceLog(null); 577 PerformanceLog log = new PerformanceLog(null);
570 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log); 578 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
571 analysisDriver = new AnalysisDriver( 579 analysisDriver = new AnalysisDriver(
572 scheduler, 580 scheduler,
573 log, 581 log,
574 resourceProvider, 582 resourceProvider,
575 analysisDriverByteStore, 583 options.useAnalysisDriverMemoryByteStore
584 ? analysisDriverMemoryByteStore
585 : analysisDriverFileByteStore,
576 new FileContentOverlay(), 586 new FileContentOverlay(),
577 'test', 587 'test',
578 context.sourceFactory, 588 context.sourceFactory,
579 context.analysisOptions); 589 context.analysisOptions);
580 analysisDriver.results.listen((_) {}); 590 analysisDriver.results.listen((_) {});
581 analysisDriver.exceptions.listen((_) {}); 591 analysisDriver.exceptions.listen((_) {});
582 scheduler.start(); 592 scheduler.start();
583 } else { 593 } else {
584 if (sdkBundle != null) { 594 if (sdkBundle != null) {
585 _context.resultProvider = 595 _context.resultProvider =
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 sourcePath = path.absolute(sourcePath); 719 sourcePath = path.absolute(sourcePath);
710 sourcePath = path.normalize(sourcePath); 720 sourcePath = path.normalize(sourcePath);
711 return !path.isWithin(dartSdkPath, sourcePath); 721 return !path.isWithin(dartSdkPath, sourcePath);
712 }); 722 });
713 dartSdk.analysisOptions = analysisOptions; 723 dartSdk.analysisOptions = analysisOptions;
714 sdk = dartSdk; 724 sdk = dartSdk;
715 } 725 }
716 } 726 }
717 } 727 }
718 728
729 static AnalysisOptionsImpl createAnalysisOptions(
730 file_system.ResourceProvider resourceProvider,
731 SourceFactory sourceFactory,
732 CommandLineOptions options) {
733 // Prepare context options.
734 AnalysisOptionsImpl analysisOptions =
735 createAnalysisOptionsForCommandLineOptions(options);
736
737 // Process analysis options file (and notify all interested parties).
738 _processAnalysisOptions(
739 resourceProvider, sourceFactory, analysisOptions, options);
740 return analysisOptions;
741 }
742
719 static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions( 743 static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions(
720 CommandLineOptions options) { 744 CommandLineOptions options) {
721 AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl(); 745 AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl();
722 contextOptions.trackCacheDependencies = false; 746 contextOptions.trackCacheDependencies = false;
723 contextOptions.disableCacheFlushing = options.disableCacheFlushing; 747 contextOptions.disableCacheFlushing = options.disableCacheFlushing;
724 contextOptions.hint = !options.disableHints; 748 contextOptions.hint = !options.disableHints;
725 contextOptions.enableStrictCallChecks = options.enableStrictCallChecks; 749 contextOptions.enableStrictCallChecks = options.enableStrictCallChecks;
726 contextOptions.enableSuperMixins = options.enableSuperMixins; 750 contextOptions.enableSuperMixins = options.enableSuperMixins;
727 contextOptions.generateImplicitErrors = options.showPackageWarnings; 751 contextOptions.generateImplicitErrors = options.showPackageWarnings;
728 contextOptions.generateSdkErrors = options.showSdkWarnings; 752 contextOptions.generateSdkErrors = options.showSdkWarnings;
729 contextOptions.lint = options.lints; 753 contextOptions.lint = options.lints;
730 contextOptions.strongMode = options.strongMode; 754 contextOptions.strongMode = options.strongMode;
731 contextOptions.implicitCasts = options.implicitCasts; 755 contextOptions.implicitCasts = options.implicitCasts;
732 contextOptions.implicitDynamic = options.implicitDynamic; 756 contextOptions.implicitDynamic = options.implicitDynamic;
733 return contextOptions; 757 return contextOptions;
734 } 758 }
735 759
736 static AnalysisOptionsImpl createAnalysisOptions(
737 file_system.ResourceProvider resourceProvider,
738 SourceFactory sourceFactory,
739 CommandLineOptions options) {
740 // Prepare context options.
741 AnalysisOptionsImpl analysisOptions =
742 createAnalysisOptionsForCommandLineOptions(options);
743
744 // Process analysis options file (and notify all interested parties).
745 _processAnalysisOptions(
746 resourceProvider, sourceFactory, analysisOptions, options);
747 return analysisOptions;
748 }
749
750 static void setAnalysisContextOptions( 760 static void setAnalysisContextOptions(
751 file_system.ResourceProvider resourceProvider, 761 file_system.ResourceProvider resourceProvider,
752 SourceFactory sourceFactory, 762 SourceFactory sourceFactory,
753 AnalysisContext context, 763 AnalysisContext context,
754 CommandLineOptions options, 764 CommandLineOptions options,
755 void configureContextOptions(AnalysisOptionsImpl contextOptions)) { 765 void configureContextOptions(AnalysisOptionsImpl contextOptions)) {
756 AnalysisOptionsImpl analysisOptions = 766 AnalysisOptionsImpl analysisOptions =
757 createAnalysisOptions(resourceProvider, sourceFactory, options); 767 createAnalysisOptions(resourceProvider, sourceFactory, options);
758 configureContextOptions(analysisOptions); 768 configureContextOptions(analysisOptions);
759 setupAnalysisContext(context, options, analysisOptions); 769 setupAnalysisContext(context, options, analysisOptions);
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 for (var package in packages) { 948 for (var package in packages) {
939 var packageName = path.basename(package.path); 949 var packageName = path.basename(package.path);
940 var realPath = package.resolveSymbolicLinksSync(); 950 var realPath = package.resolveSymbolicLinksSync();
941 result[packageName] = [ 951 result[packageName] = [
942 PhysicalResourceProvider.INSTANCE.getFolder(realPath) 952 PhysicalResourceProvider.INSTANCE.getFolder(realPath)
943 ]; 953 ];
944 } 954 }
945 return result; 955 return result;
946 } 956 }
947 } 957 }
OLDNEW
« no previous file with comments | « pkg/analyzer_cli/lib/src/analyzer_impl.dart ('k') | pkg/analyzer_cli/lib/src/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698