# This is a set of core lints used to identify critical issues.
# Check out https://github.com/dart-lang/lints for more information.
#
# To learn more about customizing static analysis for your package or app,
# visit https://dart.dev/tools/analysis.

linter:
  rules:
    - avoid_empty_else
    - avoid_relative_lib_imports
    - avoid_shadowing_type_parameters
    - avoid_types_as_parameter_names
    - await_only_futures
    - camel_case_extensions
    - camel_case_types
    - collection_methods_unrelated_type
    - curly_braces_in_flow_control_structures
    - dangling_library_doc_comments
    - depend_on_referenced_packages
    - empty_catches
    - file_names
    - hash_and_equals
    - implicit_call_tearoffs
    - library_annotations
    - no_duplicate_case_values
    - no_wildcard_variable_uses
    - non_constant_identifier_names
    - null_check_on_nullable_type_parameter
    - prefer_generic_function_type_aliases
    - prefer_is_empty
    - prefer_is_not_empty
    - prefer_iterable_whereType
    - prefer_typing_uninitialized_variables
    - provide_deprecation_message
    - secure_pubspec_urls
    - type_literal_in_constant_pattern
    - unintended_html_in_doc_comment
    - unnecessary_overrides
    - unrelated_type_equality_checks
    - use_string_in_part_of_directives
    - valid_regexps
    - void_checks
