register method
Registers analysis rules, quick fixes, and assists.
Implementation
@override
void register(PluginRegistry registry) {
registry.registerWarningRule(ReduceReturnTypeRule());
registry.registerFixForRule(ReduceReturnTypeRule.code, ChangeToSyncReturnType.new);
registry.registerFixForRule(ReduceReturnTypeRule.code, ChangeToAsyncReturnType.new);
registry.registerWarningRule(BeforeReturnTypeRule());
registry.registerFixForRule(BeforeReturnTypeRule.code, ChangeToSyncReturnType.new);
registry.registerFixForRule(BeforeReturnTypeRule.code, ChangeToAsyncReturnType.new);
registry.registerWarningRule(WrapReduceReturnTypeRule());
registry.registerFixForRule(
WrapReduceReturnTypeRule.code,
ChangeToAsyncReturnType.new,
);
registry.registerWarningRule(ReduceWithoutAwaitRule());
registry.registerFixForRule(ReduceWithoutAwaitRule.code, AddAwaitMicrotask.new);
registry.registerFixForRule(ReduceWithoutAwaitRule.code, MakeReduceSync.new);
registry.registerWarningRule(DispatchSyncAsyncActionRule());
registry.registerFixForRule(
DispatchSyncAsyncActionRule.code,
ReplaceWithDispatch.new,
);
registry.registerFixForRule(
DispatchSyncAsyncActionRule.code,
ReplaceWithDispatchAndWait.new,
);
registry.registerWarningRule(IncompatibleMixinsRule());
registry.registerWarningRule(PollingWithCaveatMixinRule());
registry.registerWarningRule(WaitFailInvalidArgumentRule());
registry.registerFixForRule(WaitFailInvalidArgumentRule.code, UseActionType.new);
registry.registerWarningRule(WaitFailNeverMatchesRule());
registry.registerFixForRule(WaitFailNeverMatchesRule.code, UseActionType.new);
registry.registerWarningRule(AvoidContextStateRule());
registry.registerFixForRule(AvoidContextStateRule.code, UseContextSelect.new);
registry.registerFixForRule(AvoidContextStateRule.code, UseContextRead.new);
registry.registerFixForRule(AvoidContextStateRule.code, WrapItemInBuilder.new);
registry.registerFixForRule(AvoidContextStateRule.code, UseBuilderContext.new);
registry.registerWarningRule(ContextStateInInitStateRule());
registry.registerFixForRule(ContextStateInInitStateRule.code, UseContextRead.new);
registry.registerWarningRule(ContextInDisposeRule());
registry.registerWarningRule(ContextInSelectorRule());
registry.registerFixForRule(ContextInSelectorRule.code, UseSelectorParameter.new);
registry.registerWarningRule(SelectOutsideBuildRule());
registry.registerFixForRule(SelectOutsideBuildRule.code, ReplaceSelectWithRead.new);
registry.registerFixForRule(SelectOutsideBuildRule.code, UseBuilderContext.new);
registry.registerFixForRule(SelectOutsideBuildRule.code, WrapItemInBuilder.new);
registry.registerWarningRule(VmFieldNotInEqualsRule());
registry.registerFixForRule(VmFieldNotInEqualsRule.code, AddFieldToVmEquals.new);
registry.registerFixForRule(VmFieldNotInEqualsRule.code, AddAllFieldsToVmEquals.new);
registry.registerWarningRule(CopyMissingFieldRule());
registry.registerFixForRule(CopyMissingFieldRule.code, AddMissingFieldsToCopy.new);
registry.registerWarningRule(StateClassMissingEqualityRule());
registry.registerWarningRule(EqualityMissingFieldRule());
registry.registerFixForRule(
EqualityMissingFieldRule.code,
AddMissingFieldsToEquality.new,
);
registry.registerWarningRule(EqualityMissingInheritedFieldRule());
registry.registerFixForRule(
EqualityMissingInheritedFieldRule.code,
AddInheritedFieldsToEquality.new,
);
registry.registerWarningRule(EquatablePropsMissingFieldRule());
registry.registerFixForRule(
EquatablePropsMissingFieldRule.code,
AddMissingFieldsToProps.new,
);
registry.registerWarningRule(StateClassMustBeImmutableRule());
registry.registerLintRule(ActionNameEndsWithActionRule());
registry.registerFixForRule(
ActionNameEndsWithActionRule.code,
({required context}) =>
RenameAction(ActionNameStyle.endsWithAction, context: context),
);
registry.registerLintRule(ActionNameEndsWithUnderscoreActionRule());
registry.registerFixForRule(
ActionNameEndsWithUnderscoreActionRule.code,
({required context}) =>
RenameAction(ActionNameStyle.endsWithUnderscoreAction, context: context),
);
registry.registerLintRule(ActionNameWithoutActionRule());
registry.registerFixForRule(
ActionNameWithoutActionRule.code,
({required context}) =>
RenameAction(ActionNameStyle.withoutAction, context: context),
);
registry.registerLintRule(ActionFileNameEndsWithActionRule());
registry.registerLintRule(ActionFileNameStartsWithActionRule());
registry.registerWarningRule(ExtendBaseActionRule());
registry.registerWarningRule(DependenciesCastInActionRule());
// One fix for each base action of the package, up to `UseBaseClass.maxFixes`.
for (var i = 0; i < UseBaseClass.maxFixes; i++) {
registry.registerFixForRule(
ExtendBaseActionRule.code,
({required context}) => UseBaseClass(i, context: context),
);
}
registry.registerWarningRule(PreferReturnNullRule());
registry.registerFixForRule(PreferReturnNullRule.code, ReturnNull.new);
registry.registerWarningRule(StaleStateAfterAwaitRule());
registry.registerFixForRule(StaleStateAfterAwaitRule.code, UseCurrentState.new);
registry.registerWarningRule(AfterThrowsRule());
registry.registerWarningRule(MissingSuperInMixinOverrideRule());
registry.registerLintRule(AvoidAbortDispatchRule());
registry.registerLintRule(AvoidWrapReduceRule());
registry.registerWarningRule(UserExceptionOutsideActionRule());
registry.registerFixForRule(
UserExceptionOutsideActionRule.code,
DispatchUserExceptionAction.new,
);
registry.registerWarningRule(UserExceptionWithoutCauseRule());
registry.registerFixForRule(UserExceptionWithoutCauseRule.code, AddCause.new);
registry.registerWarningRule(DispatchInGlobalErrorObserverRule());
registry.registerWarningRule(ThrowInGlobalErrorObserverRule());
registry.registerFixForRule(
ThrowInGlobalErrorObserverRule.code,
ReturnInsteadOfThrow.new,
);
registry.registerLintRule(GlobalErrorObserverWithoutEnvironmentRule());
registry.registerWarningRule(RetryWithoutNonReentrantRule());
registry.registerFixForRule(RetryWithoutNonReentrantRule.code, AddNonReentrant.new);
registry.registerWarningRule(DispatchAndWaitUnlimitedRetriesRule());
registry.registerWarningRule(SequentialDeadlockRule());
registry.registerFixForRule(
SequentialDeadlockRule.code,
UseDispatchWithoutWaiting.new,
);
registry.registerWarningRule(SequentialBeforeSuperNotFirstRule());
registry.registerWarningRule(SequentialAfterSuperNotInFinallyRule());
registry.registerWarningRule(PollingActionRestartsPollingRule());
registry.registerFixForRule(PollingActionRestartsPollingRule.code, UsePollOnce.new);
registry.registerWarningRule(ServerPushAssociatedActionRule());
registry.registerWarningRule(InternetSimulationInProductionRule());
registry.registerLintRule(MissingKeyParamsRule());
registry.registerWarningRule(PreferImmutableCollectionsRule());
registry.registerFixForRule(
PreferImmutableCollectionsRule.code,
UseImmutableCollection.new,
);
registry.registerWarningRule(NonStateObjectInStateRule());
registry.registerLintRule(RouteInStateRule());
registry.registerWarningRule(MissingInitialStateRule());
registry.registerWarningRule(EventNameSuffixRule());
registry.registerFixForRule(EventNameSuffixRule.code, RenameEvent.new);
registry.registerWarningRule(EventNotSpentInitiallyRule());
registry.registerFixForRule(EventNotSpentInitiallyRule.code, UseSpentEvent.new);
registry.registerWarningRule(EventPersistedRule());
registry.registerWarningRule(ImplementsPersistorRule());
registry.registerFixForRule(ImplementsPersistorRule.code, ExtendPersistor.new);
registry.registerWarningRule(ThrowInReadStateRule());
registry.registerFixForRule(ThrowInReadStateRule.code, AddErrorAndReturnNull.new);
registry.registerWarningRule(InitialStateNotSavedRule());
registry.registerFixForRule(InitialStateNotSavedRule.code, AddSaveInitialState.new);
registry.registerWarningRule(DispatchInBuildRule());
// Opposite styles. The first is enabled by default.
registry.registerWarningRule(PreferDispatchWithoutContextRule());
registry.registerFixForRule(
PreferDispatchWithoutContextRule.code,
RemoveContextFromDispatch.new,
);
registry.registerLintRule(PreferDispatchWithContextRule());
registry.registerFixForRule(
PreferDispatchWithContextRule.code,
AddContextToDispatch.new,
);
registry.registerWarningRule(ContextReadInBuildRule());
registry.registerFixForRule(ContextReadInBuildRule.code, UseContextSelect.new);
registry.registerWarningRule(RefreshIndicatorWithoutWaitRule());
registry.registerFixForRule(
RefreshIndicatorWithoutWaitRule.code,
WaitForDispatch.new,
);
registry.registerWarningRule(ThenOnDispatchAndWaitRule());
registry.registerFixForRule(ThenOnDispatchAndWaitRule.code, UseThenIfCompletedOk.new);
registry.registerWarningRule(TimerOrStreamNotInPropsRule());
registry.registerLintRule(ActionWithoutToStringRule());
registry.registerFixForRule(ActionWithoutToStringRule.code, AddActionToString.new);
registry.registerWarningRule(UserExceptionDialogPlacementRule());
registry.registerWarningRule(NavigatorKeyNotSetRule());
registry.registerFixForRule(NavigatorKeyNotSetRule.code, AddNavigatorKey.new);
registry.registerWarningRule(DebugObserverInReleaseRule());
registry.registerWarningRule(ExpectWithoutWaitingRule());
registry.registerFixForRule(
ExpectWithoutWaitingRule.code,
UseAwaitDispatchAndWait.new,
);
registry.registerWarningRule(VmCreateFromReusedFactoryRule());
registry.registerWarningRule(ActionStatusDetailsInProductionRule());
}