OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'dart:collection'; | 6 import 'dart:collection'; |
7 import 'dart:core'; | 7 import 'dart:core'; |
8 import 'dart:io' as io; | 8 import 'dart:io' as io; |
9 import 'dart:math' show max; | 9 import 'dart:math' show max; |
10 | 10 |
11 import 'package:analysis_server/protocol/protocol.dart'; | 11 import 'package:analysis_server/protocol/protocol.dart'; |
12 import 'package:analysis_server/protocol/protocol_generated.dart' | 12 import 'package:analysis_server/protocol/protocol_generated.dart' |
13 hide AnalysisOptions; | 13 hide AnalysisOptions; |
14 import 'package:analysis_server/src/analysis_logger.dart'; | 14 import 'package:analysis_server/src/analysis_logger.dart'; |
15 import 'package:analysis_server/src/channel/channel.dart'; | 15 import 'package:analysis_server/src/channel/channel.dart'; |
16 import 'package:analysis_server/src/collections.dart'; | 16 import 'package:analysis_server/src/collections.dart'; |
17 import 'package:analysis_server/src/computer/computer_highlights.dart'; | 17 import 'package:analysis_server/src/computer/computer_highlights.dart'; |
18 import 'package:analysis_server/src/computer/computer_highlights2.dart'; | 18 import 'package:analysis_server/src/computer/computer_highlights2.dart'; |
19 import 'package:analysis_server/src/computer/computer_outline.dart'; | 19 import 'package:analysis_server/src/computer/computer_outline.dart'; |
20 import 'package:analysis_server/src/computer/new_notifications.dart'; | 20 import 'package:analysis_server/src/computer/new_notifications.dart'; |
21 import 'package:analysis_server/src/context_manager.dart'; | 21 import 'package:analysis_server/src/context_manager.dart'; |
| 22 import 'package:analysis_server/src/domain_analysis.dart'; |
| 23 import 'package:analysis_server/src/domain_analytics.dart'; |
| 24 import 'package:analysis_server/src/domain_completion.dart'; |
| 25 import 'package:analysis_server/src/domain_diagnostic.dart'; |
| 26 import 'package:analysis_server/src/domain_execution.dart'; |
| 27 import 'package:analysis_server/src/domain_kythe.dart'; |
| 28 import 'package:analysis_server/src/domain_server.dart'; |
22 import 'package:analysis_server/src/domains/analysis/navigation.dart'; | 29 import 'package:analysis_server/src/domains/analysis/navigation.dart'; |
23 import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; | 30 import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; |
24 import 'package:analysis_server/src/domains/analysis/occurrences.dart'; | 31 import 'package:analysis_server/src/domains/analysis/occurrences.dart'; |
25 import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart'; | 32 import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart'; |
| 33 import 'package:analysis_server/src/edit/edit_domain.dart'; |
26 import 'package:analysis_server/src/operation/operation_analysis.dart'; | 34 import 'package:analysis_server/src/operation/operation_analysis.dart'; |
27 import 'package:analysis_server/src/plugin/notification_manager.dart'; | 35 import 'package:analysis_server/src/plugin/notification_manager.dart'; |
28 import 'package:analysis_server/src/plugin/plugin_manager.dart'; | 36 import 'package:analysis_server/src/plugin/plugin_manager.dart'; |
29 import 'package:analysis_server/src/plugin/plugin_watcher.dart'; | 37 import 'package:analysis_server/src/plugin/plugin_watcher.dart'; |
30 import 'package:analysis_server/src/plugin/server_plugin.dart'; | |
31 import 'package:analysis_server/src/protocol_server.dart' as server; | 38 import 'package:analysis_server/src/protocol_server.dart' as server; |
| 39 import 'package:analysis_server/src/search/search_domain.dart'; |
32 import 'package:analysis_server/src/server/diagnostic_server.dart'; | 40 import 'package:analysis_server/src/server/diagnostic_server.dart'; |
33 import 'package:analysis_server/src/services/correction/namespace.dart'; | 41 import 'package:analysis_server/src/services/correction/namespace.dart'; |
34 import 'package:analysis_server/src/services/search/search_engine.dart'; | 42 import 'package:analysis_server/src/services/search/search_engine.dart'; |
35 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; | 43 import 'package:analysis_server/src/services/search/search_engine_internal.dart'
; |
36 import 'package:analysis_server/src/utilities/null_string_sink.dart'; | 44 import 'package:analysis_server/src/utilities/null_string_sink.dart'; |
37 import 'package:analyzer/context/context_root.dart'; | 45 import 'package:analyzer/context/context_root.dart'; |
38 import 'package:analyzer/dart/ast/ast.dart'; | 46 import 'package:analyzer/dart/ast/ast.dart'; |
39 import 'package:analyzer/dart/element/element.dart'; | 47 import 'package:analyzer/dart/element/element.dart'; |
40 import 'package:analyzer/exception/exception.dart'; | 48 import 'package:analyzer/exception/exception.dart'; |
41 import 'package:analyzer/file_system/file_system.dart'; | 49 import 'package:analyzer/file_system/file_system.dart'; |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 * The [ResourceProvider] using which paths are converted into [Resource]s. | 137 * The [ResourceProvider] using which paths are converted into [Resource]s. |
130 */ | 138 */ |
131 final ResourceProvider resourceProvider; | 139 final ResourceProvider resourceProvider; |
132 | 140 |
133 /** | 141 /** |
134 * The [SearchEngine] for this server, may be `null` if indexing is disabled. | 142 * The [SearchEngine] for this server, may be `null` if indexing is disabled. |
135 */ | 143 */ |
136 SearchEngine searchEngine; | 144 SearchEngine searchEngine; |
137 | 145 |
138 /** | 146 /** |
139 * The plugin associated with this analysis server. | |
140 */ | |
141 final ServerPlugin serverPlugin; | |
142 | |
143 /** | |
144 * A list of the globs used to determine which files should be analyzed. The | 147 * A list of the globs used to determine which files should be analyzed. The |
145 * list is lazily created and should be accessed using [analyzedFilesGlobs]. | 148 * list is lazily created and should be accessed using [analyzedFilesGlobs]. |
146 */ | 149 */ |
147 List<Glob> _analyzedFilesGlobs = null; | 150 List<Glob> _analyzedFilesGlobs = null; |
148 | 151 |
149 /** | 152 /** |
150 * The [ContextManager] that handles the mapping from analysis roots to | 153 * The [ContextManager] that handles the mapping from analysis roots to |
151 * context directories. | 154 * context directories. |
152 */ | 155 */ |
153 ContextManager contextManager; | 156 ContextManager contextManager; |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 * | 336 * |
334 * If [rethrowExceptions] is true, then any exceptions thrown by analysis are | 337 * If [rethrowExceptions] is true, then any exceptions thrown by analysis are |
335 * propagated up the call stack. The default is true to allow analysis | 338 * propagated up the call stack. The default is true to allow analysis |
336 * exceptions to show up in unit tests, but it should be set to false when | 339 * exceptions to show up in unit tests, but it should be set to false when |
337 * running a full analysis server. | 340 * running a full analysis server. |
338 */ | 341 */ |
339 AnalysisServer( | 342 AnalysisServer( |
340 this.channel, | 343 this.channel, |
341 this.resourceProvider, | 344 this.resourceProvider, |
342 PubPackageMapProvider packageMapProvider, | 345 PubPackageMapProvider packageMapProvider, |
343 this.serverPlugin, | |
344 this.options, | 346 this.options, |
345 this.sdkManager, | 347 this.sdkManager, |
346 this.instrumentationService, | 348 this.instrumentationService, |
347 {this.diagnosticServer, | 349 {this.diagnosticServer, |
348 ResolverProvider fileResolverProvider: null, | 350 ResolverProvider fileResolverProvider: null, |
349 ResolverProvider packageResolverProvider: null}) | 351 ResolverProvider packageResolverProvider: null}) |
350 : notificationManager = | 352 : notificationManager = |
351 new NotificationManager(channel, resourceProvider) { | 353 new NotificationManager(channel, resourceProvider) { |
352 _performance = performanceDuringStartup; | 354 _performance = performanceDuringStartup; |
353 | 355 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 performanceAfterStartup = new ServerPerformance(); | 410 performanceAfterStartup = new ServerPerformance(); |
409 _performance = performanceAfterStartup; | 411 _performance = performanceAfterStartup; |
410 }); | 412 }); |
411 }); | 413 }); |
412 searchEngine = new SearchEngineImpl(driverMap.values); | 414 searchEngine = new SearchEngineImpl(driverMap.values); |
413 Notification notification = new ServerConnectedParams(VERSION, io.pid, | 415 Notification notification = new ServerConnectedParams(VERSION, io.pid, |
414 sessionId: instrumentationService.sessionId) | 416 sessionId: instrumentationService.sessionId) |
415 .toNotification(); | 417 .toNotification(); |
416 channel.sendNotification(notification); | 418 channel.sendNotification(notification); |
417 channel.listen(handleRequest, onDone: done, onError: error); | 419 channel.listen(handleRequest, onDone: done, onError: error); |
418 handlers = serverPlugin.createDomains(this); | 420 handlers = <server.RequestHandler>[ |
| 421 new ServerDomainHandler(this), |
| 422 new AnalysisDomainHandler(this), |
| 423 new EditDomainHandler(this), |
| 424 new SearchDomainHandler(this), |
| 425 new CompletionDomainHandler(this), |
| 426 new ExecutionDomainHandler(this), |
| 427 new DiagnosticDomainHandler(this), |
| 428 new AnalyticsDomainHandler(this), |
| 429 new KytheDomainHandler(this) |
| 430 ]; |
419 } | 431 } |
420 | 432 |
421 /** | 433 /** |
422 * Return a list of the globs used to determine which files should be analyzed
. | 434 * Return a list of the globs used to determine which files should be analyzed
. |
423 */ | 435 */ |
424 List<Glob> get analyzedFilesGlobs { | 436 List<Glob> get analyzedFilesGlobs { |
425 if (_analyzedFilesGlobs == null) { | 437 if (_analyzedFilesGlobs == null) { |
426 _analyzedFilesGlobs = <Glob>[]; | 438 _analyzedFilesGlobs = <Glob>[]; |
427 List<String> patterns = serverPlugin.analyzedFilePatterns; | 439 List<String> patterns = <String>[ |
| 440 '**/*.${AnalysisEngine.SUFFIX_DART}', |
| 441 '**/*.${AnalysisEngine.SUFFIX_HTML}', |
| 442 '**/*.${AnalysisEngine.SUFFIX_HTM}', |
| 443 '**/${AnalysisEngine.ANALYSIS_OPTIONS_FILE}', |
| 444 '**/${AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE}' |
| 445 ]; |
428 for (String pattern in patterns) { | 446 for (String pattern in patterns) { |
429 try { | 447 try { |
430 _analyzedFilesGlobs | 448 _analyzedFilesGlobs |
431 .add(new Glob(resourceProvider.pathContext.separator, pattern)); | 449 .add(new Glob(resourceProvider.pathContext.separator, pattern)); |
432 } catch (exception, stackTrace) { | 450 } catch (exception, stackTrace) { |
433 AnalysisEngine.instance.logger.logError( | 451 AnalysisEngine.instance.logger.logError( |
434 'Invalid glob pattern: "$pattern"', | 452 'Invalid glob pattern: "$pattern"', |
435 new CaughtException(exception, stackTrace)); | 453 new CaughtException(exception, stackTrace)); |
436 } | 454 } |
437 } | 455 } |
(...skipping 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1504 /** | 1522 /** |
1505 * The [PerformanceTag] for time spent in server request handlers. | 1523 * The [PerformanceTag] for time spent in server request handlers. |
1506 */ | 1524 */ |
1507 static PerformanceTag serverRequests = server.createChild('requests'); | 1525 static PerformanceTag serverRequests = server.createChild('requests'); |
1508 | 1526 |
1509 /** | 1527 /** |
1510 * The [PerformanceTag] for time spent in split store microtasks. | 1528 * The [PerformanceTag] for time spent in split store microtasks. |
1511 */ | 1529 */ |
1512 static PerformanceTag splitStore = new PerformanceTag('splitStore'); | 1530 static PerformanceTag splitStore = new PerformanceTag('splitStore'); |
1513 } | 1531 } |
OLD | NEW |