-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathanalysis_options.yaml
306 lines (303 loc) · 11.6 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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
#https://github.com/flutter/flutter/blob/master/analysis_options.yaml
# Specify analysis options.
#
# Until there are meta linter rules, each desired lint must be explicitly enabled.
# See: https://github.com/dart-lang/linter/issues/288
#
# For a list of lints, see: http://dart-lang.github.io/linter/lints/
# See the configuration guide for more
# https://github.com/dart-lang/sdk/tree/master/pkg/analyzer#configuring-the-analyzer
#
# There are other similar analysis options files in the flutter repos,
# which should be kept in sync with this file:
#
# - analysis_options.yaml (this file)
# - packages/flutter/lib/analysis_options_user.yaml
# - https://github.com/flutter/plugins/blob/master/analysis_options.yaml
# - https://github.com/flutter/engine/blob/master/analysis_options.yaml
#
# This file contains the analysis options used by Flutter tools, such as IntelliJ,
# Android Studio, and the `flutter analyze` command.
include: package:flutter_lints/flutter.yaml
analyzer:
plugins:
- custom_lint
strong-mode:
implicit-casts: false
implicit-dynamic: false
errors:
# treat missing required parameters as a warning (not a hint)
missing_required_param: warning
# treat missing returns as a warning (not a hint)
missing_return: warning
# allow having TODOs in the code
todo: ignore
# allow self-reference to deprecated members (we do this because otherwise we have
# to annotate every member in every test, assert, etc, when we deprecate something)
deprecated_member_use_from_same_package: ignore
# Ignore analyzer hints for updating pubspecs when using Future or
# Stream and not importing dart:async
# Please see https://github.com/flutter/flutter/pull/24528 for details.
sdk_version_async_exported_from_core: ignore
exclude:
- "bin/cache/**"
# the following two are relative to the stocks example and the flutter package respectively
# see https://github.com/dart-lang/sdk/issues/28463
- "lib/i18n/messages_*.dart"
- "lib/src/http/**"
- "lib/generated/**"
linter:
rules:
# these rules are documented on and in the same order as
# the Dart Lint rules page to make maintenance easier
# https://github.com/dart-lang/linter/blob/master/example/all.yaml
always_declare_return_types: true
always_put_control_body_on_new_line: true
# we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
always_put_required_named_parameters_first: no
always_require_non_null_named_parameters: true
# we do this commonly
always_use_package_imports: no
annotate_overrides: true
# conflicts with always_specify_types
avoid_annotating_with_dynamic: no
# required for implicit-casts: true
avoid_as: no
avoid_bool_literals_in_conditional_expressions: true
# we do this commonly
avoid_catches_without_on_clauses: no
# we do this commonly
avoid_catching_errors: no
avoid_classes_with_only_static_members: true
# only useful when targeting JS runtime
avoid_double_and_int_checks: no
avoid_empty_else: true
avoid_equals_and_hash_code_on_mutable_classes: true
# not yet tested
avoid_escaping_inner_quotes: no
avoid_field_initializers_in_const_classes: true
avoid_function_literals_in_foreach_calls: true
# not yet tested
avoid_implementing_value_types: no
avoid_init_to_null: true
# only useful when targeting JS runtime
avoid_js_rounded_ints: no
avoid_null_checks_in_equality_operators: true
# not yet tested
avoid_positional_boolean_parameters: no
# not yet tested
avoid_print: no
# we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
avoid_private_typedef_functions: no
# not yet tested
avoid_redundant_argument_values: no
avoid_relative_lib_imports: true
avoid_renaming_method_parameters: true
avoid_return_types_on_setters: true
# there are plenty of valid reasons to return null
avoid_returning_null: no
# not yet tested
avoid_returning_null_for_future: no
avoid_returning_null_for_void: true
# there are plenty of valid reasons to return this
avoid_returning_this: no
# not yet tested
avoid_setters_without_getters: no
avoid_shadowing_type_parameters: true
avoid_single_cascade_in_expression_statements: true
avoid_slow_async_io: true
# we do this commonly
avoid_type_to_string: no
avoid_types_as_parameter_names: true
# not yet tested
avoid_unnecessary_containers: no
avoid_unused_constructor_parameters: true
avoid_void_async: true
# not yet tested
avoid_web_libraries_in_flutter: no
await_only_futures: true
camel_case_extensions: true
camel_case_types: true
cancel_subscriptions: true
# not yet tested
cascade_invocations: no
cast_nullable_to_non_nullable: true
# not reliable enough
close_sinks: no
# blocked on https://github.com/flutter/flutter/issues/20765
comment_references: no
# needs an opt-out https://github.com/dart-lang/linter/issues/204
constant_identifier_names: no
control_flow_in_finally: true
# not required by flutter style
curly_braces_in_flow_control_structures: no
# not yet tested
diagnostic_describe_all_properties: no
directives_ordering: true
# we do this commonly
do_not_use_environment: no
empty_catches: true
empty_constructor_bodies: true
empty_statements: true
exhaustive_cases: true
# not yet tested
file_names: no
flutter_style_todos: true
hash_and_equals: true
implementation_imports: true
# too many false positives: https://github.com/dart-lang/linter/issues/811
invariant_booleans: no
iterable_contains_unrelated_type: true
# not required by flutter style
join_return_with_assignment: no
leading_newlines_in_multiline_strings: true
library_names: true
library_prefixes: true
# not required by flutter style
lines_longer_than_80_chars: no
list_remove_unrelated_type: true
# too many false positives: https://github.com/dart-lang/sdk/issues/34181
literal_only_boolean_expressions: no
# not yet tested
missing_whitespace_between_adjacent_strings: no
no_adjacent_strings_in_list: true
# too many false positives
no_default_cases: no
no_duplicate_case_values: true
no_logic_in_create_state: true
# ok in tests; we enable this only in packages/
no_runtimeType_toString: no
non_constant_identifier_names: true
null_check_on_nullable_type_parameter: true
# not required by flutter style
null_closures: no
# Incompatible with: avoid_types_on_closure_parameters, omit_local_variable_types.
always_specify_types: no
# opposite of always_specify_types
omit_local_variable_types: yes
# conflicts with always_specify_types
avoid_types_on_closure_parameters: yes
# too many false positives
one_member_abstracts: no
# https://github.com/flutter/flutter/issues/5792
only_throw_errors: no
overridden_fields: true
package_api_docs: true
# non conforming packages in sdk
package_names: no
package_prefixed_library_names: true
# we do this commonly
parameter_assignments: no
prefer_adjacent_string_concatenation: true
prefer_asserts_in_initializer_lists: true
# not required by flutter style
prefer_asserts_with_message: no
prefer_collection_literals: true
prefer_conditional_assignment: true
prefer_const_constructors: true
prefer_const_constructors_in_immutables: true
prefer_const_declarations: true
prefer_const_literals_to_create_immutables: true
# far too many false positives
prefer_constructors_over_static_methods: no
prefer_contains: true
# opposite of prefer_single_quotes
prefer_double_quotes: no
prefer_equal_for_default_values: true
# conflicts with https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#consider-using--for-short-functions-and-methods
prefer_expression_function_bodies: no
prefer_final_fields: true
prefer_final_in_for_each: true
prefer_final_locals: true
prefer_for_elements_to_map_fromIterable: true
prefer_foreach: true
# not yet tested
prefer_function_declarations_over_variables: no
prefer_generic_function_type_aliases: true
prefer_if_elements_to_conditional_expressions: true
prefer_if_null_operators: true
prefer_initializing_formals: true
prefer_inlined_adds: true
# not yet tested
prefer_int_literals: no
# not yet tested
prefer_interpolation_to_compose_strings: no
prefer_is_empty: true
prefer_is_not_empty: true
prefer_is_not_operator: true
prefer_iterable_whereType: true
# https://github.com/dart-lang/language/issues/32
prefer_mixin: no
# disable until NNBD, see https://github.com/flutter/flutter/pull/32711#issuecomment-492930932
prefer_null_aware_operators: no
# not yet tested
prefer_relative_imports: no
prefer_single_quotes: true
prefer_spread_collections: true
prefer_typing_uninitialized_variables: true
prefer_void_to_null: true
# not yet tested
provide_deprecation_message: no
# enabled on a case-by-case basis; see e.g. packages/analysis_options.yaml
public_member_api_docs: no
recursive_getters: true
# not yet tested
sized_box_for_whitespace: no
slash_for_doc_comments: true
# not yet tested
sort_child_properties_last: no
sort_constructors_first: true
# prevents separating pinned transitive dependencies
sort_pub_dependencies: no
sort_unnamed_constructors_first: true
test_types_in_equals: true
throw_in_finally: true
tighten_type_of_initializing_formals: true
# subset of always_specify_types
type_annotate_public_apis: no
type_init_formals: true
# too many false positives
unawaited_futures: no
# not yet tested
unnecessary_await_in_return: no
unnecessary_brace_in_string_interps: true
unnecessary_const: true
# conflicts with prefer_final_locals
unnecessary_final: no
unnecessary_getters_setters: true
# has false positives: https://github.com/dart-lang/linter/issues/498
unnecessary_lambdas: no
unnecessary_new: true
unnecessary_null_aware_assignments: true
# not yet tested
unnecessary_null_checks: no
unnecessary_null_in_if_null_operators: true
unnecessary_nullable_for_final_variable_declarations: true
unnecessary_overrides: true
unnecessary_parenthesis: true
# not yet tested
unnecessary_raw_strings: no
unnecessary_statements: true
unnecessary_string_escapes: true
unnecessary_string_interpolations: true
unnecessary_this: true
unrelated_type_equality_checks: true
# not yet tested
unsafe_html: no
use_full_hex_values_for_flutter_colors: true
# not yet tested
use_function_type_syntax_for_parameters: no
use_is_even_rather_than_modulo: true
# not yet tested
use_key_in_widget_constructors: no
use_late_for_private_fields_and_variables: true
use_raw_strings: true
use_rethrow_when_possible: true
# not yet tested
use_setters_to_change_properties: no
# has false positives: https://github.com/dart-lang/sdk/issues/34182
use_string_buffers: no
# has false positives, so we prefer to catch this by code-review
use_to_and_as_if_applicable: no
valid_regexps: true
void_checks: true