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

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

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

* חשוב מאוד לציין כי כיום אין תחליף לביקורת קוד הנעשית על ידי מפתח בכיר \ בעל נסיון שיסקור את הקוד על פני כל כלי אוטומציה כזה או אחר. מי יודע, אולי בעתיד שנושא ה-AI יתפתח משפט זה כבר יהיה פחות רלוונטי.

שימו לב להבדל בין קוד לא תקין שהקומפיילר יכול לתפוס (בד"כ שגיאות סינטקס וחריגות) לבין קוד לא תקין שהקומפיילר לא יתפוס וזה יכלול:

– קוד שלא עונה על הדרישות

– קוד משוכפל

– מימוש אלגוריתם שגוי

– מבניות לא נכונה

– קוד לא יעיל \ מסורבל

– ועוד…

ישנם מספר לא קטן של כלי חקירה אוטומטיים כאלו (Code Review Tools) שיכולים בזמן כתיבת שורות הקוד כבר להתריע בפני בעיות שהקומפיילר לא יתריע בפניהם, שביניהם: Collaborator , Gerrit , Codebrag , Codestriker , Rhodecode ועוד…

בפוסט זה כאמור אסקור כלי אחד פופולרי מאוד בשם SonalLint

ה-SonarLint הינה הרחבה (Extension) שיכולה להיות מותקנת מעל כל ה-IDEs הפופולרים בימינו, וזה כולל את ה-Eclipse, IntelliJ, Visual Studio, VSCode, Atom , זהו כלי הנכתב כקוד פתוח, לשימוש חופשי לכל מפתח והוא כולל בתוכו כמה פיצ'רים:

Bug detection – זיהוי של באגים או שגיאות בקוד שלכם (כפי שנרשם למעלה)

Instant feedback – בזמן כתיבת הקוד, ה-SonarLink כבר מתריע בפני בעיות, הכי מוקדם שיש

Know what to do – ה-SonarLint יודע להצביע בדיוק על הבעיה שלכם בקוד וכן להציע פתרונות חלופיים

Learn from your mistakes – ה-SonarLint כולל בתוכו מאגר עשיר של דוקומנטציה לבעיות שונות

Uncover old issues – ניתן לראות ב-SonarLint באגים \ בעיות שונות שקרו בעבר

 

התקנה:

התקנת ההרחבה של SonarLint היא למעשה כמו כל התקנה של כל הרחבה ב-IDE, בפוסט זה אראה דוגמא של עבודה מעל ה-Eclipse.

יש להיכנס ל-Eclipse Marketplace ושם לחפש את SonarLint

 

השלבים הבאים הם פשוט פעולות של Next… Next וכו'

 

 

אופן העבודה עם SonarLint:

למעשה לאחר שהתקנו את ההרחבה, כעת בכל פעם שנכתוב את הקוד, במידה והוא לא יהיה תקין לפי אוסף של חוקים קבועים מראש, ה-SonarLint יציג לנו קו כחול מתחת לקוד הבעייתי.

כמו כן, אנו יכולים לעלות על שם המחלקה תחת ה-Package Explorer ללחוץ מקש ימני של העכבר ולבחור את תפריט ה-SonarLint ומשם לבחור את Analyze , זוהי פעולה שתסרוק את כל הקוד שלכם בקובץ זה, ניתן להפעיל את אותה פעולה על ה-Package וכן על ה-Java Project

 

וזהו הדוח שSonarLint יצור לכם:

 

 

להלן כמה דוגמאות של בעיות תכנות שה-SonarLint יתריע בפנינו:

שגיאה קלאסית בפיתוח היא להכניס לתוך ה-if השוואה של משתנה בוליאני שכבר מאותחל ב-true/false כך שכל הזמן הוא יכנס או לא יכנס לתנאי

וזה יהיה הפתרון ש-SonarLinkt יציע:

 

ונגיד שתיקנו את זה, ונכניס הפעם תנאי "אמיתי" אל תוך ה-if , בתצורה הזו הוא יתריע בפנינו שעדיף להכניס את התוכן של if אל תוך סוגריים מסולסים:

 

בדרך כלל לא כדאי לנו להשתמש בהדפסה ל-Console אלא לדווח את ההודעה ל-logger:

 

וזה יהיה הפתרון ש-SonarLinkt יציע:

 

SonarLint פעול גם בהקשר של Naming Convention , כך למשל:

וזה יהיה הפתרון ש-SonarLinkt יציע:

 

אם כך, ראינו כיההרחבה הזו מאפשרת לנו להתעסק בקידוד נטו, היא מלמדת אותנו גם להיות מתכנתים טובים יותר, על פי ה-RoadMap שלהם באתר , מפתחי ההרחבה מתכוונים להוסיף חוקים נוספים לכלי וכן לתמוך בהתממשקות ישירה אל מול פרוייקטים נוספים בקהילה של Sonar כמו ה-SonarQube וה-SonarCloud

 

 

השאר הערה\הודעה