# analysis_options.yaml canônico X-Adm para apps Flutter/Dart — FONTE ÚNICA.
# Copie para a raiz do repo do app (não copie de outro app: clones divergem).
# Se a regra da casa mudar, mude AQUI no repo central e re-derive as cópias
# na migração oportunista. Par do checkstyle.xml do lado Java.
#
# O gate da stack é: dart format --output=none --set-exit-if-changed .
#                    && flutter analyze && flutter test
# (formatação verificada no CI — sem isso o formato é opinião, não norma).
# O --output=none checa SEM reescrever: o default do dart format é gravar em
# disco, o que faz o gate consertar o que deveria acusar (2ª rodada = verde).

include: package:flutter_lints/flutter.yaml

linter:
  # Formato de MAPA (`nome: bool`), não lista — desligamos regra abaixo e
  # lista/mapa não se misturam no bloco `rules`.
  rules:
    # Segurança de recursos assíncronos (pegam bug real — destilado do piloto
    # Flutter, auditoria 2026-06):
    unawaited_futures: true        # Future sem await em função async
    cancel_subscriptions: true     # StreamSubscription sem cancel no dispose
    close_sinks: true              # StreamController/Sink sem close
    # prefer_initializing_formals OFF: o analyzer (>= Dart do Flutter 3.44)
    # sugere `this._campo`, que é ILEGAL em parâmetro nomeado privado — justo
    # o idioma de DI dos services (`{Tipo x = ...}) : _x = x`). Sem fix legal
    # na maioria dos casos; desligar é mais limpo que espalhar `// ignore`.
    prefer_initializing_formals: false
