אינטל פרסמה את קוד המקור של ControlFlag, מערכת למידת מכונה כדי לזהות שגיאות בקוד

אינטל חשפה דרך פרסומת התפתחויות הקשורות לפרויקט המחקר ControlFlag, שנועדה ליצור מערכת למידת מכונה לשיפור איכות הקוד.

הכלי שוחרר תחת רישיון MIT והיא בולטת בכך שהיא מאפשרת, בהתבסס על מודל מאומן על כמות גדולה של קוד קיים, לזהות שגיאות וחריגות שונות בטקסטי מקור שנכתבו בשפות ברמה גבוהה כגון C/C++.

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

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

כדי להפוך את ControlFlag לזמינה יותר לקהילת פיתוח התוכנה הרחבה יותר, אינטל שמחה להכריז ש-ControlFlag היא כעת קוד פתוח וניתן לגשת אליה בכתובת https://github.com/IntelLabs/control-flag. אנו שמחים לתת למפתחים את ההזדמנות להתפתח על זה ולראות מה עוד ניתן לעשות עם הטכנולוגיה היקרה והחדשנית הזו.

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

תהליך דומה של הגדרת תבניות מתבצע עבור הקוד הנבדק, אשר מושווה לעץ החלטות התייחסות. פערים גדולים עם ענפים סמוכים מצביעים על חריגה בדפוס המאומת. המערכת גם מאפשרת לא רק לזהות שגיאה בתבנית, אלא גם להציע פתרון. לדוגמה, בעת ניתוח קטע הקוד "if (x = 7) y = x;" המערכת קבעה שהקונסטרוקציה "משתנה == מספר" משמשת בדרך כלל בהצהרה "if" כדי להשוות ערכים מספריים, כך שההתוויה "משתנה = מספר" בהצהרה "if" נגרמת כנראה משגיאת דפוס.

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

בתור ניסוי, בעת שימוש ב-ControlFlag בקוד המקור של כלי השירות cURL, לעתים קרובות מובא כדוגמה של מנתחי קוד מוכחים ואיכותיים, סטטיים חשף באג בשוגג בעת שימוש ברכיב המבנה "s-> keepon", שהיה לו סוג מספרי, אך הושווה לערך הבוליאני TRUE.

בקוד OpenSSL, בנוסף לבעיה שהוזכרה לעיל עם "(s1 == NULL) ∧ (s2 == NULL)", זוהו חריגות גם בביטויים "(-2 == rv)" שהיו לפחות א. טעות דפוס.

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

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


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי על הנתונים: AB Internet Networks 2008 SL
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.