-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathanalysis_options.yaml
232 lines (227 loc) · 10.8 KB
/
analysis_options.yaml
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
# You might want to exclude auto-generated files from dart analysis
analyzer:
exclude:
- '**.freezed.dart'
- '**.g.dart'
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
library_prefixes: false
constant_identifier_names: false
always_declare_return_types: true
# TODO(gguij): Turn always_put_control_body_on_new_line to true
always_put_control_body_on_new_line: false
use_string_buffers: false
# # - always_put_required_named_parameters_first # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
always_require_non_null_named_parameters: true
always_specify_types: false
always_use_package_imports: true
annotate_overrides: true
# # - avoid_annotating_with_dynamic # conflicts with always_specify_types
avoid_bool_literals_in_conditional_expressions: true
# - avoid_catches_without_on_clauses # we do this commonly
# - avoid_catching_errors # we do this commonly
# avoid_classes_with_only_static_members: false # <---Routes and AppColors classes are exceptions
# - avoid_double_and_int_checks # only useful when targeting JS runtime
# avoid_dynamic_calls: false # <--this is a good one to check in future
avoid_empty_else: true
avoid_equals_and_hash_code_on_mutable_classes: true
avoid_escaping_inner_quotes: true
avoid_field_initializers_in_const_classes: false
avoid_function_literals_in_foreach_calls: true
# # - avoid_implementing_value_types # not yet tested
avoid_init_to_null: true
# # - avoid_js_rounded_ints # only useful when targeting JS runtime
avoid_null_checks_in_equality_operators: true
avoid_positional_boolean_parameters: false
# # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
# avoid_redundant_argument_values: true
avoid_relative_lib_imports: true
avoid_renaming_method_parameters: true
avoid_return_types_on_setters: true
# # - avoid_returning_null # there are plenty of valid reasons to return null
# # - avoid_returning_null_for_future # not yet tested
# TODO(gguij): Turn avoid_returning_null_for_void Review this
# avoid_returning_null_for_void: true
# # - avoid_returning_this # there are plenty of valid reasons to return this
avoid_setters_without_getters: true
avoid_shadowing_type_parameters: true
avoid_single_cascade_in_expression_statements: true
avoid_slow_async_io: true
avoid_type_to_string: true
avoid_types_as_parameter_names: true
# # - avoid_types_on_closure_parameters # conflicts with always_specify_types
avoid_unnecessary_containers: true
avoid_unused_constructor_parameters: true
# TODO(gguij): Turn avoid_void_async Review this
# avoid_void_async: true
# # - avoid_web_libraries_in_flutter # not yet tested
await_only_futures: true
camel_case_extensions: true
camel_case_types: true
cancel_subscriptions: true
#cascade_invocations: true
cast_nullable_to_non_nullable: true
# # - close_sinks # not reliable enough
# # - comment_references # blocked on https://github.com/flutter/flutter/issues/20765
control_flow_in_finally: true
# # - curly_braces_in_flow_control_structures # not required by flutter style
depend_on_referenced_packages: false
# # - diagnostic_describe_all_properties # not yet tested
directives_ordering: true
# # - do_not_use_environment # we do this commonly
empty_catches: true
empty_constructor_bodies: true
empty_statements: true
exhaustive_cases: true
file_names: true
flutter_style_todos: true
hash_and_equals: true
implementation_imports: true
# - invariant_booleans # too many false positives: https://github.com/dart-lang/linter/issues/811
iterable_contains_unrelated_type: true
# - join_return_with_assignment # not required by flutter style
leading_newlines_in_multiline_strings: true
library_names: true
#- lines_longer_than_80_chars # not required by flutter style
list_remove_unrelated_type: true
# - literal_only_boolean_expressions # too many false positives: https://github.com/dart-lang/sdk/issues/34181
missing_whitespace_between_adjacent_strings: true
no_adjacent_strings_in_list: true
# - no_default_cases # too many false positives
no_duplicate_case_values: true
no_logic_in_create_state: true
# # - no_runtimeType_toString # ok in tests; we enable this only in packages/
non_constant_identifier_names: true
null_check_on_nullable_type_parameter: true
# - null_closures # not required by flutter style
omit_local_variable_types: false
# - one_member_abstracts # too many false positives
# - only_throw_errors # https://github.com/flutter/flutter/issues/5792
overridden_fields: true
package_api_docs: true
package_names: true
package_prefixed_library_names: true
# - parameter_assignments # we do this commonly
prefer_adjacent_string_concatenation: true
prefer_asserts_in_initializer_lists: true
# - prefer_asserts_with_message # not required by flutter style
prefer_collection_literals: true
prefer_conditional_assignment: true
prefer_const_constructors: true
prefer_const_constructors_in_immutables: true
prefer_const_declarations: false
prefer_const_literals_to_create_immutables: false
prefer_constructors_over_static_methods: true
prefer_contains: true
# - prefer_double_quotes # opposite of prefer_single_quotes
prefer_equal_for_default_values: true
# - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
prefer_final_fields: true
prefer_final_in_for_each: true
prefer_final_locals: true
prefer_for_elements_to_map_fromIterable: true
prefer_foreach: true
prefer_function_declarations_over_variables: true
prefer_generic_function_type_aliases: true
# TODO(gguij): Ask the team about this one. I am on the fence prefer_if_elements_to_conditional_expressions
prefer_if_elements_to_conditional_expressions: false
prefer_if_null_operators: true
prefer_initializing_formals: true
prefer_inlined_adds: true
# # - prefer_int_literals # not yet tested
prefer_interpolation_to_compose_strings: true
prefer_is_empty: true
prefer_is_not_empty: true
prefer_is_not_operator: true
prefer_iterable_whereType: true
# # - prefer_mixin # https://github.com/dart-lang/language/issues/32
prefer_null_aware_operators: true
# # - prefer_relative_imports # not yet tested
prefer_spread_collections: true
prefer_typing_uninitialized_variables: true
prefer_void_to_null: true
provide_deprecation_message: true
# # - public_member_api_docs # enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
recursive_getters: true
require_trailing_commas: false
sized_box_for_whitespace: false
sized_box_shrink_expand: true
slash_for_doc_comments: true
sort_child_properties_last: true
# sort_constructors_first: false
sort_pub_dependencies: false
# sort_unnamed_constructors_first: true
test_types_in_equals: true
throw_in_finally: true
tighten_type_of_initializing_formals: true
# # - type_annotate_public_apis # subset of always_specify_types
type_init_formals: true
# TODO(gguij): Turn unawaited_futures and unnecessary_await_in_return Review this
unawaited_futures: true
unnecessary_await_in_return: true
unnecessary_brace_in_string_interps: true
unnecessary_const: true
# # - unnecessary_final # conflicts with prefer_final_locals
unnecessary_getters_setters: true
# # - unnecessary_lambdas # has false positives: https://github.com/dart-lang/linter/issues/498
unnecessary_new: true
unnecessary_null_aware_assignments: true
unnecessary_null_checks: true
unnecessary_null_in_if_null_operators: true
unnecessary_nullable_for_final_variable_declarations: true
unnecessary_overrides: true
unnecessary_parenthesis: true
# # - unnecessary_raw_strings # not yet tested
unnecessary_statements: true
unnecessary_string_escapes: true
unnecessary_string_interpolations: true
unnecessary_this: true
unrelated_type_equality_checks: true
# # - unsafe_html # not yet tested
use_colored_box: true
use_decorated_box: true
use_full_hex_values_for_flutter_colors: true
use_function_type_syntax_for_parameters: true
use_is_even_rather_than_modulo: true
use_key_in_widget_constructors: true
use_late_for_private_fields_and_variables: true
use_raw_strings: true
use_rethrow_when_possible: true
# # - use_setters_to_change_properties # not yet tested
# # - use_string_buffers # has false positives: https://github.com/dart-lang/sdk/issues/34182
use_super_parameters: true
use_test_throws_matchers: true
# # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
valid_regexps: true
void_checks: true
# New Lints to analyze
no_leading_underscores_for_local_identifiers: false
use_build_context_synchronously: false
library_private_types_in_public_api: false
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# Disabling invalid_annotation_target warning and warning in generates files
invalid_annotation_target: ignore
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options