พันธมิตรการเขียนโปรแกรมคู่เพื่อเขียน PHP ที่ดีขึ้น Pahout หมายถึง php mahout?
PHP ได้รับการเพิ่มคุณสมบัติต่าง ๆ ในประวัติศาสตร์อันยาวนาน อย่างไรก็ตามเนื่องจากความยาวของประวัติศาสตร์ไวยากรณ์เก่าจำนวนมากกระจัดกระจายไปทางอินเทอร์เน็ต หาก phper เรียนรู้จากพวกเขา phper ไม่สามารถรู้ไวยากรณ์ที่ยอดเยี่ยมและฟังก์ชั่นที่มีอยู่ในเวอร์ชัน PHP ล่าสุด นี่เป็นสิ่งที่น่าเศร้ามาก
ดังนั้นฉันจึงคิดเกี่ยวกับการทำ linter เหมือนหุ้นส่วนการเขียนโปรแกรมคู่ที่บอกคุณว่าเป็นวิธีที่ดี มันจะช่วยให้คุณเขียน 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
ด้วยการใช้อิมเมจนักเทียบท่าคุณสามารถลอง 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...บางทีมันอาจเป็นรหัสที่คุ้นเคย อย่างไรก็ตามหากคุณรู้จักผู้ประกอบการรวมตัวกันคุณจะเขียนอะไรแบบนี้:
<?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 บอกคุณว่าสามารถใช้ผู้ประกอบการรวมตัวกันได้ที่ไหน! สำหรับรายการคำแนะนำที่จัดทำโดย 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 คาซึมาวาตานาเบะ