סטנדרטים לקוד – חלק שני


בפוסט הקודם הסברתי מדוע סטנדרטים נצרכים, על סוגי סטנדרטים בPHP וכן על PHP code sniffer שתפקידו לאכוף את הסטנדרטים שמגדירים לו על הקוד.

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

חוסר אחידות ובלאגן זה רע- כולם מסכימים עם זה, אך אפשר לחשוב שהמאמץ לשמור על אחידות בין כל המפתחים ושמירה על סטנדרטים לא שווים את המאמץ.

אכן, מה יותר מתסכל מלסיים פיתוח בן כמה מאות שורות ולקבל דו”ח זועם מPHPCS על ריווחים לא נכונים ושאר ירקות?

לשמחתנו גם לזה יש פתרון, כלי למעבר על כל אותם שורות קוד שמתקן את רוב הבעיות המצויות- PHP Code Beautifier

PHPCBF לתיקון סטנדרטים

PHPCBF – PHP Code Beautifier

הסקריפט PHPCBF מגיע יחד עם PHPCS אם התקנתם בעזרת composer הוא יימצא בתיקיית bin.

ע”מ לזהות איזה שגיאות ניתנות לתיקון ע”י PHPCBF שימו לב לX המופיע ע”י חלק מהשגיאות בדו”ח של PHPCS:

שגיאות סטנדרטים

ניתן להפעיל את השיפוצניק הנחמד הזה באותו אופן שמפעילים את PHPCS:

אינטגרציה לעורך קוד

ע”מ להשאיר את כל כתיבת הקוד בבקרה שוטפת כדי לא לקבל עשרות שגיאות הרעיון הטוב ביותר הוא לקבל את הפידבק בזמן הקידוד.

יש כמובן הרבה עורכי קוד שם בחוץ, אני אתייחס לPHPStorm שבו אני משתמש.

לPHPStorm יש בצורה מובנה אפשרות להגדרת ‘משקיף’ על הקוד וע”מ להשלים את הסט כדאי להגדיר קיצור דרך ע”מ להפעיל את PHPCBF.

בדיקת סטנדרטים בעזרת Git

הסברתי בקצרה על Git hooks בפוסט הזה, גם כאן נשתמש בhook ששמו pre-commit ע”מ לוודא שכל הקבצים שנכללים בcommit עומדים בסטנדרטים הנצרכים.

זה נצרך אפילו שהגדרנו את הPHPCS בPHPStorm, מנסיוני ברגע שנכנסים לrepo הכללי כמה שגיאות של סטנדרטים החיים הופכים לסיוט לשאר המפתחים, לתקן קוד שלך זה משהו אחד, לקבל שגיאות ולתקן קוד של מישהו אחר זה כבר סיוט.

לכן חשוב להוסיף את החסם בטיחות של הpre-commit למקרי קיצון, אם מישהו יחליט להשתמש בIDE אחר שלא תומך באינטגרציה לPHPCS עדיין תהיה לנו הבקרה על הסטנדרטים.

אסביר את החלקים העיקריים פה:

בסקריפט הזה אני בודק רק קבצי PHP, למי שמעוניין בהחלט אפשר להוסיף קבצי CSS או JS

פה עוד לפני סטנדרטים משהו בסיסי יותר, לסקריפט CLI של PHP יש אפשרות לעשות ולידציה סטטית על קבצים, הכוונה היא שאם יש שגיאה כמו חוסר של ; או סוגריים חסרים תקפוץ לנו שגיאה והcommit ייכשל.תוכלו למצוא את התיאור פה.

בקוד פה אני מריץ את הפקודה בתוך container של docker, למי שלא משתמש ניתן לפשט לזה:

זה למעשה ההרצה של בדיקת הסטנדרטים על הקובץ בלופ הנוכחי, כל שגיאה מחולקת לרמות, אני רציתי להכשיל commit רק על שגיאה מעל רמת warning, לכן החלתי את האפשרות של ignore_warnings_on_exit

קיסטום סטנדרטים

גם אם משתמשים בסטנדרט מוגדר, ניתן לשנות אותו ע”מ להתאים אותו לצרכים שלנו.

זה נעשה ע”י קובץ XML בשם ruleset שבו מגדירים ביטול כללים מסויימים או החלה של חדשים.לא נראה שיש דוקומנטציה מסודרת של כל סוגי החוקים חוץ מקובץ דוגמה שנותן דוגמאות שימוש, ע”מ ללמוד באיזה כללים ניתן להשתמש צריך לעיין בsource code הקיים וללמוד ממנו, כמובן שיש גם הרבה חומר שניתן למצוא בחיפוש בgoogle.

לסיכום, לדעתי PHPCS הוא כלי פשוט אדיר 😎

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *