include: package:flutter_lints/flutter.yaml

analyzer:
  language:
    # strict-casts: true # Over 300 issues; mostly parsing JSON
    # Enabling strict-inference requires adding type annotations to a bunch of
    # silly locations; namely `Future.delayed`. Does not seem pragmatic right
    # now.
    # strict-inference: true # 34 issues
    # strict-raw-types: true # Over 100 issues.
  errors:
    # treat missing required parameters as a warning (not a hint)
    missing_required_param: warning
  exclude:
    - build/**
    - '**.freezed.dart'
    - flutter-sdk/

linter:
  rules:
    # Added on top of the flutter/flutter lints:
    - prefer_generic_function_type_aliases

    # From flutter/flutter:
    # 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 # we prefer having parameters in the same order as fields https://github.com/flutter/flutter/issues/10219
    # - always_specify_types
    - annotate_overrides
    # - avoid_annotating_with_dynamic # conflicts with always_specify_types
    # - avoid_as # we use 'as' in this codebase
    # - avoid_bool_literals_in_conditional_expressions # not yet tested
    # - avoid_catches_without_on_clauses # we do this commonly
    # - avoid_catching_errors # we do this commonly
    - avoid_classes_with_only_static_members
    # - avoid_double_and_int_checks # only useful when targeting JS runtime
    - avoid_empty_else
    - avoid_dynamic_calls
    - avoid_field_initializers_in_const_classes
    - avoid_function_literals_in_foreach_calls
    - avoid_init_to_null
    # - avoid_js_rounded_ints # only useful when targeting JS runtime
    - avoid_null_checks_in_equality_operators
    # - avoid_positional_boolean_parameters # not yet tested
    - avoid_print
    # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
    - avoid_redundant_argument_values
    - avoid_relative_lib_imports
    - avoid_renaming_method_parameters
    - avoid_return_types_on_setters
    # - avoid_returning_null # we do this commonly
    # - avoid_returning_this # https://github.com/dart-lang/linter/issues/842
    # - avoid_setters_without_getters # not yet tested
    # - avoid_single_cascade_in_expression_statements # not yet tested
    - avoid_slow_async_io
    # - avoid_types_as_parameter_names # https://github.com/dart-lang/linter/pull/954/files
    # - avoid_types_on_closure_parameters # conflicts with always_specify_types
    - avoid_unnecessary_containers
    # - avoid_unused_constructor_parameters # https://github.com/dart-lang/linter/pull/847
    - await_only_futures
    - camel_case_types
    - cancel_subscriptions
    # - cascade_invocations # not yet tested
    # - close_sinks # https://github.com/flutter/flutter/issues/5789
    # - comment_references # blocked on https://github.com/dart-lang/dartdoc/issues/1153
    # - constant_identifier_names # https://github.com/dart-lang/linter/issues/204
    - control_flow_in_finally
    - directives_ordering
    - discarded_futures
    - empty_catches
    - empty_constructor_bodies
    - empty_statements
    - hash_and_equals
    - implementation_imports
    # - join_return_with_assignment # not yet tested
    - library_names
    - library_prefixes
    # - literal_only_boolean_expressions # https://github.com/flutter/flutter/issues/5791
    - no_adjacent_strings_in_list
    - no_duplicate_case_values
    - non_constant_identifier_names
    # - omit_local_variable_types # opposite of always_specify_types
    # - one_member_abstracts # too many false positives
    # - only_throw_errors # https://github.com/flutter/flutter/issues/5792
    - overridden_fields
    - package_api_docs
    - package_names
    - package_prefixed_library_names
    # - parameter_assignments # we do this commonly
    - 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_constructors_over_static_methods # not yet tested
    - prefer_contains
    # - prefer_expression_function_bodies # conflicts with https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md#consider-using--for-short-functions-and-methods
    - prefer_final_fields
    - prefer_final_in_for_each
    - prefer_final_locals
    - prefer_foreach
    # - prefer_function_declarations_over_variables # not yet tested
    - prefer_initializing_formals
    # - prefer_interpolation_to_compose_strings # not yet tested
    # - prefer_iterable_whereType # https://github.com/dart-lang/sdk/issues/32463
    - prefer_is_empty
    - prefer_is_not_empty
    - prefer_relative_imports
    - prefer_single_quotes
    - prefer_typing_uninitialized_variables
    - require_trailing_commas
    - recursive_getters
    - slash_for_doc_comments
    - sort_child_properties_last
    - sort_constructors_first
    - sort_unnamed_constructors_first
    - test_types_in_equals
    - throw_in_finally
    # - type_annotate_public_apis # subset of always_specify_types
    - type_init_formals
    - unawaited_futures
    - unnecessary_brace_in_string_interps
    - unnecessary_const
    - unnecessary_getters_setters
    # - unnecessary_lambdas # https://github.com/dart-lang/linter/issues/498
    - unnecessary_library_directive
    - unnecessary_new
    - unnecessary_null_aware_assignments
    - unnecessary_null_in_if_null_operators
    - unnecessary_overrides
    - unnecessary_parenthesis
    - unnecessary_statements
    - unnecessary_this
    - unrelated_type_equality_checks
    - unsafe_html
    - use_rethrow_when_possible
    # - use_setters_to_change_properties # not yet tested
    # - use_string_buffers # https://github.com/dart-lang/linter/pull/664
    - use_string_in_part_of_directives
    # - use_to_and_as_if_applicable # has false positives, so we prefer to catch this by code-review
    - valid_regexps
    # - void_checks # not yet tested

dart_code_metrics:
  metrics:
    cyclomatic-complexity: 20
    number-of-parameters: 4
    maximum-nesting-level: 5
  metrics-exclude:
    - test/**
  rules:
#    - arguments-ordering Too strict
#    - avoid-banned-imports # TODO(polina-c): add configuration
    - avoid-importing-entrypoint-exports:
        only-in-src: true
    - avoid-cascade-after-if-null
    - avoid-collection-methods-with-unrelated-types
    - avoid-duplicate-exports
    - avoid-dynamic
#    - avoid-global-state   TODO(jacobr): bunch of false positives around boolean flags.
#    - avoid-ignoring-return-values
#    - avoid-late-keyword
    - avoid-missing-enum-constant-in-map
#    - avoid-nested-conditional-expressions Worth enabling but currently too many violators.
#    - avoid-non-ascii-symbols  TODO(jacobr): probably worth enabling.
#    - avoid-non-null-assertion
#    - avoid-passing-async-when-sync-expected TODO(jacobr): consider re-enabliing.
    - avoid-redundant-async
    - avoid-throw-in-catch-block:
        exclude:
          - '*test.dart'

#    - avoid-top-level-members-in-tests Doesn't seem to match our style.
    - avoid-unnecessary-type-assertions
    - avoid-unnecessary-type-casts
    - avoid-unrelated-type-assertions
    - avoid-unused-parameters
    - avoid-explicit-type-declaration
    # - ban-name # TODO(polina-c): add configuration
    # - binary-expression-operand-order Some nice catches but too many false positives to enable.
    - double-literal-format
    # - format-comment TODO(jacobr): enable this one after fixing violations.
    # TODO(jacobr): enable member-ordering. This catches a bunch of real style
    # issues but would be alot of work to migrate.
    # - member-ordering
    # - newline-before-return TODO(jacobr): should be in the formatter if it was a rule to adopt.
    - no-boolean-literal-compare
    # - no-empty-block Too many false positives. However it does flag a bunch of code smells so possibly worth re-enabling.
    # This one seems interesting but has too many false positives. Gave it a try.
    # - no-equal-arguments:
    #    ignored-parameters:
    #      - height
    #      - width
    #      - double-literal-format
    #      - defaultSortColumn
    #      - left
    #      - right
    #      - top
    #      - bottom
    #      - bottomLeft
    #      - topLeft
    #      - enabledBorder
    - no-equal-then-else
 #   - no-magic-number
 #   - no-object-declaration Too difficult to use along with avoiding dynamic particular for JSON decoding logic.
 #   - prefer-async-await TODO(jacobr): evaluate enabling.
    - prefer-commenting-analyzer-ignores
  #  - prefer-conditional-expressions Too many false positives involving large conditional expressions.
  #  - prefer-correct-identifier-length Too many false positives with fine names like i and id.
  #  - prefer-correct-test-file-name TODO(jacobr): enable and fix violations.
    - prefer-correct-type-name
  #  - prefer-enums-by-name Cannot able unless lint adds a special case for orElse
  #  - prefer-first TODO(jacobr): enable as a follow up PR.
  #  - prefer-immediate-return TODO(jacobr): enable as a follow up PR.
    - prefer-iterable-of
    - prefer-last
    # - prefer-match-file-name
    # TODO(jacobr): consider enabling or enabling to periodically audit.
    # This one has a lot of false positives but is also quite nice.
    # - prefer-moving-to-variable:
    #    allowed-duplicated-chains: 2
    # - prefer-static-class
    - prefer-trailing-comma
    - always-remove-listener
    # - avoid-border-all Micro-optimization to avoid a const constructor.
    # - avoid-returning-widgets  This one is nice but has a lot of false positives.
    - avoid-shrink-wrap-in-lists
    # - avoid-unnecessary-setstate It is unclear why to "Avoid calling sync methods that call 'setState'."
    - avoid-expanded-as-spacer
    - avoid-wrapping-in-padding
    - check-for-equals-in-render-object-setters
    - consistent-update-render-object
    # - prefer-const-border-radius TODO(jacobr): enable.
    - prefer-correct-edge-insets-constructor
    # - prefer-extracting-callbacks I'm not clear this is always a good idea. Seems like a workaround.
    # - prefer-single-widget-per-file
    - prefer-using-list-view
    - prefer-explicit-type-arguments
    - prefer-explicit-function-type
