אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » אכיפה של סטנדרטים של כתיבה ב-PHP

אכיפה של סטנדרטים של כתיבה ב-PHP

רן בר-זיק ספטמבר 27, 2015 7:18 am אין תגובות

Coding Standards זו לא מילה גסה גם ב-PHP. למה זה חשוב? איך בודקים ומתקנים אוטומטית?

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

Coding Standards הוא סט של כללים וחוקים בנוגע לכתיבה נכונה של קוד. מה זאת אומרת כתיבה נכונה? כתיבה נכונה לא נוגעת להצלחה או כשלון של הקוד אלא לדרך הכתיבה שלו. למשל, הקוד הזה:

if($var == 'true') {
    doSomething();
}

יעבוד באותו אופן כמו הקוד הזה:

if( true === $var ) {
    doSomething();
}

אבל הקוד הראשון לא כתוב לפי הסטנדרטים של וורדפרס ולפיכך אם אנסה לדחוף אותו לתוך הליבה של וורדפרס, סביר להניח שלא יאשרו לי אותו.

Coding Convention הוא דבר שנראה למתכנתים צעירים, או מתכנתים שלא רגילים לתמוך במוצר לאורך זמן כמו משהו מיותר, שלא לומר טרחני. אבל אני מאוד מאמין ב-Coding Convention ואני אוכף אותו בחומרה בכל פרויקט MEAN שאני מעורב בו. השימוש בסטנדרטים גורם בטווח הארוך ליצירת קוד נקי וקריא שקל לעבוד איתו, קוד שקל לתחזק ולקרוא אותו ובטווח היותר ארוך גורם לנו לכתוב קוד טוב יותר. אם יש כמה אנשים בצוות, אז בכלל השימוש והאכיפה של סטנדרטים מחמירים גורמת לקצת פחות בלגן. במיוחד אם הצוות נמצא במקומות גיאוגרפיים שונים.

אבל האמת היא שבפרויקטים של PHP אני מתייחס ל-coding convention באופן יותר ליברלי וחבל. אין שום סיבה שלא לאכוף את ה-coding convention של PHP על הפרויקטים שאני כותב ואם אני כותב תוספים לוורדפרס (למשל), אין שום סיבה שלא להשתמש ב WordPress Coding Convention.

אז איך עושים את זה? הדרך הפשוטה היא פשוט לקרוא את המדריך ואז לעבור על הקוד שלך. זו דרך כמובן שמתאימה לימי הביניים. אנחנו קצת יותר מתוחכמים. הדרך הנכונה היא להשתמש בכלים שמבצעים אנליזה סטטית של הקוד שזה השם הרשמי של התהליך של בדיקת הקוד לפי הסטנדרטים שאנחנו רוצים שהוא יהיה. השם הלא רשמי הוא lint שהוא (נשבע לכם) הוצאת מוך מהפופיק.

בדיקת קוד PHP נעשית באמצעות PHP CodeSniffer. ההתקנה נעשית באמצעות PEAR באופן הבא:

pear install PHP_CodeSniffer

אם אין לכם PEAR, שווה להתקין אותו. הוא עובד גם בחלונות המשוקצת עד כמה שאני זוכר. בלינוקס ההתקנה היא פשוטה מאוד. פשוט הקליקו את השורה שלעיל וזהו. אחרי ההתקנה (בין אם בחלונות ובין אם בלינוקס), הבדיקה היא פשוטה:

$ phpcs -i
The installed coding standards are PHPCS, Squiz, PSR2, MySource, PEAR, Zend and PSR1

אם אחרי שאתם מקלידים phpcs -i אתם מקבלים את השורה השניה, ההתקנה הצליחה. מה שבעצם השורה אומרת לנו היא רשימת קונבנציות הקוד שאנו יכולים לבדוק לפיהן. כאשר יש כמה קונבנציות קוד של ספריות שונות. אם אני רוצה לבדוק לפי הקונבנציה של ZEND, אז אני אריץ משהו כזה בספרית הפרויקט שלי:

phpcs --standard=Zend ./**/*.php

זה אומר לבצע בדיקות על כל קבצי ה-PHP בתיקית הפרויקט לפי הסטנדרטים של זנד. אם הכל תקין, מייד אקבל את כל השגיאות לפי כל הקבצים – למשל:

FILE: /var/www/html/github/wp-notice/tests/bootstrap.php
----------------------------------------------------------------------
FOUND 6 ERRORS AFFECTING 5 LINES
----------------------------------------------------------------------
  2 | ERROR | [ ] Missing file doc comment
  4 | ERROR | [x] First condition of a multi-line IF statement must
    |       |     directly follow the opening parenthesis
 19 | ERROR | [ ] Missing function doc comment
 19 | ERROR | [ ] Function name "_manually_load_plugin" is invalid;
    |       |     only private methods should be prefixed with an
    |       |     underscore
 21 | ERROR | [x] File is being conditionally included; use "include"
    |       |     instead
 22 | ERROR | [x] File is being conditionally included; use "include"
    |       |     instead
----------------------------------------------------------------------
PHPCBF CAN FIX THE 3 MARKED SNIFF VIOLATIONS AUTOMATICALLY
----------------------------------------------------------------------

אפשר לראות שיש הסבר על כל "שגיאה". ניתן לתקן את השגיאות ידנית (יש גם אינטגרציה טובה ל-IDE שונים) ואפשר גם לתקן חלק מהתקלות באופן אוטומטי על ידי הרצה של phpcbf באופן הבא:

phpcbf --standard=Zend ./**/*.php

ואם אני רוצה לבדוק לפי סטנדרטים של וורדפרס? אין קל מזה! פשוט צריך להתקין תוסף ל-phpcs עבור הסטנדרטים של וורדפרס. ההתקנה היא פשוטה ביותר!

נכנסים לספריה כלשהי (לא temp) ועושים clone לפרויקט wpcs:

git clone -b master https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git wpcs

אומרים ל-phpcs שהתוסף הזה קיים ככה:

phpcs --config-set installed_paths /path/to/wpcs

כמובן שצריך לשים את הנתיב שבו התקנתם את ה-wpcs. יש מצב שתצטרכו להשתמש ב-sudo.
אם הכל תקין, כשתכתבו phpcs -i תקבלו את הטקסט הבא:

$ phpcs -i
The installed coding standards are PHPCS, Squiz, PSR2, MySource, PEAR, Zend, PSR1, WordPress, WordPress-VIP, WordPress-Core, WordPress-Docs and WordPress-Extra

עכשיו תוכלו להשתמש בסטנדרטים של WordPress:

phpcs --standard=WordPress ./**/*.php

ו.. זהו! הבדיקות יהיו לפי הסטנדרטים של וורדפרס. עכשיו רק נותר לתקן…

איך אני עושה שהבדיקות ירוצו אוטומטית? איך אני בודק קבצים שהם לא PHP? על זה אכתוב במאמרים הבאים.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
PHP וורדפרס

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד