より良いPHPを書くためのペアプログラミングパートナー。 PahoutはPhp Mahoutを意味しますか?
PHPは、長い歴史にさまざまな機能が追加されています。ただし、その歴史の長さにより、多くの古い構文がインターネット上に散らばっています。 PHPERがそれらから学んだ場合、PHPERは最新のPHPバージョンに存在する優れた構文と機能を知ることができません。これはとても悲しいことです。
それで、私はあなたに良い方法を伝えるペアプログラミングパートナーのようなリンターを作ることを考えました。それはあなたがあなたとより良いPHPを書くのに役立ちます。
ただし、最初にPahoutのヒントに基づいて、既存のすべてのコードを修正しようとしないでください。 Pahoutはペアプログラミングパートナーです。プログラミングをペアリングするとき、既存のすべてのコードをチェックしませんか?私の推奨事項は、新しく作成または変更されたファイルのみを確認することです。たとえば、以前のフックを次のように設定することをお勧めします。
#! /bin/sh
git diff --name-only | grep .php | xargs vendor/bin/pahout
if [ " $? " -ne 0] ; then
exit 1
fi Pahoutには次の環境が必要です。
作曲家と一緒にインストールできます。
$ composer require --dev wata727/pahout
$ vendor/bin/pahout -V
Docker画像を使用することで、ローカル環境に影響を与えることなく、簡単にPahoutを試すことができます。
$ docker run --rm -t -v $(pwd):/workdir wata727/pahout
プロジェクトでPHP 7.1.8を使用しています。次のコードについてどう思いますか?
<?php
// Do something...
$ response = get_awesome_response ();
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
// Do something...おそらくそれはおなじみのコードです。ただし、Null Coulescingオペレーターを知っている場合は、次のようなものを書きます。
<?php
// Do something...
$ response = get_awesome_response ();
$ error = $ response [ ' error ' ] ?? null ; # Great!
// Do something...Pahoutはそのような書き換えをサポートします。上記の例で実行してみてください。
$ 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は、Null Coulescingオペレーターをどこで使用できるかを教えてくれます! Pahoutが提供するヒントのリストについては、このドキュメントをご覧ください。
複数のファイルを分析する場合は、複数のファイルを指定できます。
$ pahout --php-version 7.1.8 test.php test2.php ...
ディレクトリ名を指定すると、そのディレクトリの下のすべての.phpファイルがカバーされます。
$ pahout --php-version 7.1.8 src
コマンドラインから構成を変更できます。
$ 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
.pahout.yamlと呼ばれる構成ファイルを準備して、構成を変更することもできます。
php_version : 7.0.0
ignore_tools :
- ShortArraySyntax
ignore_paths :
- tests
- bin
extensions :
- php
- module
- inc
vendor : trueプロジェクトのPHPバージョンを指定します。デフォルトはランタイムバージョンです。 Pahoutはこのバージョンを使用してツールを選択します。
Pahoutでは、ヒントを生成するものは「ツール」と呼ばれます。無視するツール名を指定できます。ツール名のリストについては、ドキュメントをご覧ください。
ignore_toolsに反して、確認するツールを指定します。
無視するファイルまたはディレクトリを指定できます。ディレクトリ名が指定されている場合、そのディレクトリの下のすべてのファイルは無視されます。
分析するファイル拡張子。デフォルトはphpのみです。
ベンダーディレクトリを無視するかどうかを設定できます。
注:ベンダーディレクトリはデフォルトでは無視されます。通常、ベンダーディレクトリを確認する必要はありません。
出力形式を指定します。現在、 prettyでjsonだけがサポートされています。
構成ファイル名を指定します。これは、構成ファイルの.pahout.yaml以外のファイル名を使用する場合に役立ちます。
注釈を使用すると、特定の行のヒントを無視できます。 @rebelで無視するツール名を指定します。
<?php
/** @rebel NullCoalescingOperator */
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;次のコメントも同じように機能します。
<?php
/**
* @rebel NullCoalescingOperator
*/
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ;
$ error = isset ( $ response [ ' error ' ]) ? $ response [ ' error ' ] : null ; # @rebel NullCoalescingOperator ワタナベ川