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

Side by Side Diff: pkg/analyzer/lib/src/lint/linter.dart

Issue 2992463003: Update linter engine to use driver (linter#743). (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 | « pkg/analyzer/lib/src/lint/analysis.dart ('k') | pkg/analyzer/lib/src/lint/project.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 import 'dart:async';
5 import 'dart:io'; 6 import 'dart:io';
6 7
7 import 'package:analyzer/analyzer.dart'; 8 import 'package:analyzer/analyzer.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 9 import 'package:analyzer/dart/ast/token.dart';
10 import 'package:analyzer/file_system/file_system.dart' as file_system;
9 import 'package:analyzer/src/generated/engine.dart' 11 import 'package:analyzer/src/generated/engine.dart'
10 show AnalysisErrorInfo, AnalysisErrorInfoImpl, Logger; 12 show AnalysisErrorInfo, AnalysisErrorInfoImpl, Logger;
11 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException; 13 import 'package:analyzer/src/generated/java_engine.dart' show CaughtException;
12 import 'package:analyzer/src/generated/source.dart' show LineInfo; 14 import 'package:analyzer/src/generated/source.dart' show LineInfo;
13 import 'package:analyzer/src/generated/source_io.dart'; 15 import 'package:analyzer/src/generated/source_io.dart';
14 import 'package:analyzer/src/lint/analysis.dart'; 16 import 'package:analyzer/src/lint/analysis.dart';
15 import 'package:analyzer/src/lint/config.dart'; 17 import 'package:analyzer/src/lint/config.dart';
16 import 'package:analyzer/src/lint/io.dart'; 18 import 'package:analyzer/src/lint/io.dart';
17 import 'package:analyzer/src/lint/project.dart'; 19 import 'package:analyzer/src/lint/project.dart';
18 import 'package:analyzer/src/lint/pub.dart'; 20 import 'package:analyzer/src/lint/pub.dart';
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 final LinterOptions options; 55 final LinterOptions options;
54 final Reporter reporter; 56 final Reporter reporter;
55 57
56 /// The total number of sources that were analyzed. Only valid after 58 /// The total number of sources that were analyzed. Only valid after
57 /// [lintFiles] has been called. 59 /// [lintFiles] has been called.
58 int numSourcesAnalyzed; 60 int numSourcesAnalyzed;
59 61
60 /// Creates a new linter. 62 /// Creates a new linter.
61 DartLinter(this.options, {this.reporter: const PrintingReporter()}); 63 DartLinter(this.options, {this.reporter: const PrintingReporter()});
62 64
63 Iterable<AnalysisErrorInfo> lintFiles(List<File> files) { 65 Future<Iterable<AnalysisErrorInfo>> lintFiles(List<File> files) async {
64 List<AnalysisErrorInfo> errors = []; 66 List<AnalysisErrorInfo> errors = [];
65 var analysisDriver = new LintDriver(options); 67 final lintDriver = new LintDriver(options);
66 errors.addAll(analysisDriver.analyze(files.where((f) => isDartFile(f)))); 68 errors.addAll(await lintDriver.analyze(files.where((f) => isDartFile(f))));
67 numSourcesAnalyzed = analysisDriver.numSourcesAnalyzed; 69 numSourcesAnalyzed = lintDriver.numSourcesAnalyzed;
68 files.where((f) => isPubspecFile(f)).forEach((p) { 70 files.where((f) => isPubspecFile(f)).forEach((p) {
69 numSourcesAnalyzed++; 71 numSourcesAnalyzed++;
70 return errors.addAll(_lintPubspecFile(p)); 72 return errors.addAll(_lintPubspecFile(p));
71 }); 73 });
72 return errors; 74 return errors;
73 } 75 }
74 76
75 Iterable<AnalysisErrorInfo> lintPubspecSource( 77 Iterable<AnalysisErrorInfo> lintPubspecSource(
76 {String contents, String sourcePath}) { 78 {String contents, String sourcePath}) {
77 var results = <AnalysisErrorInfo>[]; 79 var results = <AnalysisErrorInfo>[];
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 188
187 @override 189 @override
188 String toString() => 190 String toString() =>
189 message == null ? "LinterException" : "LinterException: $message"; 191 message == null ? "LinterException" : "LinterException: $message";
190 } 192 }
191 193
192 /// Linter options. 194 /// Linter options.
193 class LinterOptions extends DriverOptions { 195 class LinterOptions extends DriverOptions {
194 Iterable<LintRule> enabledLints; 196 Iterable<LintRule> enabledLints;
195 LintFilter filter; 197 LintFilter filter;
198 file_system.ResourceProvider resourceProvider;
196 LinterOptions([this.enabledLints]) { 199 LinterOptions([this.enabledLints]) {
197 enabledLints ??= Registry.ruleRegistry; 200 enabledLints ??= Registry.ruleRegistry;
198 } 201 }
199 void configure(LintConfig config) { 202 void configure(LintConfig config) {
200 // TODO(pquitslund): revisit these default-to-on semantics. 203 // TODO(pquitslund): revisit these default-to-on semantics.
201 enabledLints = Registry.ruleRegistry.where((LintRule rule) => 204 enabledLints = Registry.ruleRegistry.where((LintRule rule) =>
202 !config.ruleConfigs.any((rc) => rc.disables(rule.name))); 205 !config.ruleConfigs.any((rc) => rc.disables(rule.name)));
203 filter = new FileGlobFilter(config.fileIncludes, config.fileExcludes); 206 filter = new FileGlobFilter(config.fileIncludes, config.fileExcludes);
204 } 207 }
205 } 208 }
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 final LinterOptions options; 357 final LinterOptions options;
355 @override 358 @override
356 final Reporter reporter; 359 final Reporter reporter;
357 360
358 @override 361 @override
359 int numSourcesAnalyzed; 362 int numSourcesAnalyzed;
360 363
361 SourceLinter(this.options, {this.reporter: const PrintingReporter()}); 364 SourceLinter(this.options, {this.reporter: const PrintingReporter()});
362 365
363 @override 366 @override
364 Iterable<AnalysisErrorInfo> lintFiles(List<File> files) { 367 Future<Iterable<AnalysisErrorInfo>> lintFiles(List<File> files) async {
365 List<AnalysisErrorInfo> errors = []; 368 List<AnalysisErrorInfo> errors = [];
366 var analysisDriver = new LintDriver(options); 369 final lintDriver = new LintDriver(options);
367 errors.addAll(analysisDriver.analyze(files.where((f) => isDartFile(f)))); 370 errors.addAll(await lintDriver.analyze(files.where((f) => isDartFile(f))));
368 numSourcesAnalyzed = analysisDriver.numSourcesAnalyzed; 371 numSourcesAnalyzed = lintDriver.numSourcesAnalyzed;
369 files.where((f) => isPubspecFile(f)).forEach((p) { 372 files.where((f) => isPubspecFile(f)).forEach((p) {
370 numSourcesAnalyzed++; 373 numSourcesAnalyzed++;
371 return errors.addAll(_lintPubspecFile(p)); 374 return errors.addAll(_lintPubspecFile(p));
372 }); 375 });
373 return errors; 376 return errors;
374 } 377 }
375 378
376 @override 379 @override
377 Iterable<AnalysisErrorInfo> lintPubspecSource( 380 Iterable<AnalysisErrorInfo> lintPubspecSource(
378 {String contents, String sourcePath}) { 381 {String contents, String sourcePath}) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 } 423 }
421 424
422 class _LintCode extends LintCode { 425 class _LintCode extends LintCode {
423 static final registry = <String, LintCode>{}; 426 static final registry = <String, LintCode>{};
424 427
425 factory _LintCode(String name, String message) => registry.putIfAbsent( 428 factory _LintCode(String name, String message) => registry.putIfAbsent(
426 name + message, () => new _LintCode._(name, message)); 429 name + message, () => new _LintCode._(name, message));
427 430
428 _LintCode._(String name, String message) : super(name, message); 431 _LintCode._(String name, String message) : super(name, message);
429 } 432 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/lint/analysis.dart ('k') | pkg/analyzer/lib/src/lint/project.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698