Skip to content

Commit f18b5f8

Browse files
committed
fix: allow diagnostics config to disable rules
1 parent 789c8b4 commit f18b5f8

2 files changed

Lines changed: 320 additions & 100 deletions

File tree

‎lib/many_lints.dart‎

Lines changed: 126 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ library;
2020

2121
import 'package:analysis_server_plugin/plugin.dart';
2222
import 'package:analysis_server_plugin/registry.dart';
23+
// ignore: implementation_imports
24+
import 'package:analysis_server_plugin/src/plugin_server.dart';
25+
// ignore: implementation_imports
26+
import 'package:analysis_server_plugin/src/registry.dart' as plugin_registry;
27+
import 'package:analyzer/analysis_rule/analysis_rule.dart';
2328

2429
// Rules
2530
import 'package:many_lints/src/rules/always_remove_listener.dart';
@@ -214,106 +219,106 @@ class ManyLintsPlugin extends Plugin {
214219
@override
215220
void register(PluginRegistry registry) {
216221
// Register warning rules (enabled by default)
217-
registry.registerWarningRule(AlwaysRemoveListener());
218-
registry.registerWarningRule(AvoidBlocPublicMethods());
219-
registry.registerWarningRule(AvoidPassingBlocToBloc());
220-
registry.registerWarningRule(AvoidPassingBuildContextToBlocs());
221-
registry.registerWarningRule(PreferBlocExtensions());
222-
registry.registerWarningRule(PreferImmutableBlocState());
223-
registry.registerWarningRule(PreferMultiBlocProvider());
224-
registry.registerWarningRule(AvoidCascadeAfterIfNull());
225-
registry.registerWarningRule(AvoidCommentedOutCode());
226-
registry.registerWarningRule(AvoidDuplicateCascades());
227-
registry.registerWarningRule(AvoidConstantConditions());
228-
registry.registerWarningRule(AvoidConstantSwitches());
229-
registry.registerWarningRule(AvoidContradictoryExpressions());
230-
registry.registerWarningRule(AvoidAccessingCollectionsByConstantIndex());
231-
registry.registerWarningRule(AvoidGenericsShadowing());
232-
registry.registerWarningRule(AvoidMapKeysContains());
233-
registry.registerWarningRule(AvoidMisusedTestMatchers());
234-
registry.registerWarningRule(AvoidOnlyRethrow());
235-
registry.registerWarningRule(AvoidThrowInCatchBlock());
236-
registry.registerWarningRule(AvoidUnassignedStreamSubscriptions());
237-
registry.registerWarningRule(AvoidFlexibleOutsideFlex());
238-
registry.registerWarningRule(AvoidIncompleteCopyWith());
239-
registry.registerWarningRule(AvoidIncorrectImageOpacity());
240-
registry.registerWarningRule(AvoidUnnecessaryGestureDetector());
241-
registry.registerWarningRule(AvoidUnnecessaryOverrides());
242-
registry.registerWarningRule(AvoidUnnecessaryOverridesInState());
243-
registry.registerWarningRule(AvoidUnnecessarySetstate());
244-
registry.registerWarningRule(AvoidUnnecessaryStatefulWidgets());
245-
registry.registerWarningRule(AvoidMountedInSetstate());
246-
registry.registerWarningRule(AvoidCollectionEqualityChecks());
247-
registry.registerWarningRule(DisposeFields());
248-
registry.registerWarningRule(DisposeProvidedInstances());
249-
registry.registerWarningRule(AvoidCollectionMethodsWithUnrelatedTypes());
250-
registry.registerWarningRule(PreferAbstractFinalStaticClass());
251-
registry.registerWarningRule(PreferCenterOverAlign());
252-
registry.registerWarningRule(PreferAlignOverContainer());
253-
registry.registerWarningRule(PreferExplicitFunctionType());
254-
registry.registerWarningRule(PreferOverridingParentEquality());
255-
registry.registerWarningRule(PreferPaddingOverContainer());
256-
registry.registerWarningRule(PreferReturnAwait());
257-
registry.registerWarningRule(PreferReturningShorthands());
258-
registry.registerWarningRule(PreferShorthandsWithConstructors());
259-
registry.registerWarningRule(PreferShorthandsWithEnums());
260-
registry.registerWarningRule(PreferShorthandsWithStaticFields());
261-
registry.registerWarningRule(PreferSimplerPatternsNullCheck());
262-
registry.registerWarningRule(PreferSwitchExpression());
263-
registry.registerWarningRule(PreferWildcardPattern());
264-
registry.registerWarningRule(PreferTypeOverVar());
265-
registry.registerWarningRule(PreferAnyOrEvery());
266-
registry.registerWarningRule(PreferContains());
267-
registry.registerWarningRule(PreferEnumsByName());
268-
registry.registerWarningRule(PreferExpectLater());
269-
registry.registerWarningRule(PreferIterableOf());
270-
registry.registerWarningRule(AvoidSingleChildInMultiChildWidgets());
271-
registry.registerWarningRule(AvoidUnnecessaryHookWidgets());
272-
registry.registerWarningRule(AvoidConditionalHooks());
273-
registry.registerWarningRule(AvoidUnnecessaryConsumerWidgets());
274-
registry.registerWarningRule(UseBlocSuffix());
275-
registry.registerWarningRule(UseCubitSuffix());
276-
registry.registerWarningRule(UseNotifierSuffix());
277-
registry.registerWarningRule(UseDedicatedMediaQueryMethods());
278-
registry.registerWarningRule(UseGap());
279-
registry.registerWarningRule(PreferSingleWidgetPerFile());
280-
registry.registerWarningRule(PreferSpacing());
281-
registry.registerWarningRule(PreferTestMatchers());
282-
registry.registerWarningRule(ProperSuperCalls());
283-
registry.registerWarningRule(PreferClassDestructuring());
284-
registry.registerWarningRule(UseClosestBuildContext());
285-
registry.registerWarningRule(UseExistingDestructuring());
286-
registry.registerWarningRule(UseExistingVariable());
287-
registry.registerWarningRule(AvoidSingleFieldDestructuring());
288-
registry.registerWarningRule(AvoidBorderAll());
289-
registry.registerWarningRule(AvoidExpandedAsSpacer());
290-
registry.registerWarningRule(AvoidReturningWidgets());
291-
registry.registerWarningRule(AvoidShrinkWrapInLists());
292-
registry.registerWarningRule(AvoidNotifierConstructors());
293-
registry.registerWarningRule(AvoidPublicNotifierProperties());
294-
registry.registerWarningRule(AvoidRefInsideStateDispose());
295-
registry.registerWarningRule(AvoidRefReadInsideBuild());
296-
registry.registerWarningRule(AvoidStateConstructors());
297-
registry.registerWarningRule(PreferAsyncCallback());
298-
registry.registerWarningRule(PreferComputeOverIsolateRun());
299-
registry.registerWarningRule(PreferConstBorderRadius());
300-
registry.registerWarningRule(AvoidWrappingInPadding());
301-
registry.registerWarningRule(PreferConstrainedBoxOverContainer());
302-
registry.registerWarningRule(PreferContainer());
303-
registry.registerWarningRule(PreferCorrectEdgeInsetsConstructor());
304-
registry.registerWarningRule(PreferForLoopInChildren());
305-
registry.registerWarningRule(PreferSingleSetstate());
306-
registry.registerWarningRule(PreferSizedBoxSquare());
307-
registry.registerWarningRule(PreferTextRich());
308-
registry.registerWarningRule(PreferTransformOverContainer());
309-
registry.registerWarningRule(PreferVoidCallback());
310-
registry.registerWarningRule(UseRefAndStateSynchronously());
311-
registry.registerWarningRule(UseRefReadSynchronously());
312-
registry.registerWarningRule(ListAllEquatableFields());
313-
registry.registerWarningRule(PreferEquatableMixin());
314-
registry.registerWarningRule(PreferUseCallback());
315-
registry.registerWarningRule(PreferUsePrefix());
316-
registry.registerWarningRule(UseSliverPrefix());
222+
_registerWarningRule(registry, AlwaysRemoveListener());
223+
_registerWarningRule(registry, AvoidBlocPublicMethods());
224+
_registerWarningRule(registry, AvoidPassingBlocToBloc());
225+
_registerWarningRule(registry, AvoidPassingBuildContextToBlocs());
226+
_registerWarningRule(registry, PreferBlocExtensions());
227+
_registerWarningRule(registry, PreferImmutableBlocState());
228+
_registerWarningRule(registry, PreferMultiBlocProvider());
229+
_registerWarningRule(registry, AvoidCascadeAfterIfNull());
230+
_registerWarningRule(registry, AvoidCommentedOutCode());
231+
_registerWarningRule(registry, AvoidDuplicateCascades());
232+
_registerWarningRule(registry, AvoidConstantConditions());
233+
_registerWarningRule(registry, AvoidConstantSwitches());
234+
_registerWarningRule(registry, AvoidContradictoryExpressions());
235+
_registerWarningRule(registry, AvoidAccessingCollectionsByConstantIndex());
236+
_registerWarningRule(registry, AvoidGenericsShadowing());
237+
_registerWarningRule(registry, AvoidMapKeysContains());
238+
_registerWarningRule(registry, AvoidMisusedTestMatchers());
239+
_registerWarningRule(registry, AvoidOnlyRethrow());
240+
_registerWarningRule(registry, AvoidThrowInCatchBlock());
241+
_registerWarningRule(registry, AvoidUnassignedStreamSubscriptions());
242+
_registerWarningRule(registry, AvoidFlexibleOutsideFlex());
243+
_registerWarningRule(registry, AvoidIncompleteCopyWith());
244+
_registerWarningRule(registry, AvoidIncorrectImageOpacity());
245+
_registerWarningRule(registry, AvoidUnnecessaryGestureDetector());
246+
_registerWarningRule(registry, AvoidUnnecessaryOverrides());
247+
_registerWarningRule(registry, AvoidUnnecessaryOverridesInState());
248+
_registerWarningRule(registry, AvoidUnnecessarySetstate());
249+
_registerWarningRule(registry, AvoidUnnecessaryStatefulWidgets());
250+
_registerWarningRule(registry, AvoidMountedInSetstate());
251+
_registerWarningRule(registry, AvoidCollectionEqualityChecks());
252+
_registerWarningRule(registry, DisposeFields());
253+
_registerWarningRule(registry, DisposeProvidedInstances());
254+
_registerWarningRule(registry, AvoidCollectionMethodsWithUnrelatedTypes());
255+
_registerWarningRule(registry, PreferAbstractFinalStaticClass());
256+
_registerWarningRule(registry, PreferCenterOverAlign());
257+
_registerWarningRule(registry, PreferAlignOverContainer());
258+
_registerWarningRule(registry, PreferExplicitFunctionType());
259+
_registerWarningRule(registry, PreferOverridingParentEquality());
260+
_registerWarningRule(registry, PreferPaddingOverContainer());
261+
_registerWarningRule(registry, PreferReturnAwait());
262+
_registerWarningRule(registry, PreferReturningShorthands());
263+
_registerWarningRule(registry, PreferShorthandsWithConstructors());
264+
_registerWarningRule(registry, PreferShorthandsWithEnums());
265+
_registerWarningRule(registry, PreferShorthandsWithStaticFields());
266+
_registerWarningRule(registry, PreferSimplerPatternsNullCheck());
267+
_registerWarningRule(registry, PreferSwitchExpression());
268+
_registerWarningRule(registry, PreferWildcardPattern());
269+
_registerWarningRule(registry, PreferTypeOverVar());
270+
_registerWarningRule(registry, PreferAnyOrEvery());
271+
_registerWarningRule(registry, PreferContains());
272+
_registerWarningRule(registry, PreferEnumsByName());
273+
_registerWarningRule(registry, PreferExpectLater());
274+
_registerWarningRule(registry, PreferIterableOf());
275+
_registerWarningRule(registry, AvoidSingleChildInMultiChildWidgets());
276+
_registerWarningRule(registry, AvoidUnnecessaryHookWidgets());
277+
_registerWarningRule(registry, AvoidConditionalHooks());
278+
_registerWarningRule(registry, AvoidUnnecessaryConsumerWidgets());
279+
_registerWarningRule(registry, UseBlocSuffix());
280+
_registerWarningRule(registry, UseCubitSuffix());
281+
_registerWarningRule(registry, UseNotifierSuffix());
282+
_registerWarningRule(registry, UseDedicatedMediaQueryMethods());
283+
_registerWarningRule(registry, UseGap());
284+
_registerWarningRule(registry, PreferSingleWidgetPerFile());
285+
_registerWarningRule(registry, PreferSpacing());
286+
_registerWarningRule(registry, PreferTestMatchers());
287+
_registerWarningRule(registry, ProperSuperCalls());
288+
_registerWarningRule(registry, PreferClassDestructuring());
289+
_registerWarningRule(registry, UseClosestBuildContext());
290+
_registerWarningRule(registry, UseExistingDestructuring());
291+
_registerWarningRule(registry, UseExistingVariable());
292+
_registerWarningRule(registry, AvoidSingleFieldDestructuring());
293+
_registerWarningRule(registry, AvoidBorderAll());
294+
_registerWarningRule(registry, AvoidExpandedAsSpacer());
295+
_registerWarningRule(registry, AvoidReturningWidgets());
296+
_registerWarningRule(registry, AvoidShrinkWrapInLists());
297+
_registerWarningRule(registry, AvoidNotifierConstructors());
298+
_registerWarningRule(registry, AvoidPublicNotifierProperties());
299+
_registerWarningRule(registry, AvoidRefInsideStateDispose());
300+
_registerWarningRule(registry, AvoidRefReadInsideBuild());
301+
_registerWarningRule(registry, AvoidStateConstructors());
302+
_registerWarningRule(registry, PreferAsyncCallback());
303+
_registerWarningRule(registry, PreferComputeOverIsolateRun());
304+
_registerWarningRule(registry, PreferConstBorderRadius());
305+
_registerWarningRule(registry, AvoidWrappingInPadding());
306+
_registerWarningRule(registry, PreferConstrainedBoxOverContainer());
307+
_registerWarningRule(registry, PreferContainer());
308+
_registerWarningRule(registry, PreferCorrectEdgeInsetsConstructor());
309+
_registerWarningRule(registry, PreferForLoopInChildren());
310+
_registerWarningRule(registry, PreferSingleSetstate());
311+
_registerWarningRule(registry, PreferSizedBoxSquare());
312+
_registerWarningRule(registry, PreferTextRich());
313+
_registerWarningRule(registry, PreferTransformOverContainer());
314+
_registerWarningRule(registry, PreferVoidCallback());
315+
_registerWarningRule(registry, UseRefAndStateSynchronously());
316+
_registerWarningRule(registry, UseRefReadSynchronously());
317+
_registerWarningRule(registry, ListAllEquatableFields());
318+
_registerWarningRule(registry, PreferEquatableMixin());
319+
_registerWarningRule(registry, PreferUseCallback());
320+
_registerWarningRule(registry, PreferUsePrefix());
321+
_registerWarningRule(registry, UseSliverPrefix());
317322

318323
// Register fixes for rules
319324
registry.registerFixForRule(
@@ -592,3 +597,24 @@ class ManyLintsPlugin extends Plugin {
592597
registry.registerAssist(ConvertIterableMapToCollectionFor.new);
593598
}
594599
}
600+
601+
void _registerWarningRule(PluginRegistry registry, AbstractAnalysisRule rule) {
602+
final isNamedRegistry = identical(
603+
PluginServer.registries['many_lints'],
604+
registry,
605+
);
606+
if (!isNamedRegistry) {
607+
registry.registerWarningRule(rule);
608+
return;
609+
}
610+
611+
if (registry is plugin_registry.PluginRegistryImpl) {
612+
registry.warningRules[rule.name.toLowerCase()] = rule;
613+
for (final code in rule.diagnosticCodes) {
614+
registry.codeMap[code.lowerCaseUniqueName] = code;
615+
}
616+
return;
617+
}
618+
619+
registry.registerWarningRule(rule);
620+
}

0 commit comments

Comments
 (0)