Slevomat Coding Standard สำหรับ PHP_CodeSniffer ให้การดมกลิ่นที่แบ่งออกเป็นสามประเภท:
= แก้ไขข้อผิดพลาดอัตโนมัติ
= สามารถระงับการตรวจสอบการดมกลิ่นได้ในเครื่อง
วิธีที่แนะนำในการติดตั้ง Slevomat Coding Standard คือผ่านทาง Composer
{
"require-dev" : {
"slevomat/coding-standard" : " ~8.0 "
}
}
ขอแนะนำให้ติดตั้ง php-parallel-lint/php-parallel-lint ซึ่งจะตรวจสอบซอร์สโค้ดเพื่อหาข้อผิดพลาดทางไวยากรณ์ Sniffs เชื่อถือโค้ดที่ประมวลผลว่าถูกต้องตามหลักไวยากรณ์ (ไม่มีข้อผิดพลาดในการแยกวิเคราะห์) มิฉะนั้นโค้ดอาจทำงานโดยไม่คาดคิด ขอแนะนำให้รัน PHP-Parallel-Lint
ในเครื่องมือบิลด์ของคุณก่อนรัน PHP_CodeSniffer
และออกจากกระบวนการบิลด์ก่อนกำหนดหาก PHP-Parallel-Lint
ล้มเหลว
คุณสามารถเลือกหนึ่งในสองวิธีในการรันเฉพาะการดมกลิ่นที่เลือกจากมาตรฐานบนโค้ดเบสของคุณ:
วิธีที่แนะนำคือเขียน Ruleset.xml ของคุณเองโดยอ้างอิงเฉพาะ Sniff ที่เลือก นี่คือตัวอย่างกฎชุด.xml:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< config name = " installed_paths " value = " ../../slevomat/coding-standard " /> <!-- relative path from PHPCS source location -->
< rule ref = " SlevomatCodingStandard.Arrays.TrailingArrayComma " />
<!-- other sniffs to include -->
</ ruleset >
จากนั้นรันไฟล์ปฏิบัติการ phpcs
ตามปกติ:
vendor/bin/phpcs --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
คุณยังสามารถพูดถึง Slevomat Coding Standard ใน ruleset.xml
ของโปรเจ็กต์ของคุณ และยกเว้นเฉพาะบาง Sniffs เท่านั้น:
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< rule ref = " vendor/slevomat/coding-standard/SlevomatCodingStandard/ruleset.xml " > <!-- relative path to your ruleset.xml -->
<!-- sniffs to exclude -->
</ rule >
</ ruleset >
อย่างไรก็ตาม ไม่ใช่วิธีที่แนะนำให้ใช้ Slevomat Coding Standard เนื่องจากงานสร้างของคุณอาจเสียหายได้เมื่อย้ายระหว่างเวอร์ชันรองของมาตรฐาน (ซึ่งอาจเกิดขึ้นได้หากคุณใช้ข้อจำกัดเวอร์ชัน ^
หรือ ~
ใน composer.json
) เราเพิ่มการดมกลิ่นใหม่เป็นประจำแม้ในเวอร์ชันรอง ซึ่งหมายความว่าโค้ดของคุณไม่น่าจะสอดคล้องกับแพ็คเกจเวอร์ชันรองใหม่มากนัก
การดมกลิ่นในมาตรฐานนี้ที่ทำเครื่องหมายด้วยสัญลักษณ์จะรองรับการแก้ไขการละเมิดมาตรฐานการเข้ารหัสโดยอัตโนมัติ หากต้องการแก้ไขโค้ดของคุณโดยอัตโนมัติ ให้รัน phpcbf แทน phpcs:
vendor/bin/phpcbf --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
โปรดจำไว้เสมอว่าจะต้องสำรองโค้ดของคุณก่อนที่จะดำเนินการแก้ไขอัตโนมัติ และตรวจสอบผลลัพธ์ด้วยตาของคุณเอง เนื่องจากบางครั้งเครื่องมือแก้ไขอัตโนมัติสามารถสร้างผลลัพธ์ที่ไม่ต้องการได้
การดมกลิ่นที่เลือกในมาตรฐานนี้ที่ทำเครื่องหมายด้วยสัญลักษณ์สามารถระงับได้สำหรับโค้ดเฉพาะชิ้นโดยใช้คำอธิบายประกอบ ลองพิจารณาตัวอย่างต่อไปนี้:
/**
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
พารามิเตอร์ $max
อาจมีคำแนะนำการพิมพ์ int
scalar ดั้งเดิม แต่เนื่องจากเมธอดในคลาสพาเรนต์ไม่มี typehint นี้ ดังนั้นจึงไม่สามารถมีได้เหมือนกัน PHP_CodeSniffer แสดงข้อผิดพลาดต่อไปนี้:
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
67 | ERROR | [x] Method ErrorsConsoleStyle::createProgressBar()
| | does not have native type hint for its parameter $max
| | but it should be possible to add it based on @param
| | annotation "int".
| | (SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint)
หากเราต้องการระงับข้อผิดพลาดนี้แทนที่จะแก้ไข เราสามารถนำรหัสข้อผิดพลาด ( SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
) และใช้กับคำอธิบายประกอบ @phpcsSuppress
เช่นนี้:
/**
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
หากต้องการให้ที่เก็บนี้ทำงานบนเครื่องของคุณ ให้โคลนและรันคำสั่งทั้งสองนี้ในไดเร็กทอรีรากของที่เก็บ:
composer install
bin/phing
หลังจากเขียนโค้ดและแก้ไขหรือเพิ่มการทดสอบหน่วยแล้ว ให้รัน phing อีกครั้งเพื่อตรวจสอบว่าทุกอย่างเรียบร้อยดี:
bin/phing
เรารอคอยรายงานข้อบกพร่อง คำขอคุณลักษณะ และคำขอดึงข้อมูลของคุณอยู่เสมอ ขอบคุณ
โครงการนี้ปฏิบัติตามหลักจรรยาบรรณของผู้ร่วมให้ข้อมูล ในการเข้าร่วมโครงการนี้และชุมชน คุณได้รับการคาดหวังให้รักษาหลักปฏิบัตินี้