-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathplugin.dart
More file actions
95 lines (90 loc) · 4.17 KB
/
plugin.dart
File metadata and controls
95 lines (90 loc) · 4.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import 'package:analysis_server_plugin/plugin.dart';
import 'package:analysis_server_plugin/registry.dart';
import 'package:leancode_lint/config.dart';
import 'package:leancode_lint/src/assists/convert_iterable_map_to_collection_for.dart';
import 'package:leancode_lint/src/assists/convert_positional_to_named_formal.dart';
import 'package:leancode_lint/src/assists/convert_record_into_nominal_type.dart';
import 'package:leancode_lint/src/lints/add_cubit_suffix_for_cubits.dart';
import 'package:leancode_lint/src/lints/avoid_conditional_hooks.dart';
import 'package:leancode_lint/src/lints/avoid_single_child_in_multi_child_widget.dart';
import 'package:leancode_lint/src/lints/bloc_related_class_naming.dart';
import 'package:leancode_lint/src/lints/catch_parameter_names.dart';
import 'package:leancode_lint/src/lints/constructor_parameters_and_fields_should_have_the_same_order.dart';
import 'package:leancode_lint/src/lints/hook_widget_does_not_use_hooks.dart';
import 'package:leancode_lint/src/lints/never_discard_build_context.dart';
import 'package:leancode_lint/src/lints/prefer_equatable_mixin.dart';
import 'package:leancode_lint/src/lints/prefix_widgets_returning_slivers.dart';
import 'package:leancode_lint/src/lints/start_comments_with_space.dart';
import 'package:leancode_lint/src/lints/use_align.dart';
import 'package:leancode_lint/src/lints/use_dedicated_media_query_methods.dart';
import 'package:leancode_lint/src/lints/use_design_system_item.dart';
import 'package:leancode_lint/src/lints/use_padding.dart';
export 'package:leancode_lint/config.dart';
/// Analyzer plugin implementation for `leancode_lint`.
///
/// Consumers that want to configure the lints programmatically should import
/// `package:leancode_lint/plugin.dart` and instantiate [LeanCodeLintPlugin]
/// from their own plugin package.
final class LeanCodeLintPlugin extends Plugin {
LeanCodeLintPlugin({this.name = 'leancode_lint', this.config = const .new()});
@override
final String name;
final LeanCodeLintConfig config;
@override
void register(PluginRegistry registry) {
UseDesignSystemItem.fromConfig(
config,
).forEach(registry.registerWarningRule);
registry
..registerWarningRule(StartCommentsWithSpace())
..registerWarningRule(
PrefixWidgetsReturningSlivers(
applicationPrefix: config.applicationPrefix,
),
)
..registerFixForRule(
StartCommentsWithSpace.code,
AddStartingSpaceToComment.new,
)
..registerWarningRule(AddCubitSuffixForYourCubits())
..registerWarningRule(
BlocRelatedClassNaming(config: config.blocRelatedClassNaming),
)
..registerWarningRule(
CatchParameterNames(config: config.catchParameterNames),
)
..registerWarningRule(AvoidConditionalHooks())
..registerWarningRule(HookWidgetDoesNotUseHooks())
..registerFixForRule(
HookWidgetDoesNotUseHooks.code,
ConvertHookWidgetToStatelessWidget.new,
)
..registerWarningRule(NeverDiscardBuildContext())
..registerFixForRule(
NeverDiscardBuildContext.code,
RenameDiscardedBuildContextFix.new,
)
// TODO: disabled by default until stabilized. Add documentation.
..registerLintRule(ConstructorParametersAndFieldsShouldHaveTheSameOrder())
..registerWarningRule(AvoidSingleChildInMultiChildWidgets())
..registerWarningRule(UseAlign())
..registerFixForRule(UseAlign.code, UseAlignFix.new)
..registerWarningRule(UsePadding())
..registerFixForRule(UsePadding.code, UsePaddingFix.new)
..registerWarningRule(UseDedicatedMediaQueryMethods())
..registerFixForRule(
UseDedicatedMediaQueryMethods.code,
ReplaceMediaQueryOfWithDedicatedMethodFix.new,
)
..registerWarningRule(PreferEquatableMixin())
..registerFixForRule(
PreferEquatableMixin.code,
ConvertToEquatableMixin.new,
)
// TODO: uncomment when `prefer_center_over_align` is migrated
// ..registerWarningRule(PreferCenterOverAlign())
..registerAssist(ConvertRecordIntoNominalType.new)
..registerAssist(ConvertPositionalToNamedFormal.new)
..registerAssist(ConvertIterableMapToCollectionFor.new);
}
}