Assurer un code propre et maintenable est vital dans tout projet Laravel. Bien que le phpstan soit un excellent outil d'analyse statique pour identifier les problèmes de code, la sortie JSON brute qu'il génère n'est pas toujours adaptée à l'homme. C’est là qu'un script de rapport personnalisé est utile.
Dans cet article, je vais vous guider à travers un script bash que j'utilise dans mes projets Laravel pour analyser et embellir la sortie Phpstan. Ce script divise les problèmes par identifiant et génère un résumé soigné pour une analyse rapide.
Avant d'utiliser le script, assurez-vous d'avoir Phpstan etjqinstallé.
Vous pouvez installer PHPSTAN via Composer:
le compositeur a besoin --Dev phpstan / phpstan Larastan / LarastanCréer un fichier de configuration phpstan au répertoire racine:
toucher phpstan.neon.distCollez ensuite la configuration suivante:
Comprend: - Vendor / Larastan / Larastan / Extension.Neon Paramètres: TreatPhPDocTypesasCercer: Faux Paths: - App / - Config / - Database / - Routes / - Support / NivePour le moment, j'utilise le niveau 4 à 6, dépend des besoins du projet. Vous pouvez en savoir plus sur les niveaux de règles ici.
jqjqest un processeur JSON léger requis pour analyser la sortie JSON de PhpStan.
Installer JQsudo apt-get install jqUtilisez Chocolatey ou téléchargez manuellement à partir de https://stedolan.github.io/jq/download/
Project-ROOT / ├fiqueCréer.phpstanannuaire:
mkdir -p .phpstanAjouter.gitignoredéposer.phpstanrépertoire et collez le contenu suivant. Ceci pour vous assurer de ne pas commettre les fichiers générés dans votre référentiel de code chaque fois que le script s'exécute.
*! .gitignoreCréez ensuite un fichier àbac / phpstanDans votre projet Laravel:
MKDIR -P BIN TOUCH BIN / PHPSTAN CHMOD + X BIN / PHPSTANCollez le script complet ci-dessous dansbac / phpstan:
#! / usr / bin / env bash Clear echo "exécuter phpstan ..." vendor / bin / phpstan --error-format = json> .phpstan / scan-result.json jq. .phpstan / scan-result.json> .phpstan / scan-result.pretty.json && mv .phpstan / scan-result.pretty.json .phpstan / scan-result.json input_file = ". phpstan / scan-result.json" output_dir = ". phpstan" if [[! -f "$ input_file"]]; puis écho "❌ fichier $ input_file introuvable." Exit 1 fi trouve "$ output_dir" -type f -name '* .txt' -delete # valider si le json a une touche "fichiers" et ce n'est pas nul si! jq -e '.files! = null et (.files | longueur> 0)' "$ input_file"> / dev / null; puis écho "ℹ️ aucun problème trouvé ou non valide de sortie JSON PHPStan". exit 0 fi mkdir -p "$ output_dir" echo "📂 Répertoire de sortie Ready: $ output_dir" echo "📄 Lecture de: $ input_file" jq -r '.Files as $ fi...
[Courte citation de 8% de l'article original]