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

Side by Side Diff: pkg/analysis_server/lib/src/analysis_server.dart

Issue 443213002: Send 'analysis.errors' notification only for files in analysis roots. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
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 library analysis.server; 5 library analysis.server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 9
10 import 'package:analyzer/file_system/file_system.dart'; 10 import 'package:analyzer/file_system/file_system.dart';
11 import 'package:analysis_server/src/analysis_logger.dart'; 11 import 'package:analysis_server/src/analysis_logger.dart';
12 import 'package:analysis_server/src/channel.dart'; 12 import 'package:analysis_server/src/channel.dart';
13 import 'package:analysis_server/src/constants.dart'; 13 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/context_directory_manager.dart'; 14 import 'package:analysis_server/src/context_directory_manager.dart';
15 import 'package:analysis_server/src/domain_analysis.dart'; 15 import 'package:analysis_server/src/domain_analysis.dart';
16 import 'package:analysis_server/src/operation/operation_analysis.dart'; 16 import 'package:analysis_server/src/operation/operation_analysis.dart';
17 import 'package:analysis_server/src/operation/operation.dart'; 17 import 'package:analysis_server/src/operation/operation.dart';
18 import 'package:analysis_server/src/operation/operation_queue.dart'; 18 import 'package:analysis_server/src/operation/operation_queue.dart';
19 import 'package:analysis_server/src/package_map_provider.dart'; 19 import 'package:analysis_server/src/package_map_provider.dart';
20 import 'package:analysis_server/src/protocol.dart'; 20 import 'package:analysis_server/src/protocol.dart';
21 import 'package:analyzer/source/package_map_resolver.dart'; 21 import 'package:analyzer/source/package_map_resolver.dart';
22 import 'package:analyzer/src/generated/ast.dart'; 22 import 'package:analyzer/src/generated/ast.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';
25 import 'package:analyzer/src/generated/source.dart'; 24 import 'package:analyzer/src/generated/source.dart';
26 import 'package:analyzer/src/generated/sdk.dart'; 25 import 'package:analyzer/src/generated/sdk.dart';
27 import 'package:analyzer/src/generated/source_io.dart'; 26 import 'package:analyzer/src/generated/source_io.dart';
28 import 'package:analyzer/src/generated/java_engine.dart'; 27 import 'package:analyzer/src/generated/java_engine.dart';
29 import 'package:analysis_services/constants.dart'; 28 import 'package:analysis_services/constants.dart';
30 import 'package:analysis_services/index/index.dart'; 29 import 'package:analysis_services/index/index.dart';
31 import 'package:analysis_services/search/search_engine.dart'; 30 import 'package:analysis_services/search/search_engine.dart';
32 import 'package:analyzer/src/generated/element.dart'; 31 import 'package:analyzer/src/generated/element.dart';
33 32
34 33
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 363
365 /** 364 /**
366 * Returns `true` if there is a subscription for the given [server] and [file] . 365 * Returns `true` if there is a subscription for the given [server] and [file] .
367 */ 366 */
368 bool hasAnalysisSubscription(AnalysisService service, String file) { 367 bool hasAnalysisSubscription(AnalysisService service, String file) {
369 Set<String> files = analysisServices[service]; 368 Set<String> files = analysisServices[service];
370 return files != null && files.contains(file); 369 return files != null && files.contains(file);
371 } 370 }
372 371
373 /** 372 /**
373 * Returns `true` if errors should be reported for [file] with the given
374 * absolute path.
375 */
376 bool shouldSendErrorsNotificationFor(String file) {
377 // TODO(scheglov) add support for the "--no-error-notification" flag.
378 return contextDirectoryManager.isInAnalysisRoot(file);
379 }
380
381 /**
374 * Returns `true` if the given [AnalysisContext] is a priority one. 382 * Returns `true` if the given [AnalysisContext] is a priority one.
375 */ 383 */
376 bool isPriorityContext(AnalysisContext context) { 384 bool isPriorityContext(AnalysisContext context) {
377 // TODO(scheglov) implement support for priority sources/contexts 385 // TODO(scheglov) implement support for priority sources/contexts
378 return false; 386 return false;
379 } 387 }
380 388
381 /** 389 /**
382 * Perform the next available [ServerOperation]. 390 * Perform the next available [ServerOperation].
383 */ 391 */
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 subscriptions.forEach((service, Set<String> newFiles) { 494 subscriptions.forEach((service, Set<String> newFiles) {
487 Set<String> oldFiles = analysisServices[service]; 495 Set<String> oldFiles = analysisServices[service];
488 Set<String> todoFiles = oldFiles != null ? newFiles.difference(oldFiles) : newFiles; 496 Set<String> todoFiles = oldFiles != null ? newFiles.difference(oldFiles) : newFiles;
489 for (String file in todoFiles) { 497 for (String file in todoFiles) {
490 Source source = getSource(file); 498 Source source = getSource(file);
491 // prepare context 499 // prepare context
492 AnalysisContext context = getAnalysisContext(file); 500 AnalysisContext context = getAnalysisContext(file);
493 if (context == null) { 501 if (context == null) {
494 continue; 502 continue;
495 } 503 }
496 // errors
497 if (service == AnalysisService.ERRORS) {
498 LineInfo lineInfo = context.getLineInfo(source);
499 if (lineInfo != null) {
500 List<AnalysisError> errors = context.getErrors(source).errors;
501 sendAnalysisNotificationErrors(this, file, lineInfo, errors);
502 }
503 }
504 // Dart unit notifications. 504 // Dart unit notifications.
505 if (AnalysisEngine.isDartFileName(file)) { 505 if (AnalysisEngine.isDartFileName(file)) {
506 CompilationUnit dartUnit = getResolvedCompilationUnitToResendNotificat ion(file); 506 CompilationUnit dartUnit = getResolvedCompilationUnitToResendNotificat ion(file);
507 if (dartUnit != null) { 507 if (dartUnit != null) {
508 switch (service) { 508 switch (service) {
509 case AnalysisService.HIGHLIGHTS: 509 case AnalysisService.HIGHLIGHTS:
510 sendAnalysisNotificationHighlights(this, file, dartUnit); 510 sendAnalysisNotificationHighlights(this, file, dartUnit);
511 break; 511 break;
512 case AnalysisService.NAVIGATION: 512 case AnalysisService.NAVIGATION:
513 // TODO(scheglov) consider support for one unit in 2+ libraries 513 // TODO(scheglov) consider support for one unit in 2+ libraries
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 notification.setParameter(STACK_TRACE, stackTraceString); 765 notification.setParameter(STACK_TRACE, stackTraceString);
766 channel.sendNotification(notification); 766 channel.sendNotification(notification);
767 } 767 }
768 } 768 }
769 769
770 770
771 /** 771 /**
772 * An enumeration of the services provided by the analysis domain. 772 * An enumeration of the services provided by the analysis domain.
773 */ 773 */
774 class AnalysisService extends Enum2<AnalysisService> { 774 class AnalysisService extends Enum2<AnalysisService> {
775 static const ERRORS = const AnalysisService('ERRORS', 0);
776 static const HIGHLIGHTS = const AnalysisService('HIGHLIGHTS', 1); 775 static const HIGHLIGHTS = const AnalysisService('HIGHLIGHTS', 1);
777 static const NAVIGATION = const AnalysisService('NAVIGATION', 2); 776 static const NAVIGATION = const AnalysisService('NAVIGATION', 2);
778 static const OCCURRENCES = const AnalysisService('OCCURRENCES', 3); 777 static const OCCURRENCES = const AnalysisService('OCCURRENCES', 3);
779 static const OUTLINE = const AnalysisService('OUTLINE', 4); 778 static const OUTLINE = const AnalysisService('OUTLINE', 4);
780 static const OVERRIDES = const AnalysisService('OVERRIDES', 5); 779 static const OVERRIDES = const AnalysisService('OVERRIDES', 5);
781 780
782 static const List<AnalysisService> VALUES = 781 static const List<AnalysisService> VALUES =
783 const [ERRORS, HIGHLIGHTS, NAVIGATION, OCCURRENCES, OUTLINE, OVERRIDES]; 782 const [HIGHLIGHTS, NAVIGATION, OCCURRENCES, OUTLINE, OVERRIDES];
784 783
785 const AnalysisService(String name, int ordinal) : super(name, ordinal); 784 const AnalysisService(String name, int ordinal) : super(name, ordinal);
786 } 785 }
787 786
788 787
789 typedef void OptionUpdater(AnalysisOptionsImpl options); 788 typedef void OptionUpdater(AnalysisOptionsImpl options);
790 789
791 /** 790 /**
792 * An enumeration of the services provided by the server domain. 791 * An enumeration of the services provided by the server domain.
793 */ 792 */
794 class ServerService extends Enum2<ServerService> { 793 class ServerService extends Enum2<ServerService> {
795 static const ServerService STATUS = const ServerService('STATUS', 0); 794 static const ServerService STATUS = const ServerService('STATUS', 0);
796 795
797 static const List<ServerService> VALUES = const [STATUS]; 796 static const List<ServerService> VALUES = const [STATUS];
798 797
799 const ServerService(String name, int ordinal) : super(name, ordinal); 798 const ServerService(String name, int ordinal) : super(name, ordinal);
800 } 799 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698