האתר הישראלי להנדסת תכנה

דף ראשי | מפת האתר | רשימת מושגים | מקורות נוספים | אודות
עריכת ביקורת לתוכנית שיטת החדר הנקי

ניתוח סטטי אוטומטי

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

הבדיקות הללו כללו מספר תחומים:

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

    הנה דוגמא לפלט שביצע הכלי LINT הנפוץ במערכות UNIX:



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

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

    עריכת ביקורת לתוכנית לתחילת הדף שיטת החדר הנקי
    ©איתן 2003. כל הזכויות שמורות למערכת המידע איתן