-
Notifications
You must be signed in to change notification settings - Fork 53
/
analysis_options.yaml
160 lines (155 loc) · 5.14 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
# 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 four similar analysis options files in the flutter repos:
# - 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.
#
# The flutter/plugins repo contains a copy of this file, which should be kept
# in sync with this file.
include: package:flutter_lints/flutter.yaml
analyzer:
language:
# To be enforced:
strict-inference: true
strict-raw-types: true
# To be enforced:
# strong-mode:
# 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
deprecated_member_use: ignore
missing_enum_constant_in_switch: error
plugins:
- dart_code_metrics
exclude:
- lib/**/*.g.dart
- test/**/*.g.dart
- lib/generated/intl/*
- test/mocks.dart
- test/**/*.mocks.dart
- test/persistance/database/migration/generated/*
- test/firebase/firebase_mock.dart
- lib/generated/l10n.dart
- test/persistance/database/migration/generated/*
- lib/generated_plugin_registrant.dart
dart_code_metrics:
metrics:
cyclomatic-complexity: 20
lines-of-executable-code: 500
number-of-arguments: 6
maximum-nesting: 5
metrics-exclude:
- test/**
- linux/**
rules:
- newline-before-return
- no-boolean-literal-compare
- prefer-trailing-comma
- no-equal-then-else
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
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_use_package_imports
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_implementing_value_types
- avoid_js_rounded_ints
- avoid_multiple_declarations_per_line
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_slow_async_io
- avoid_type_to_string
- avoid_unused_constructor_parameters
- avoid_void_async
- cancel_subscriptions
- cascade_invocations
- cast_nullable_to_non_nullable
- close_sinks
- comment_references
- deprecated_consistency
- directives_ordering
- do_not_use_environment
- eol_at_end_of_file
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- lines_longer_than_80_chars
- literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_leading_underscores_for_library_prefixes
- no_leading_underscores_for_local_identifiers
- no_runtimeType_toString
- null_check_on_nullable_type_parameter
- one_member_abstracts
- only_throw_errors
- package_api_docs
- parameter_assignments
- prefer_asserts_in_initializer_lists
- prefer_constructors_over_static_methods
- prefer_final_in_for_each
- prefer_final_locals
- prefer_final_parameters
- prefer_foreach
- prefer_if_elements_to_conditional_expressions
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_mixin
- prefer_null_aware_method_calls
- prefer_single_quotes
- require_trailing_commas
- sized_box_shrink_expand
- sort_child_properties_last
- sort_constructors_first
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_constructor_name
- unnecessary_lambdas
- unnecessary_null_aware_assignments
- unnecessary_null_checks
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_parenthesis
- unnecessary_raw_strings
- unnecessary_statements
- unsafe_html
- use_decorated_box
- use_if_null_to_convert_nulls_to_bools
- use_is_even_rather_than_modulo
- use_late_for_private_fields_and_variables
- use_named_constants
- use_raw_strings
- use_setters_to_change_properties
- use_string_buffers
- use_test_throws_matchers
- use_to_and_as_if_applicable