-
Notifications
You must be signed in to change notification settings - Fork 0
/
analysis_options.yaml
512 lines (493 loc) · 16 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
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
# https://dart.dev/guides/language/analysis-options
#include: package:lints/recommended.yaml
analyzer:
plugins:
- dart_code_metrics
exclude:
# Codegen
- 'lib/**.gen.dart'
- 'lib/**.g.dart'
- 'lib/**.freezed.dart'
- 'lib/**.config.dart'
- 'lib/**.select.dart'
- 'lib/**.pg.dart'
- 'lib/**.gr.dart'
- 'lib/**.pb.dart'
- 'lib/**.pbenum.dart'
- 'lib/**.pbjson.dart'
- 'lib/**.pbgrpc.dart'
# Build
- 'build/**'
# Tests
- 'test/**.mocks.dart'
- '.test_coverage.dart'
# Assets
- 'assets/**'
# Localization
- 'lib/core/gen/**'
# etc
- 'lib/generated_plugin_registrant.dart'
- 'lib/app/constant/*_icons.dart'
- 'lib/app/constant/*_strings.dart'
- 'lib/core/constant/*_icons.dart'
- 'lib/core/constant/*_strings.dart'
- 'lib/core/widget/painter/painter.dart'
- 'lib/core/widget/form/cupertino_timer_picker_short.dart'
- 'tool/google_localizer/**'
- 'tool/setup_clone/**'
- 'tool/grind.dart'
- 'linux/**'
- 'packages/**'
- 'resources/**'
- 'vendors/**'
- 'windows/**'
- 'android/**'
- 'component_templates/**'
- 'example/**'
- 'ios/**'
strong-mode:
implicit-casts: false
implicit-dynamic: true
language:
strict-casts: true
strict-inference: true
strict-raw-types: true
errors:
# Built-in rules
body_might_complete_normally_nullable: ignore
strict_raw_type: ignore #
inference_failure_on_function_invocation: ignore #
inference_failure_on_untyped_parameter: ignore #
# Info
todo: info
directives_ordering: info
#always_declare_return_types: info
# Warning
unsafe_html: warning
no_logic_in_create_state: warning
empty_catches: warning
avoid_empty_else: warning
avoid_returning_null_for_future: warning
avoid_type_to_string: warning
empty_statements: warning
hash_and_equals: warning
iterable_contains_unrelated_type: warning
list_remove_unrelated_type: warning
# Error
avoid_dynamic_calls: error
avoid_relative_lib_imports: error
prefer_relative_imports: error
avoid_slow_async_io: error
avoid_types_as_parameter_names: error
cancel_subscriptions: error
close_sinks: error
valid_regexps: error
always_require_non_null_named_parameters: error
# Style Rules
always_declare_return_types: error
always_put_control_body_on_new_line: warning
avoid_equals_and_hash_code_on_mutable_classes: error
avoid_field_initializers_in_const_classes: warning
avoid_function_literals_in_foreach_calls: warning
avoid_returning_this: warning
avoid_unused_constructor_parameters: warning
avoid_void_async: error
await_only_futures: warning
cast_nullable_to_non_nullable: warning
conditional_uri_does_not_exist: warning
curly_braces_in_flow_control_structures: warning
no_leading_underscores_for_local_identifiers: warning
null_closures: error
only_throw_errors: warning
parameter_assignments: error
prefer_asserts_with_message: warning
prefer_const_constructors: error
prefer_const_constructors_in_immutables: warning
prefer_const_declarations: warning
prefer_const_literals_to_create_immutables: warning
prefer_expression_function_bodies: warning
prefer_final_fields: error
prefer_final_in_for_each: error
prefer_final_locals: error
prefer_function_declarations_over_variables: warning
prefer_generic_function_type_aliases: warning
prefer_initializing_formals: warning
prefer_typing_uninitialized_variables: error
provide_deprecation_message: warning
recursive_getters: warning
tighten_type_of_initializing_formals: warning
type_annotate_public_apis: error
unawaited_futures: warning
unnecessary_await_in_return: warning
unnecessary_this: warning
use_full_hex_values_for_flutter_colors: warning
use_function_type_syntax_for_parameters: warning
use_string_buffers: warning
use_enums: warning
# Pub Rules
depend_on_referenced_packages: error
secure_pubspec_urls: warning
linter:
rules:
# Public packages
public_member_api_docs: false
lines_longer_than_80_chars: false
# Flutter
use_key_in_widget_constructors: true
use_full_hex_values_for_flutter_colors: true
flutter_style_todos: false
sized_box_for_whitespace: true
sized_box_shrink_expand: true
use_colored_box: true
use_decorated_box: true
avoid_unnecessary_containers: true
# Disabled
prefer_relative_imports: false
avoid_annotating_with_dynamic: false
unnecessary_final: false
always_specify_types: false
avoid_redundant_argument_values: false # TODO
comment_references: true # Unused because https://github.com/dart-lang/sdk/issues/36974
prefer_double_quotes: false
sort_constructors_first: false
sort_unnamed_constructors_first: false
always_put_control_body_on_new_line: false
sort_pub_dependencies: false
do_not_use_environment: false
diagnostic_describe_all_properties: false
prefer_final_parameters: false
avoid_types_on_closure_parameters: false
always_use_package_imports: false
always_put_required_named_parameters_first: false
prefer_constructors_over_static_methods: false
prefer_foreach: false #
# Enabled
avoid_web_libraries_in_flutter: true
depend_on_referenced_packages: true
use_named_constants: true
use_enums: true
use_is_even_rather_than_modulo: true
unnecessary_await_in_return: true
library_private_types_in_public_api: true
tighten_type_of_initializing_formals: true
exhaustive_cases: true
avoid_bool_literals_in_conditional_expressions: true
avoid_double_and_int_checks: true
avoid_escaping_inner_quotes: true
avoid_field_initializers_in_const_classes: true
avoid_implementing_value_types: true
avoid_js_rounded_ints: true
avoid_print: true
avoid_renaming_method_parameters: true
avoid_returning_null_for_future: true
avoid_returning_null_for_void: true
avoid_single_cascade_in_expression_statements: true
avoid_slow_async_io: true
avoid_unused_constructor_parameters: true
avoid_void_async: true
await_only_futures: true
cancel_subscriptions: true
cascade_invocations: true
close_sinks: true
control_flow_in_finally: true
empty_statements: true
iterable_contains_unrelated_type: true
join_return_with_assignment: true
leading_newlines_in_multiline_strings: true
list_remove_unrelated_type: true
literal_only_boolean_expressions: true
missing_whitespace_between_adjacent_strings: true
no_adjacent_strings_in_list: true
no_logic_in_create_state: true
no_runtimeType_toString: true
only_throw_errors: true
overridden_fields: true
package_names: true
package_prefixed_library_names: true
parameter_assignments: true
prefer_asserts_in_initializer_lists: true
prefer_asserts_with_message: true
prefer_const_constructors: true
prefer_const_constructors_in_immutables: true
prefer_const_declarations: true
prefer_const_literals_to_create_immutables: true
prefer_expression_function_bodies: true
prefer_final_in_for_each: true
prefer_final_locals: true
prefer_if_elements_to_conditional_expressions: true
prefer_inlined_adds: true
prefer_int_literals: true
prefer_is_not_operator: true
prefer_mixin: true
prefer_null_aware_operators: true
prefer_typing_uninitialized_variables: true
prefer_void_to_null: true
provide_deprecation_message: true
sort_child_properties_last: true
test_types_in_equals: true
throw_in_finally: true
unnecessary_null_aware_assignments: true
unnecessary_overrides: true
unnecessary_parenthesis: true
unnecessary_raw_strings: true
unnecessary_statements: true
unnecessary_string_escapes: true
unnecessary_string_interpolations: true
unsafe_html: true
use_raw_strings: true
use_string_buffers: true
valid_regexps: true
void_checks: true
always_declare_return_types: true
always_require_non_null_named_parameters: true
annotate_overrides: true
avoid_empty_else: true
avoid_init_to_null: true
avoid_null_checks_in_equality_operators: true
avoid_relative_lib_imports: true
avoid_return_types_on_setters: true
avoid_shadowing_type_parameters: true
avoid_types_as_parameter_names: true
camel_case_extensions: true
curly_braces_in_flow_control_structures: true
empty_catches: true
empty_constructor_bodies: true
library_names: true
library_prefixes: true
no_duplicate_case_values: true
null_closures: true
omit_local_variable_types: true
prefer_adjacent_string_concatenation: true
prefer_collection_literals: true
prefer_conditional_assignment: true
prefer_contains: true
prefer_equal_for_default_values: true
prefer_final_fields: true
prefer_for_elements_to_map_fromIterable: true
prefer_generic_function_type_aliases: true
prefer_if_null_operators: true
prefer_is_empty: true
prefer_is_not_empty: true
prefer_iterable_whereType: true
prefer_single_quotes: true
prefer_spread_collections: true
recursive_getters: true
slash_for_doc_comments: true
type_init_formals: true
unawaited_futures: true
unnecessary_const: true
unnecessary_new: true
unnecessary_null_in_if_null_operators: true
unnecessary_this: true
unrelated_type_equality_checks: true
use_function_type_syntax_for_parameters: true
use_rethrow_when_possible: true
camel_case_types: true
file_names: true
non_constant_identifier_names: true
constant_identifier_names: true
directives_ordering: true
package_api_docs: true
implementation_imports: true
prefer_interpolation_to_compose_strings: true
unnecessary_brace_in_string_interps: true
avoid_function_literals_in_foreach_calls: true
prefer_function_declarations_over_variables: true
unnecessary_lambdas: true
unnecessary_getters_setters: true
prefer_initializing_formals: true
avoid_catches_without_on_clauses: true
avoid_catching_errors: true
use_to_and_as_if_applicable: true
one_member_abstracts: true
avoid_classes_with_only_static_members: false
use_setters_to_change_properties: true
avoid_setters_without_getters: true
avoid_returning_null: true
avoid_returning_this: true
type_annotate_public_apis: true
avoid_private_typedef_functions: true
avoid_positional_boolean_parameters: true
hash_and_equals: true
avoid_equals_and_hash_code_on_mutable_classes: true
avoid_dynamic_calls: true
avoid_multiple_declarations_per_line: true
avoid_type_to_string: true
deprecated_consistency: true
eol_at_end_of_file: true
noop_primitive_operations: true
prefer_null_aware_method_calls: true
unnecessary_constructor_name: true
use_if_null_to_convert_nulls_to_bools: true
use_test_throws_matchers: true
unnecessary_late: true
conditional_uri_does_not_exist: true
#avoid_final_parameters: true
no_leading_underscores_for_library_prefixes: true
no_leading_underscores_for_local_identifiers: true
secure_pubspec_urls: true
# Experimental
use_late_for_private_fields_and_variables: true
use_build_context_synchronously: true
use_super_parameters: true
unnecessary_nullable_for_final_variable_declarations: true
unnecessary_null_checks: true
require_trailing_commas: true
null_check_on_nullable_type_parameter: true
cast_nullable_to_non_nullable: true
# Deprecated
#avoid_as (deprecated)
#prefer_bool_in_asserts (deprecated)
#super_goes_last (deprecated)
dart_code_metrics:
#anti-patterns:
# todo - long-method
# todo - long-parameter-list
metrics:
- cyclomatic-complexity: 20
- halstead-volume: 150
- lines-of-code: 100
- maintainability-index: 50
- maximum-nesting-level: 5
- number-of-methods: 10
- number-of-parameters: 4
- source-lines-of-code: 50
- technical-debt:
threshold: 1
todo-cost: 161
ignore-cost: 320
ignore-for-file-cost: 396
as-dynamic-cost: 322
deprecated-annotations-cost: 37
file-nullsafety-migration-cost: 41
unit-type: "USD"
- weight-of-class: 0.33
metrics-exclude:
- test/**
rules:
- avoid-substring
- prefer-define-hero-tag
#- arguments-ordering:
# child-last: true
#- avoid-banned-imports
- avoid-cascade-after-if-null
- avoid-collection-methods-with-unrelated-types
- avoid-double-slash-imports
- avoid-duplicate-exports
- avoid-dynamic:
severity: error
- avoid-global-state:
severity: error
#- avoid-ignoring-return-values
#- avoid-late-keyword
- avoid-missing-enum-constant-in-map:
severity: error
- avoid-nested-conditional-expressions:
acceptable-level: 3 #
#- avoid-non-ascii-symbols
#- avoid-non-null-assertion #
#- avoid-passing-async-when-sync-expected #
- avoid-redundant-async
- avoid-throw-in-catch-block
- avoid-top-level-members-in-tests
- avoid-unnecessary-conditionals
- avoid-unnecessary-type-assertions:
severity: style
- avoid-unnecessary-type-casts:
severity: style
- avoid-unrelated-type-assertions:
severity: style
- avoid-unused-parameters
#- ban-name
- binary-expression-operand-order
- double-literal-format
#- format-comment #
#- list-all-equatable-fields
#- member-ordering-extended:
# #alphabetize: true
# order:
# - public-fields
# - private-fields
# - public-getters-setters
# - private-getters-setters
# - constructors
# - public-methods
# - private-methods
- missing-test-assertion
#- newline-before-return
- no-boolean-literal-compare
#- no-empty-block #
#- no-equal-arguments: #
# ignored-parameters:
# - height
# - width
- no-equal-then-else
#- no-magic-number #
- no-object-declaration
- prefer-async-await
#- prefer-commenting-analyzer-ignores
- prefer-conditional-expressions
- prefer-correct-identifier-length:
exceptions: [ 'a', 'b', 'c', 'd', 'e', 'f', 'i', 'j', 'k', 'n', 'r', 'x', 'y', 'z', 'id', 'db', 'h', 'v', 'js' ]
max-identifier-length: 30
min-identifier-length: 3
- prefer-correct-test-file-name
- prefer-correct-type-name:
excluded: [ 'n' ]
min-length: 3
max-length: 40
- prefer-enums-by-name
- prefer-first
- prefer-immediate-return
- prefer-iterable-of
- prefer-last
- prefer-match-file-name:
exclude:
- lib/tool/**.dart
- lib/**_web.dart
- lib/**_io.dart
- lib/**_shured.dart
- lib/**_stub.dart
- lib/**_bloc.dart
- lib/**_page.dart
- lib/**_scope.dart
- lib/**_client.dart
- lib/**/router.gr.dart
- lib/**_converter.dart
- lib/**runner*.dart
- lib/**_dialog.dart
- prefer-moving-to-variable:
allowed-duplicated-chains: 3
- prefer-static-class:
ignore-annotations:
- run
ignore-private: true
ignore-names:
- run #- (.*)Provider
- prefer-trailing-comma
- tag-name:
var-names: [_kTag]
strip-prefix: _
strip-postfix: State
# Flutter specific
- always-remove-listener
- avoid-border-all
- avoid-expanded-as-spacer
- avoid-returning-widgets
- avoid-shrink-wrap-in-lists
- avoid-unnecessary-setstate
- avoid-wrapping-in-padding
- check-for-equals-in-render-object-setters
- consistent-update-render-object
- prefer-const-border-radius
- prefer-correct-edge-insets-constructor
- prefer-extracting-callbacks:
allowed-line-count: 8 #
- prefer-single-widget-per-file:
ignore-private-widgets: true
- prefer-using-list-view
- use-setstate-synchronously
# Intl specific
- prefer-intl-name
- prefer-provide-intl-description
- provide-correct-intl-args