Impedindo que os avisos de depreciação "chamem o lobo"

Quando o PHPStan marca um método como depreciado, você normalmente procura por um substituto. Mas e se nenhum existir?

A Shopware usava a tag @deprecated para anunciar mudanças planejadas — como a adição de um novo parâmetro opcional. Ferramentas de análise estática tratavam essas tags como depreciações reais e reclamavam de cada chamada. O ruído aumentou, os desenvolvedores começaram a ignorar os avisos e os alertas perderam o valor. Esse é o clássico caso de "chamar o lobo".

No Shopware 6.7.14.0, dividimos os sinais.

  • @deprecated – reserve isto para APIs que desaparecerão ou serão substituídas. Você deve migrar seu código.
  • Atributos de mudança de BC – use-os para ajustes planejados que mantêm a API viva, como novos parâmetros opcionais ou tipos de retorno alterados.

Os novos atributos residem em Shopware\Core\Framework\Deprecation\BCChange. Eles informam exatamente o que mudará e quem será afetado.

Nós os dividimos em dois grupos:

  • CallSiteCompatibilityChange – afeta o código que chama um método.
  • ExtenderCompatibilityChange – afeta classes que estendem ou sobrescrevem um método.

Agora você pode preparar sua extensão para o Shopware 6.8 antes que o próximo lançamento principal chegue.

Exemplo: um método ganhará um novo parâmetro opcional. Adicione esse parâmetro aos seus overrides hoje; o código funcionará tanto na versão atual quanto nas futuras.

A mudança restaura a confiança nos avisos de depreciação.

Três passos para desenvolvedores

  1. Trate o @deprecated como uma correção obrigatória; a API desaparecerá.
  2. Abandone padrões de ignore amplos que possam ocultar problemas reais.
  3. Fique atento aos atributos de mudança de BC e aplique atualizações pequenas e seguras agora, em vez de uma migração massiva mais tarde.

Fonte: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983