don’t bulk fix options-filtered errors
Change-Id: Ifa902ffa1a30a5282f4dae3e1a9487583f9c27ff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166126
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index dc26a16..5bd6ce2 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -63,6 +63,7 @@
import 'package:analysis_server/src/services/linter/lint_names.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/error/error.dart';
+import 'package:analyzer/source/error_processor.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
@@ -356,6 +357,7 @@
/// Use the change [builder] to create fixes for the diagnostics in the
/// library associated with the analysis [result].
Future<void> _fixErrorsInLibrary(ResolvedLibraryResult result) async {
+ var analysisOptions = result.session.analysisContext.analysisOptions;
for (var unitResult in result.units) {
final fixContext = DartFixContextImpl(
workspace,
@@ -364,7 +366,11 @@
(name) => [],
);
for (var error in unitResult.errors) {
- await _fixSingleError(fixContext, unitResult, error);
+ var processor = ErrorProcessor.getProcessor(analysisOptions, error);
+ // Only fix errors not filtered out in analysis options.
+ if (processor == null || processor.severity != null) {
+ await _fixSingleError(fixContext, unitResult, error);
+ }
}
}
}
diff --git a/pkg/analysis_server/test/edit/bulk_fixes_test.dart b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
index c1d8b75..cf1c6c7 100644
--- a/pkg/analysis_server/test/edit/bulk_fixes_test.dart
+++ b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
@@ -27,6 +27,12 @@
expect(editedSource, expectedSource);
}
+ Future<void> assertNoEdits() async {
+ await waitForTasksFinished();
+ var edits = await _getBulkEdits();
+ expect(edits, isEmpty);
+ }
+
@override
void setUp() {
super.setUp();
@@ -52,6 +58,38 @@
''');
}
+ Future<void> test_unnecessaryNew_ignoredInOptions() async {
+ createProject();
+ addAnalysisOptionsFile('''
+analyzer:
+ errors:
+ unnecessary_new: ignore
+linter:
+ rules:
+ - unnecessary_new
+''');
+ addTestFile('''
+class A {}
+A f() => new A();
+''');
+ await assertNoEdits();
+ }
+
+ Future<void> test_unnecessaryNew_ignoredInSource() async {
+ createProject();
+ addAnalysisOptionsFile('''
+linter:
+ rules:
+ - unnecessary_new
+''');
+ addTestFile('''
+class A {}
+//ignore: unnecessary_new
+A f() => new A();
+''');
+ await assertNoEdits();
+ }
+
Future<List<SourceFileEdit>> _getBulkEdits() async {
var request = EditBulkFixesParams([testFile]).toRequest('0');
var response = await waitResponse(request);