קוד AI: יותר בעיות אבטחה ותחזוקה – ממצאי מחקר חדש
מחקר של CodeRabbit, שבחן 470 Pull Requests ב־GitHub, חושף כי קוד שנוצר בעזרת AI מכיל בממוצע 1.7 בעיות יותר מקוד אנושי, וכי קיימים בו סיכונים גבוהים יותר בתחומי אבטחה, לוגיקה ותחזוקה. לעומת זאת, קוד אנושי הצטיין בתיעוד מקיף יותר, אם כי סבל מטעויות איות תכופות. המחקר ממליץ לצוותי פיתוח לאמץ כללי בדיקה מחמירים וסקירה יסודית יותר לתוצרי AI.

הפערים בין קוד אנושי לקוד שנוצר בעזרת AI: ממצאים מדאיגים
מחקר עדכני של CodeRabbit, שבדק 470 בקשות משיכה (Pull Requests) ב־GitHub, חושף פערים משמעותיים בין קוד שנכתב בסיוע AI לבין קוד אנושי טהור. המחקר השווה 320 בקשות משיכה שנוצרו בעזרת כלי AI, לעומת 150 בקשות אנושיות – והתוצאות מדגישות סיכונים שצוותי פיתוח חייבים להכיר.
נפח גבוה יותר של בעיות בקוד AI
- קוד שנוצר עם AI מכיל פי 1.7 יותר ממצאים בממוצע בהשוואה לקוד אנושי (10.83 בעיות לבקשה לעומת 6.45 בבקשות אנושיות).
- ב־90% מהמקרים, בקוד AI נמצאו עד 26 בעיות לבקשה – יותר מכפול מהממוצע בקוד אנושי.
- חומרת הבעיות חמורה יותר: עלייה של 40% בבעיות קריטיות ו־70% בבעיות חמורות (major).
תחומים בעייתיים במיוחד
-
לוגיקה ותקינות:
- טעויות בלוגיקה עסקית הופיעו פי 2 יותר בקוד AI.
- פערים בטיפול בשגיאות ובניהול זרימת בקרה.
- סיכונים כמו התייחסויות שגויות ל־null עלו משמעותית.
-
תחזוקה וסְלִילִיוּת (קידוד) קוד:
- בעיות קריאות קוד הופיעו פי 3 יותר בקוד AI.
- חוסר עקביות בסגנון ובשמות משתנים – עלייה של כמעט 100%.
-
אבטחה:
- עלייה של 50% בממצאי אבטחה, כולל סיכונים כמו ניהול סיסמאות לקוי שהופיע כמעט פי 2 יותר.
- פגיעויות הזרקה (Injection) ואלמנטים בלתי מאובטחים עלו ב־80%.
-
ביצועים ומשאבים:
- קוד AI הראה פי 8 יותר פעולות קלט/פלט (I/O) מיותרות.
- גישה לא יעילה למסדי נתונים וצריכת משאבים גבוהה.
נקודות אור בולטות בקוד אנושי
- תיעוד טוב יותר: קוד אנושי הכיל בדרך כלל הערות מפורטות יותר והוראות ברורות.
- פחות טעויות הקשורות לבדיקות: סוגיות בדיקוּת (testability) היו נמוכות ב־25% לעומת קוד AI.
- טעויות איות היו נפוצות פי 2 בקוד אנושי (18.92 לעומת 10.77) – ככל הנראה עקב שימוש נרחב יותר בהערות.
השלכות מעשיות לצוותי פיתוח
המחקר ממליץ על מספר צעדי חובה בעבודה עם כלי AI:
- הגדרת כללים מחמירים ל־CI/CD בנושאי עיצוב (formatting), קריאות קוד ומוסכמות שמות.
- בדיקות חובה לפני מיזוג לשינויים משמעותיים בזרימת בקרה.
- יצירת רשימות תיוג (checklists) ספציפיות ל־AI לסקירת קוד.
- שימוש בכלי סקירה חיצוניים לזיהוי בעיות לוגיקה ואבטחה.
- מתן הקשר פרויקטלי למודל ה־AI – כולל אילוצים ארכיטקטוניים ודפומי קונפיגורציה.
"הערך של AI בפיתוח תוכנה אינו מוטל בספק," מסכם המחקר, "אך הממצאים מוכיחים שצוותים חייבים לבנות שכבות הגנה נוספות כדי למנוע הידרדרות באיכות הקוד ובאבטחה."