# Specify analysis options.
#
# Note that until there is a default "all-in" lint rule-set we need
# to opt-in to all desired lints (https://github.com/dart-lang/sdk/issues/25843).
# For a list of lints, see: http://dart-lang.github.io/linter/lints/

# This file is the .analysis_options file used by "flutter analyze".
# It isn't named that because otherwise editors like Atom would try
# to use it, and that wouldn't work because it enables things that
# need to be silenced, in particular, public_member_api_docs.

analyzer:
  language:
    enableStrictCallChecks: true
    enableSuperMixins: true
  strong-mode: true
  errors:
    # we allow overriding fields (if they use super, ideally...)
    strong_mode_invalid_field_override: ignore
    # we allow type narrowing
    strong_mode_invalid_method_override: ignore
    strong_mode_static_type_error: ignore
    strong_mode_down_cast_composite: ignore
    # we allow having TODOs in the code
    todo: ignore
linter:
  rules:
    - avoid_empty_else
    - always_declare_return_types
    - always_specify_types
    - annotate_overrides
    - avoid_as
    - avoid_init_to_null
    - avoid_return_types_on_setters
    - camel_case_types
    # - constant_identifier_names # https://github.com/dart-lang/linter/issues/204 (and 203)
    - empty_constructor_bodies
    - hash_and_equals
    # - implementation_imports # https://github.com/dart-lang/linter/issues/203
    - library_names
    - library_prefixes
    - non_constant_identifier_names
    - one_member_abstracts
    - package_api_docs
    - package_names
    - package_prefixed_library_names
    - prefer_is_not_empty
    - public_member_api_docs
    - slash_for_doc_comments
    - sort_constructors_first
    - sort_unnamed_constructors_first
    - super_goes_last
    - type_annotate_public_apis # subset of always_specify_types
    - type_init_formals
    - unnecessary_brace_in_string_interp
    - unnecessary_getters_setters
