# Utilisation de Pint et Larastan

Ce projet utilise deux outils qualite cote PHP :

- Laravel Pint pour le formatage automatique du code.
- Larastan/PHPStan pour l'analyse statique.

## PHP 8.4

Le poste peut garder PHP 8.2 dans le PATH global. Pour kView INVESTOR, utiliser explicitement PHP 8.4 :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' artisan --version
```

Le fichier temporaire `C:\tmp\kview_investor-php84.ini` active les extensions requises par Laravel, PostgreSQL et Passport :

```text
curl
fileinfo
intl
mbstring
openssl
pdo_pgsql
pgsql
sodium
zip
```

## Pint

Verifier le style sans modifier les fichiers :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/pint --test
```

Corriger automatiquement le style :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/pint
```

Le preset utilise est `laravel`, configure dans `pint.json`.

## Larastan

Lancer l'analyse statique :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/phpstan analyse
```

La configuration est dans `phpstan.neon`.

Le niveau initial est `5`, ce qui donne un bon signal sans bloquer le demarrage du projet avec trop de bruit. On pourra monter progressivement vers `6`, `7`, puis plus haut lorsque le socle API sera stabilise.

## Scripts Composer

Les scripts suivants sont disponibles :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' 'C:\ProgramData\ComposerSetup\bin\composer.phar' pint
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' 'C:\ProgramData\ComposerSetup\bin\composer.phar' analyse
```

## Workflow recommande

Avant chaque commit :

```powershell
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/pint
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/phpstan analyse
& 'C:\Program Files\php\PHP 8.4.1\php.exe' -c 'C:\tmp\kview_investor-php84.ini' vendor/bin/phpunit
```

`artisan test` fonctionne uniquement si le PHP relance avec le meme `php.ini`. Sur ce poste, l'appel direct a `vendor/bin/phpunit` est plus fiable tant que PHP 8.4 n'a pas de `php.ini` global charge.
