Un partenaire de programmation de paires pour écrire un meilleur PHP. Pahout signifie Php Mahout?
PHP a été ajouté diverses fonctionnalités de la longue histoire. Cependant, en raison de la durée de son histoire, de nombreuses vieilles syntaxes sont dispersées sur Internet. Si un PHPER a tiré d'eux, le PHPER ne peut pas connaître l'excellente syntaxe et fonctions existant dans la dernière version PHP. C'est une chose très triste.
J'ai donc pensé à faire un linter comme un partenaire de programmation de paires qui vous dit un bon moyen. Cela vous aidera à écrire un meilleur PHP avec vous.
Cependant, veuillez ne pas essayer de corriger tous les codes existants en fonction des indices de Pahout en premier. Pahout est un partenaire de programmation de paires. Lorsque vous associez la programmation, vous ne vérifiez pas tous les codes existants, n'est-ce pas? Ma recommandation est de vérifier uniquement les fichiers nouvellement créés ou modifiés. Par exemple, c'est une bonne idée de définir le crochet pré-engagé comme suit:
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahout nécessite l'environnement suivant:
Vous pouvez installer avec Composer.
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
En utilisant l'image Docker, vous pouvez facilement essayer Pahout sans affecter l'environnement local.
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
Vous utilisez PHP 7.1.8 dans votre projet. Que pensez-vous du code suivant?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...C'est peut-être un code familier. Cependant, si vous connaissez l'opérateur de fusion nul, vous écrirez quelque chose comme ceci:
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahout soutiendra une telle réécriture. Essayez d'exécuter sur l'exemple ci-dessus.
$ pahout --php-version 7.1.8 test.php
test.php:8
NullCoalescingOperator: Use the null coalecing operator instead of the ternary operator. [https://github.com/wata727/pahout/blob/master/docs/NullCoalescingOperator.md]
1 files checked, 1 hints detected.
Pahout vous dit où l'opérateur de coalescing nul peut être utilisé! Pour la liste des conseils fournis par Pahout, veuillez consulter cette documentation.
Si vous souhaitez analyser plusieurs fichiers, vous pouvez en spécifier plus d'un.
$ pahout --php-version 7.1.8 test.php test2.php ...
Si vous spécifiez un nom de répertoire, tous les fichiers .php dans ce répertoire seront couverts.
$ pahout --php-version 7.1.8 src
Vous pouvez modifier la configuration à partir de la ligne de commande.
$ pahout --help
Description:
A pair programming partner for writing better PHP
Usage:
check [options] [--] [<files>...]
Arguments:
files List of file names or directory names to be analyzed
Options:
--php-version[=PHP-VERSION] Target PHP version [default: runtime version]
--ignore-tools[=IGNORE-TOOLS] Ignore tool types [default: Nothing to ignore] (multiple values allowed)
--ignore-paths[=IGNORE-PATHS] Ignore files and directories [default: Nothing to ignore] (multiple values allowed)
--extensions[=EXTENSIONS] File extensions to be analyzed [default: php] (multiple values allowed)
--vendor[=VENDOR] Check vendor directory [default: false]
-f, --format[=FORMAT] Output format [default: "pretty", possibles: "pretty", "json"]
-c, --config[=CONFIG] Config file path [default: ".pahout.yaml"]
--only-tools[=ONLY-TOOLS] Check only the given tool types (multiple values allowed)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Vous pouvez également modifier la configuration en préparant un fichier de configuration appelé .pahout.yaml .
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : trueSpécifiez la version PHP de votre projet. La valeur par défaut est la version d'exécution. Pahout utilise cette version pour sélectionner des outils.
Dans Pahout, ce qui génère des indices est appelé "outil". Vous pouvez spécifier le nom de l'outil que vous souhaitez ignorer. Veuillez consulter la documentation de la liste des noms d'outils.
Contrairement à ignore_tools , spécifiez des outils pour vérifier.
Vous pouvez spécifier le fichier ou le répertoire que vous souhaitez ignorer. Si un nom de répertoire est spécifié, tous les fichiers dans ce répertoire sont ignorés.
Extensions de fichiers à analyser. La valeur par défaut est php uniquement.
Vous pouvez définir s'il faut ignorer le répertoire du fournisseur.
Remarque: Le répertoire du fournisseur est ignoré par défaut. Généralement, vous n'avez pas besoin de vérifier le répertoire du fournisseur.
Spécifiez le format de sortie. Actuellement, seuls pretty et json sont pris en charge.
Spécifiez un nom de fichier de configuration. Ceci est utile lorsque vous souhaitez utiliser le nom de fichier autre que .pahout.yaml dans le fichier de configuration.
En utilisant des annotations, vous pouvez ignorer des conseils pour des lignes spécifiques. Spécifiez le nom de l'outil que vous souhaitez ignorer avec @rebel .
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;Les commentaires suivants fonctionneront de la même manière.
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator Kazuma Watanabe