มาตรฐานการเข้ารหัส: สิ่งที่ต้องดมกลิ่น

เผยแพร่แล้ว: 2021-07-19

คำถามบางข้อเกิดขึ้นตราบใดที่การพัฒนาซอฟต์แวร์ ฉันควรเยื้องด้วยแท็บหรือเว้นวรรคหรือไม่ มาตรฐานการเข้ารหัสมีความสำคัญจริงหรือ? ฉันต้องเสียเวลาทำตามกฎเกณฑ์ใดๆ หรือไม่?

ตามลำดับ คำตอบสำหรับคำถามเหล่านี้คือ: แท็บ (ชัดเจน) ใช่ (ไม่ชัดเจน) และ ไม่ใช่ (ประเภท)

PHP Codesniffing

ความสำคัญของมาตรฐานครอบคลุมโดยผู้อื่นในระยะเวลาอันยาวนาน ดังนั้นฉันจะไม่ลงรายละเอียดในที่นี้ แต่ประเด็นสำคัญคือ: ความสอดคล้องภายในเป็นสิ่งที่พึงปรารถนาภายในโปรเจ็กต์ที่กำหนด เพราะมันช่วยเพิ่มความสามารถในการอ่าน จำกัดความประหลาดใจ และสามารถนำไปสู่ ความทนทานของรหัส

คุณไม่จำเป็นต้อง “เสียเวลา” ในการยึดติดกับมาตรฐาน เพราะมีหลายวิธีที่จะนำมาตรฐานเหล่านั้นไปใช้โดยอัตโนมัติ!

สิ่งที่ฉันจะกล่าวถึงในที่นี้คือวิธีการตั้งค่าเครื่องมือแบบสแตนด์อโลน PHP Codesniffer (PHPCS) สำหรับโครงการ WordPress อย่างรวดเร็วและง่ายดาย สิ่งนี้จะช่วยให้คุณ:

  • สร้างรายงานการปฏิบัติตามมาตรฐานในรหัสของคุณ
  • แก้ไขปัญหาการปฏิบัติตามข้อกำหนดที่หลากหลายโดยอัตโนมัติ

เราจะนำมาตรฐาน WordPress ไปใช้ในตัวอย่างต่อไปนี้

กำลังติดตั้ง

ข้อกำหนดเบื้องต้น:

  • การเข้าถึงเทอร์มินัล (ผู้ใช้ Windows อาจประสบความสำเร็จกับ Bash สำหรับ Windows แต่ยังไม่ผ่านการทดสอบ)
  • ผู้จัดการแพ็คเกจนักแต่งเพลง

แม้ว่าจะสามารถติดตั้ง PHPCS ได้ด้วยตัวเอง แต่ก็ไม่สนับสนุน WordPress ตามค่าเริ่มต้น สำหรับสิ่งนั้น เราจะติดตั้ง WordPress Coding Standards (WPCS) ที่ ชื่อว่า WordPress

ขั้นแรก นำทางไปยังทุกที่ที่คุณต้องการติดตั้ง WPCS สำหรับการใช้งานทั่วโลก

 $ > cd /path/to/whereever

ติดตั้งแพ็คเกจด้วยผู้แต่ง

 $ > นักแต่งเพลง create-project wp-coding-standards/wpcs --no-dev

ณ จุดนี้ เราสามารถดำดิ่งและเริ่มใช้ WPCS ได้ แต่มีการตั้งค่าสถานะบางอย่างในแต่ละครั้งที่เราเรียกใช้คำสั่ง มาสร้างนามแฝงสองสามตัวเพื่อความสะดวก

เปิด . profile จากโฮมไดเร็กทอรีของคุณในเอดิเตอร์ที่คุณชื่นชอบ (หรือสร้างมันขึ้นมาหากไม่มีอยู่) และเพิ่มสิ่งต่อไปนี้:

 # มาตรฐานการเข้ารหัส WP
ส่งออก PATH=$PATH:"/path/to/wherever/wpcs/vendor/bin"
นามแฝง wpcs='phpcs --standard=WordPress --extensions=php
นามแฝง wpcbf='phpcbf --standard=WordPress --extensions=php

เราได้เพิ่มนามแฝงสองชื่อไว้ที่นี่ – หนึ่งชื่อสำหรับ phpcs (ซึ่งค้นหาและแสดงความล้มเหลวในการปฏิบัติตามข้อกำหนด) และอีกหนึ่งชื่อสำหรับ phpcbf (ซึ่งแก้ไขปัญหาต่างๆ ที่พบโดย phpcs โดยอัตโนมัติ) ตัวเลือกเพิ่มเติมทำดังต่อไปนี้:

–standard=WordPress – ใช้มาตรฐาน WordPress (ตั้งค่าเป็น WPCS)

–extensions=php – กำหนดเป้าหมายไฟล์ PHP เท่านั้น (PHPCS กำหนดเป้าหมายเป็น PHP, CSS และ JS โดยค่าเริ่มต้น)

รีสตาร์เทอร์มิ (หรือ .profile แหล่งที่มา) และ WPCS พร้อมที่จะสูดอากาศรหัสของคุณ!

ดมกลิ่น

ในการสร้างรายงานการดมกลิ่นในไฟล์ ให้เรียกใช้สิ่งต่อไปนี้:

 $ > wpcs /path/to/your/php/project/file.php

สิ่งนี้จะส่งออกรายงานในเทอร์มินัล อีกวิธีหนึ่ง คุณสามารถส่งออกสิ่งนี้ไปยังไฟล์:

 $ > wpcs /path/to/your/php/project/file.php > output.txt

รายงานการดมกลิ่น

เอาต์พุตดมกลิ่น WPCS ของคุณจะเป็นดังนี้:

รายงาน PHP Codesniffer

มีข้อมูลจำนวนพอสมควรบรรจุอยู่ที่นี่ แต่มีการจัดวางค่อนข้างชัดเจน มาทบทวนสิ่งที่เรามีกันเถอะ:

  • ไฟล์เป้าหมาย
  • สรุปจำนวนข้อผิดพลาด/คำเตือนที่พบ และจำนวนบรรทัดที่ได้รับผลกระทบ
  • รายการปัญหาที่พบ พร้อมระดับความรุนแรงและคำอธิบาย
  • การบ่งชี้จำนวนปัญหาที่ phpcbf สามารถแก้ไขได้โดยอัตโนมัติ (โดยทั่วไป ปัญหาทั้งหมดที่มี [x])

ตามที่คาดไว้ PHPCS ไม่สามารถอธิบายได้ทุกอย่าง จะไม่ตั้งสมมติฐานเกี่ยวกับการเลือกเครื่องหมายวรรคตอนในความคิดเห็นและการจัดรูปแบบโค้ดบางประเภท แต่สามารถจัดการกับปัญหาที่หลากหลายสำหรับคุณ

โบนัสที่ดีคือกฎของ WordPress อนุญาตให้ PHPCS ตรวจพบปัญหาเฉพาะของ WordPress รวมถึงการใช้ฟังก์ชันในทางที่ผิด

ซ่อม

การแก้ไขปัญหาโดยอัตโนมัติไม่ใช่เรื่องง่าย:

 $ > wpcbf /path/to/your/php/project/file.php

เอาต์พุตสรุปสั้น ๆ :

เอาต์พุตตัวแก้ไขโค้ด PHP

ข้อผิดพลาดที่เหลือจะต้องได้รับการแก้ไขด้วยตนเอง แต่โดยปกติคุณจะพบว่าปัญหาจำนวนมากได้รับการจัดการแล้ว

กฎที่กำหนดเอง

คุณอาจต้องการปรับแต่งชุดกฎ ยกเว้นบางไดเร็กทอรีในโปรเจ็กต์ของคุณ และอื่นๆ PHPCS ข้อเขียนเอกสาร ruleset ให้ตัวอย่างของการเปลี่ยนแปลงทั้งหมดที่คุณสามารถทำ แต่พูดกว้างคุณเพียงแค่:

  1. สร้างไฟล์ชุดกฎ
  2. อ้างอิงในคำสั่ง PHPCS

นี่คือตัวอย่างของไฟล์ชุดกฎ:

 <?xml version="1.0"?>
<ruleset name="WordPress Coding Standards">
    <description>ปรับแต่งมาตรฐาน WordPress</description>
    <rule ref="WordPress">
        <exclude name="Generic.Formatting.MultipleStatementAlignment.NotSameWarning"/>
    </rule>
    <exclude-pattern>*/bin/*</exclude-pattern>
    <exclude-pattern>*/node_modules/*</exclude-pattern>
    <exclude-pattern>*/tests/*</exclude-pattern>
</ruleset>

ในตัวอย่าง เราได้ทำสิ่งต่อไปนี้:

  • อ้างอิงชุดกฎ WordPress (จาก WPCS)
  • ไม่รวมกฎ
  • ไม่รวมบางไดเร็กทอรี

ไฟล์ชุดกฎสามารถวางในไดเร็กทอรีใดก็ตามที่คุณเรียกใช้ WPCS (โดยปกติแล้ว โปรเจ็กต์ ธีม หรือปลั๊กอินจะใช้งานได้) และอ้างอิงผ่านแฟล็ก อัปเดตแฟ ล็ก –standard ใน . profile ของคุณ เช่น:

 # มาตรฐานการเข้ารหัส WP
ส่งออก PATH=$PATH:"/path/to/wherever/wpcs/vendor/bin"
นามแฝง wpcs='phpcs --standard=codesniffer.ruleset.xml --extensions=php
นามแฝง wpcbf='phpcbf --standard=codesniffer.ruleset.xml --extensions=php

ในการตรวจสอบว่ากฎใดถูกตั้งค่าสถานะเมื่อคุณเรียกใช้ WPCS เพียงเรียกใช้ด้วยแฟล็ก -s ดังนี้:

 $ > wpcs -s /path/to/your/php/project/file.php

อะไรต่อไป?

คำแนะนำข้างต้นจะช่วยให้คุณดำเนินการตรวจสอบการปฏิบัติตามมาตรฐานเฉพาะกิจในโครงการ WordPress ของคุณได้ แต่ถ้าคุณต้องการรวมเข้ากับวงจรการพัฒนามาตรฐานของคุณ ขั้นตอนต่อไปคือการทำงานอัตโนมัติ

พิจารณารวม PHPCS เข้าใน task runner เช่น gulp หรือ grunt (โมดูล PHPCS มีให้สำหรับทั้งคู่) หรือรวมเข้ากับไพพ์ไลน์บิลด์ CI/CD ของคุณ

หากต้องการความช่วยเหลือในการพัฒนาและออกแบบเว็บ โปรดติดต่อเราวันนี้


หากคุณต้องการความช่วยเหลือ อย่าลังเลที่จะติดต่อเรา