Skip to content

[CI] PHPStan scanne les bouchons de test de Saturne : cinq erreurs réelles restent invisibles #509

Closed

Description

@nicolas-eoxia

phpstan.neon prend ../saturne/ en entier dans scanDirectories, tests/ compris. Or le bootstrap PHPUnit de Saturne déclare des classes bouchons DoliDB, Conf, Translate, User et HookManager, qui gagnent sur les vraies classes du coeur dans le sparse-checkout de la CI. Résultat : l'analyse est plus verte qu'elle ne devrait, et des erreurs réelles ne sortent jamais.

En ajoutant - ../saturne/tests/ (?) à excludePaths.analyseAndScan, cinq erreurs apparaissent :

  • Loose comparison using == between 'update' and 'update' will always evaluate to true — une comparaison qui ne teste rien ;
  • Cannot access property $rowid on object|false — un retour de fetch_object() déréférencé sans garde ;
  • Parameter #4 $month of function dol_mktime expects int, string given ;
  • Parameter #5 $day of function dol_mktime expects int, string given ;
  • Parameter #6 $year of function dol_mktime expects int, string given — trois GETPOST non typés, à passer en GETPOSTINT.

Elles méritent d'être corrigées, pas gelées : la première est un test mort, la deuxième un warning PHP 8 en puissance.

L'exclusion avait été ajoutée à la branche de la 23.1.0 puis retirée avant le merge, pour ne pas mélanger une correction de fond avec une PR de release (#507).

Contexte : le même trou a été trouvé sur Digirisk (Evarisk/Digirisk#5265), DigiQuali, DoliMeet, DoliSIRH et DigiBoard. Attention, l'alignement de phpstan.neon sur le gabarit commun retire cette exclusion : elle a besoin d'y être intégrée, sinon elle se perd à chaque passage.

Activity

  1. added a commit that references this issue on Sep 25, 2026
  2. added a commit that references this issue on Sep 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions