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

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

Issue 2967883002: Make analyzer respect exclusions from the analysis options file (Closed)
Patch Set: Created 3 years, 5 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 | « no previous file | no next file » | 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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io' as io; 6 import 'dart:io' as io;
7 7
8 import 'package:analyzer/error/error.dart'; 8 import 'package:analyzer/error/error.dart';
9 import 'package:analyzer/file_system/file_system.dart' as file_system; 9 import 'package:analyzer/file_system/file_system.dart' as file_system;
10 import 'package:analyzer/file_system/file_system.dart'; 10 import 'package:analyzer/file_system/file_system.dart';
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 Set<Source> knownSources = context.sources.toSet(); 204 Set<Source> knownSources = context.sources.toSet();
205 Set<Source> sourcesToAnalyze = new Set<Source>(); 205 Set<Source> sourcesToAnalyze = new Set<Source>();
206 ChangeSet changeSet = new ChangeSet(); 206 ChangeSet changeSet = new ChangeSet();
207 for (String sourcePath in options.sourceFiles) { 207 for (String sourcePath in options.sourceFiles) {
208 sourcePath = sourcePath.trim(); 208 sourcePath = sourcePath.trim();
209 209
210 // Collect files for analysis. 210 // Collect files for analysis.
211 // Note that these files will all be analyzed in the same context. 211 // Note that these files will all be analyzed in the same context.
212 // This should be updated when the ContextManager re-work is complete 212 // This should be updated when the ContextManager re-work is complete
213 // (See: https://github.com/dart-lang/sdk/issues/24133) 213 // (See: https://github.com/dart-lang/sdk/issues/24133)
214 Iterable<io.File> files = _collectFiles(sourcePath); 214 Iterable<io.File> files =
215 _collectFiles(sourcePath, context.analysisOptions);
215 if (files.isEmpty) { 216 if (files.isEmpty) {
216 errorSink.writeln('No dart files found at: $sourcePath'); 217 errorSink.writeln('No dart files found at: $sourcePath');
217 io.exitCode = ErrorSeverity.ERROR.ordinal; 218 io.exitCode = ErrorSeverity.ERROR.ordinal;
218 return ErrorSeverity.ERROR; 219 return ErrorSeverity.ERROR;
219 } 220 }
220 221
221 for (io.File file in files) { 222 for (io.File file in files) {
222 Source source = _computeLibrarySource(file.absolute.path); 223 Source source = _computeLibrarySource(file.absolute.path);
223 if (!knownSources.contains(source)) { 224 if (!knownSources.contains(source)) {
224 changeSet.addedSource(source); 225 changeSet.addedSource(source);
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 } 440 }
440 441
441 // Finally files. 442 // Finally files.
442 resolvers.add(new file_system.ResourceUriResolver(resourceProvider)); 443 resolvers.add(new file_system.ResourceUriResolver(resourceProvider));
443 444
444 return new SourceFactory(resolvers, packageInfo.packages); 445 return new SourceFactory(resolvers, packageInfo.packages);
445 } 446 }
446 447
447 /// Collect all analyzable files at [filePath], recursively if it's a 448 /// Collect all analyzable files at [filePath], recursively if it's a
448 /// directory, ignoring links. 449 /// directory, ignoring links.
449 Iterable<io.File> _collectFiles(String filePath) { 450 Iterable<io.File> _collectFiles(String filePath, AnalysisOptions options) {
450 // TODO(devoncarew): This needs to respect analysis_options excludes. 451 List<String> excludedPaths = options.excludePatterns;
452
453 /**
454 * Returns `true` if the given [path] is excluded by [excludedPaths].
455 */
456 bool _isExcluded(String path) {
457 return excludedPaths.any((excludedPath) {
458 if (resourceProvider.absolutePathContext.isWithin(excludedPath, path)) {
459 return true;
460 }
461 return path == excludedPath;
462 });
463 }
464
451 List<io.File> files = <io.File>[]; 465 List<io.File> files = <io.File>[];
452 io.File file = new io.File(filePath); 466 io.File file = new io.File(filePath);
453 if (file.existsSync()) { 467 if (file.existsSync() && !_isExcluded(filePath)) {
454 files.add(file); 468 files.add(file);
455 } else { 469 } else {
456 io.Directory directory = new io.Directory(filePath); 470 io.Directory directory = new io.Directory(filePath);
457 if (directory.existsSync()) { 471 if (directory.existsSync()) {
458 for (io.FileSystemEntity entry 472 for (io.FileSystemEntity entry
459 in directory.listSync(recursive: true, followLinks: false)) { 473 in directory.listSync(recursive: true, followLinks: false)) {
460 String relative = path.relative(entry.path, from: directory.path); 474 String relative = path.relative(entry.path, from: directory.path);
461 if (AnalysisEngine.isDartFileName(entry.path) && 475 if (AnalysisEngine.isDartFileName(entry.path) &&
476 !_isExcluded(relative) &&
462 !_isInHiddenDir(relative)) { 477 !_isInHiddenDir(relative)) {
463 files.add(entry); 478 files.add(entry);
464 } 479 }
465 } 480 }
466 } 481 }
467 } 482 }
468 return files; 483 return files;
469 } 484 }
470 485
471 /// Convert the given [sourcePath] (which may be relative to the current 486 /// Convert the given [sourcePath] (which may be relative to the current
(...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 for (var package in packages) { 947 for (var package in packages) {
933 var packageName = path.basename(package.path); 948 var packageName = path.basename(package.path);
934 var realPath = package.resolveSymbolicLinksSync(); 949 var realPath = package.resolveSymbolicLinksSync();
935 result[packageName] = [ 950 result[packageName] = [
936 PhysicalResourceProvider.INSTANCE.getFolder(realPath) 951 PhysicalResourceProvider.INSTANCE.getFolder(realPath)
937 ]; 952 ];
938 } 953 }
939 return result; 954 return result;
940 } 955 }
941 } 956 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698