פתרון בעיות של תוצאות CodeQL

הושלם

יחידה זו מספקת עצות למיטוב ולפתרון בעיות בעת עבודה עם CodeQL וסריקת קוד.

מיטוב זמני ריצה של ניתוח CodeQL

קיימות כמה סיבות לכך שניתוח CodeQL עשוי להימשך זמן רב מדי:

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

מיטוב שאילתות CodeQL

בעיות ביצועים מסוימות עלולות להתעורר מתוך שאילתות מותאמות אישית. תוכל למצוא בעיות נפוצות וכיצד לפתור אותן בתיעוד של CodeQL אודות פתרון בעיות בביצועי שאילתות.

להלן נקודות חשובות שעליך לזכור בזמן שאתה עובד עם CodeQL ושפת השאילתות של QL:

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

איתור באגים של ממצאים

באפשרותך להשיג ממצאים שיעזרו לך לאתר באגים בבעיות בסריקת קוד CodeQL. שנה את init של קובץ זרימת העבודה של CodeQL והגדר את debug: true. ממצאי איתור הבאגים מועלים לזרימת העבודה ופועלים כפריט בשם debug-artifacts. הנתונים מכילים את יומני ה- CodeQL, מסדי הנתונים של CodeQL וקבצי SARIF שזרימת העבודה מפיקה.

פתרון בעיות בהרחבת CodeQL עבור VS Code

קבצי יומן הרישום של סיומת VS Code כוללים מידע מפורט שיעזור לך לפתור בעיות.

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

מסך המציג את בחירת יומני הרישום בתצוגת פלט.

הודעות שגיאה נפוצות

כדי לפתור בעיות בזרימת העבודה של CodeQL, הכר את הודעות השגיאה הנפוצות הבאות.

שגיאה: "שגיאת שרת"

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

שגיאה: "אין די דיסק" או "אין זיכרון פנוי"

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

שגיאה: 403 "המשאב אינו נגיש באמצעות שילוב" בעת שימוש ב- Dependabot

Dependabot נחשב ללא מהימן כאשר הוא מפעיל הפעלת זרימת עבודה. זרימת העבודה פועלת עם טווחים לקריאה בלבד. העלאת תוצאות סריקת קוד עבור הסתעפות מחייבת בדרך כלל שימוש security_events: write scope. עם זאת, סריקת קוד מאפשרת תמיד העלאת תוצאות כאשר pull_request מפעיל את הפעולה. עבור הסתעפויות של Dependabot, מומלץ להשתמש pull_request האירוע במקום באירוע push זה.

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

להלן דוגמה:

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

שגיאה: "העלאה SARIF נדחתה עקב הגדרת ברירת מחדל"

העלאות SARIF נחסמות כאשר הגדרת ברירת המחדל של CodeQL זמינה. שגיאה זו מתרחשת כאשר תהליך מנסה להעלות קובץ SARIF המכיל תוצאות ניתוח CodeQL למאגר עם הגדרת ברירת מחדל זמינה. השגיאה מתרחשת גם אם ההעלאה מתבצעת באמצעות REST API ו- CodeQL CLI. חסימה זו תפחת את הפוטנציאל לבלבול משתמשים כאשר מערכות מרובות מייצרות התראות דומות לסריקת קוד.

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

קריאה נוספת

לקבלת מידע נוסף אודות פתרון בעיות, עיין בתיעוד CodeQL לפתרון בעיות בסריקת קוד.