123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- # 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
- analyzer:
- exclude:
- - lib/app/app.locator.dart
- - lib/app/app.router.dart
- - lib/models/patch.g.dart
- - lib/models/patched_application.g.dart
- linter:
- rules:
- - always_declare_return_types
- - require_trailing_commas
- - always_put_control_body_on_new_line
- - always_use_package_imports # we do this commonly
- - annotate_overrides
- - avoid_bool_literals_in_conditional_expressions
- - avoid_double_and_int_checks
- - avoid_empty_else
- - avoid_equals_and_hash_code_on_mutable_classes
- - avoid_escaping_inner_quotes
- - avoid_field_initializers_in_const_classes
- - avoid_function_literals_in_foreach_calls
- - avoid_implementing_value_types
- - avoid_init_to_null
- - avoid_js_rounded_ints
- - avoid_null_checks_in_equality_operators
- - avoid_print
- - avoid_redundant_argument_values
- - avoid_relative_lib_imports
- - avoid_renaming_method_parameters
- - avoid_return_types_on_setters
- - avoid_returning_null_for_void
- - avoid_setters_without_getters
- - avoid_shadowing_type_parameters
- - avoid_single_cascade_in_expression_statements
- - avoid_type_to_string
- - avoid_types_as_parameter_names
- - avoid_unnecessary_containers
- - avoid_void_async
- - avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
- - await_only_futures
- - camel_case_extensions
- - camel_case_types
- - cancel_subscriptions
- - cast_nullable_to_non_nullable
- - close_sinks # not reliable enough
- - control_flow_in_finally
- - curly_braces_in_flow_control_structures
- - depend_on_referenced_packages
- - deprecated_consistency
- - directives_ordering
- - empty_catches
- - empty_constructor_bodies
- - empty_statements
- - eol_at_end_of_file
- - exhaustive_cases
- - file_names
- - flutter_style_todos
- - hash_and_equals
- - implementation_imports
- - collection_methods_unrelated_type
- - leading_newlines_in_multiline_strings
- - library_prefixes
- - library_private_types_in_public_api
- - missing_whitespace_between_adjacent_strings
- - no_adjacent_strings_in_list
- - no_duplicate_case_values
- - no_logic_in_create_state
- - non_constant_identifier_names
- - noop_primitive_operations
- - null_check_on_nullable_type_parameter
- - null_closures
- - overridden_fields
- - package_api_docs
- - package_names
- - prefer_adjacent_string_concatenation
- - prefer_asserts_in_initializer_lists
- - prefer_collection_literals
- - prefer_conditional_assignment
- - prefer_const_constructors
- - prefer_const_constructors_in_immutables
- - prefer_const_declarations
- - prefer_const_literals_to_create_immutables
- - prefer_contains
- - prefer_final_fields
- - prefer_final_in_for_each
- - prefer_final_locals
- - prefer_for_elements_to_map_fromIterable
- - prefer_foreach
- - prefer_function_declarations_over_variables
- - prefer_generic_function_type_aliases
- - prefer_if_elements_to_conditional_expressions
- - prefer_if_null_operators
- - prefer_initializing_formals
- - prefer_inlined_adds
- - prefer_interpolation_to_compose_strings
- - prefer_is_empty
- - prefer_is_not_empty
- - prefer_is_not_operator
- - prefer_iterable_whereType
- - prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
- - prefer_null_aware_operators
- - prefer_single_quotes
- - prefer_spread_collections
- - prefer_typing_uninitialized_variables
- - provide_deprecation_message
- - recursive_getters
- - sized_box_for_whitespace
- - slash_for_doc_comments
- - sort_child_properties_last
- - sort_constructors_first
- - sort_pub_dependencies
- - sort_unnamed_constructors_first
- - test_types_in_equals
- - throw_in_finally
- - tighten_type_of_initializing_formals
- - type_init_formals
- - unnecessary_brace_in_string_interps
- - unnecessary_const
- - unnecessary_getters_setters
- - unnecessary_new
- - unnecessary_null_aware_assignments
- - unnecessary_null_checks
- - unnecessary_null_in_if_null_operators
- - unnecessary_nullable_for_final_variable_declarations
- - unnecessary_overrides
- - unnecessary_parenthesis
- - unnecessary_statements
- - unnecessary_string_escapes
- - unnecessary_string_interpolations
- - unnecessary_this
- - unrelated_type_equality_checks
- - unsafe_html
- - use_build_context_synchronously
- - use_full_hex_values_for_flutter_colors
- - use_function_type_syntax_for_parameters
- - use_if_null_to_convert_nulls_to_bools
- - use_is_even_rather_than_modulo
- - use_key_in_widget_constructors
- - use_late_for_private_fields_and_variables
- - use_named_constants
- - use_raw_strings
- - use_rethrow_when_possible
- - use_setters_to_change_properties
- - use_test_throws_matchers
- - valid_regexps
- - void_checks
|