תוכנה

תקציר המאמר

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

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

אנחנו פיתחנו אלגוריתם לקירוב גרף קריאות נאות, והוא מספק דיוק ויעילות לחישוב גם בתוכניות גדולות. תכונה חשובה נוספת של האלגוריתם שלנו – הוא מנוסח כך שאפשר להפעיל אותו על שפות תכנות שונות (כולל שפות דינמיות).

תוצאות אמפיריות מניסויים שערכנו על פרויקטים מהתעשייה הכתובים בשפת פייתון ו־C# מראים כי האלגוריתם מעשי ומתאים למגוון רחב של שימושים.

המאמר מתבסס על עבודת המאסטר של בר מקובצקי שנעשתה בהנחייתו של פרופ' טישברוביץ, בעזרתו של ד"ר אהרון עבדי ובהשתתפותו של רון שמר.

לקריאת המאמר המלא לחץ כאן