register method

  1. @override
void register(
  1. PluginRegistry registry
)
override

Registers analysis rules, quick fixes, and assists.

Implementation

@override
void register(PluginRegistry registry) {
  final analysisLoader = AnalysisOptionsLoader();

  final lintRules = [
    AvoidDebugPrintInReleaseRule(),
    AvoidDuplicateCodeRule(analysisOptionsLoader: analysisLoader),
    AvoidFinalWithGetterRule(),
    AvoidGlobalStateRule(),
    AvoidLateKeywordRule(analysisOptionsLoader: analysisLoader),
    AvoidNonNullAssertionRule(analysisOptionsLoader: analysisLoader),
    AvoidReturningWidgetsRule(analysisOptionsLoader: analysisLoader),
    AvoidSimilarNamesRule(),
    AvoidUnnecessaryReturnVariableRule(),
    AvoidUnnecessarySetStateRule(),
    AvoidUnnecessaryTypeAssertionsRule(),
    AvoidUnrelatedTypeAssertionsRule(),
    AvoidUnusedParametersRule(analysisOptionsLoader: analysisLoader),
    AvoidUsingApiRule(analysisOptionsLoader: analysisLoader),
    CyclomaticComplexityRule(analysisOptionsLoader: analysisLoader),
    DoubleLiteralFormatRule(),
    FeatureEnvyRule(analysisOptionsLoader: analysisLoader),
    FunctionLinesOfCodeRule(analysisOptionsLoader: analysisLoader),
    MemberOrderingRule(analysisOptionsLoader: analysisLoader),
    NamedParametersOrderingRule(analysisOptionsLoader: analysisLoader),
    NewlineBeforeReturnRule(),
    NoEmptyBlockRule(analysisOptionsLoader: analysisLoader),
    NoEqualThenElseRule(),
    NoMagicNumberRule(analysisOptionsLoader: analysisLoader),
    NumberOfParametersRule(analysisOptionsLoader: analysisLoader),
    PreferConditionalExpressionsRule(analysisOptionsLoader: analysisLoader),
    PreferEarlyReturnRule(),
    PreferFirstRule(),
    PreferLastRule(),
    PreferMatchFileNameRule(analysisOptionsLoader: analysisLoader),
    ProperSuperCallsRule(),
    UseDescriptiveNamesForTypeParametersRule(
      analysisOptionsLoader: analysisLoader,
    ),
    UseNearestContextRule(),
  ];

  for (final lintRule in lintRules) {
    final ruleToRegister = switch (lintRule) {
      MultiAnalysisRule() => ProxyMultiAnalysisRule(lintRule, analysisLoader),
      AnalysisRule() => ProxyAnalysisRule(lintRule, analysisLoader),
    };

    registry.registerWarningRule(ruleToRegister);

    if (lintRule is RuleWithFixes) {
      for (final entry in (lintRule as RuleWithFixes).fixesForCodes) {
        registry.registerFixForRule(entry.key, entry.value);
      }
    }
  }
}