# This file contains the analysis options used for code in the webdev
# repository.

include: package:lints/recommended.yaml

analyzer:
  exclude:
    # Ignore generated files
    - "lib/data/*"
    # Ignore debug extension builds
    - "debug_extension/dev_build/*"
    - "debug_extension/prod_build/*"
    - "debug_extension_mv3/dev_build/*"
    - "debug_extension_mv3/prod_build/*"

linter:
  rules:
    - always_use_package_imports
    - avoid_void_async
    - directives_ordering
    - prefer_final_locals
    - require_trailing_commas
    - unawaited_futures
    - unnecessary_lambdas

# TODO(https://github.com/dart-lang/webdev/issues/2053): Enable commented-out rules with fixes.
dart_code_metrics:
  metrics:
    # cyclomatic-complexity: 20 # Enable.
    # number-of-parameters: 5 # Enable.
    # maximum-nesting-level: 5 # Enable.
  metrics-exclude:
    - test/**
  rules:
    # - arguments-ordering 
    # - avoid-banned-imports
    - avoid-cascade-after-if-null
    - avoid-collection-methods-with-unrelated-types
    # - avoid-double-slash-imports
    - avoid-duplicate-exports
    # - avoid-dynamic
    # - avoid-global-state # Enable.
    # - avoid-ignoring-return-values
    # - avoid-late-keyword
    - avoid-missing-enum-constant-in-map
    - avoid-nested-conditional-expressions
    - avoid-non-ascii-symbols
    # - avoid-non-null-assertion # Enable.
    # - avoid-passing-async-when-sync-expected # Enable.
    - avoid-redundant-async
    # - avoid-throw-in-catch-block # Enable.
    # - avoid-top-level-members-in-tests
    # - avoid-unnecessary-conditionals
    - avoid-unnecessary-type-assertions
    - avoid-unnecessary-type-casts
    - avoid-unrelated-type-assertions
    - avoid-unused-parameters
    # - ban-name
    - binary-expression-operand-order
    - double-literal-format
    # - format-comment # Enable.
    # - list-all-equatable-fields
    # - member-ordering # Enable.
    # - missing-test-assertion
    # - new-line-before-return
    - no-boolean-literal-compare
    # - no-empty-block # Enable.
    # - no-equal-arguments
    - no-equal-then-else
    # - no-magic-number
    # - no-object-declaration
    # - prefer-async-await # Enable.
    # - prefer-commenting-analyzer-ignores # Enable.
    # - prefer-conditional-expressions
    # - prefer-correct-identifier-length
    # - prefer-correct-test-file-name # Enable.
    - prefer-correct-type-name
    - prefer-enums-by-name
    # - prefer-first
    # - prefer-immediate-return # Enable.
    - prefer-iterable-of
    - prefer-last
    # - prefer-match-file-name
    # - prefer-moving-to-variable: # Enable.
    #     allow-duplicated-chains: 2
    # - prefer-static-class
    # - prefer-trailing-comma
    # - tag-name
