CodeMender מספק שלושה מצבי סריקה שונים באמצעות הפקודה cm find.
כל מצב מיועד לשלב ספציפי במחזור החיים של פיתוח התוכנה, ומשלב בין מהירות, היקף ועומק.
השוואה בין מצבי חיפוש
בטבלה הבאה מוצגת השוואה בין שלושת cm find מצבי הסריקה:
| מצב | פקודה | היקף היעד | זמן ריצה אופייני | מתאים במיוחד בשביל |
|---|---|---|---|---|
| סריקה רגילה | cm find PATH |
ספרייה שצוינה | זמן ריצה בינוני | גילוי מפתחים מקומיים, בדיקות מהירות, ביקורות ראשוניות |
| סריקת השוואה | cm find PATH --diff[=REF] |
קבצים ששונו בתוספת קבצים תלויים (כמו קבצים שקוראים לפונקציות וקבצים שנקראים על ידי פונקציות) | זמן ריצה מהיר | צינורות עיבוד נתונים של CI/CD לבקשות משיכה (GitHub Actions, Cloud Build), ווים לפני ביצוע commit |
| סריקה מקיפה | cm find PATH --deep |
כל המאגר | זמן ריצה ארוך יותר | ביקורות מתוזמנות, מוכנות להשקה, אישורי תאימות (SOC 2, ISO) |
סריקה רגילה (ברירת מחדל)
סריקה רגילה היא מצב ברירת המחדל כשמריצים את הפקודה cm find בלי לספק דגלים נוספים של סריקה. הוא מריץ סריקה אוטונומית של סשן יחיד בספריית היעד שצוינה. במהלך הסריקה, CodeMender מגלה קובצי מקור, נותן להם עדיפות על סמך דפוסי נקודות חולשה, מבצע ניתוח אבטחה ראשוני ומדווח על נקודות חולשה פוטנציאליות שמקובצות לפי חומרה וסוג.
בדוגמאות הבאות מוסבר איך להריץ סריקה רגילה בספריית יעד:
# Scan a directory using the default model
cm find ./src
# Scan with a specific Gemini model
cm find ./src --model gemini-3.8-flash
נקודות חוזק
סריקה רגילה פועלת ללא הגדרה וללא דגלים או פרמטרים נוספים. הוא מאזן בין מהירות וכיסוי עם זמן ריצה מתון, ומשתמש במינימום טוקנים וחישובים, מה שהופך אותו לחסכוני לפיתוח יומיומי.
הפשרות והמגבלות
לסריקה רגילה יש יכולת שליפה נמוכה יותר בבסיסי קוד גדולים, והיא לא יכולה לסרוק כל קובץ במאגרי מידע גדולים של ארגונים עם כמה חבילות, כי היא פועלת בהקשר של סשן יחיד. בנוסף, היא מתמקדת בעיקר בדפוסים מקומיים בקבצים ספציפיים, מה שמגביל את הניתוח של חבילות שונות ועלול לגרום לכך שהיא לא תזהה פגיעויות שקיימות בחבילות מרוחקות.
מתי משתמשים
כדאי להשתמש בסריקה רגילה בתרחישים הבאים:
- כדי לקבל משוב מהיר במהלך פיתוח מקומי, מריצים סריקה במחשב המקומי לפני שמבצעים שינויים.
- בודקים מאגר חדש ששוכפל או פרויקט קטן כדי לקבל הערכה ראשונית של מצב האבטחה שלו.
- בודקים ספריית משנה או מודול ספציפיים כשחוקרים בעיה פוטנציאלית.
סריקת השוואה
סריקת ההבדלים מבצעת ניתוח של ההבדלים ב-Git עבור תהליכי עבודה של בקשות משיכה וצינורות CI/CD. היא בודקת קבצים ששונו ונוספו, ומתמקדת בטווחים המדויקים של השורות (חלקים של ההבדלים) ששונו. בנוסף לבדיקת השורות ששונו, הכלי מבצע ניתוח השפעה כדי לגלות קבצים במאגר שלא נגעו בהם, שקוראים לפונקציות ולסמלים ששונו, מייבאים אותם או תלויים בהם. כך אפשר לוודא ששינויים שמשנים חוזים או חתימות של פונקציות בקובץ אחד לא יוצרים נקודות חולשה בקבצים תלויים.
במהלך הסריקה, CodeMender מבודד באופן אוטומטי פגיעויות קיימות בקוד שלא נגעו בו, כדי שבעיות קודמות לא יגרמו לכך שהסריקה תיכשל או תחסום את בקשת המשיכה. לאחר מכן, המערכת מעריכה את הממצאים בהתאם למדיניות --fail-on ומציגה את התוצאות בפורמט טבלה, JSON או SARIF v2.1.0.
בדוגמאות הבאות מוסבר איך להריץ סריקת השוואה מול שינויים בעותק עבודה, שינויים שהועברו להמתנה או ענף יעד:
# Scan working copy changes versus HEAD
cm find . --diff
# Scan staged changes only (pre-commit)
cm find . --diff --staged
# Scan a pull request branch against the main branch in CI/CD
cm find . --diff=origin/main --format=sarif --output=results.sarif \
--fail-on=CRITICAL,HIGH
למידע על הגדרות של צינורות עיבוד נתונים מקצה לקצה, ראו שילוב עם CI/CD.
נקודות חוזק
סריקת ההבדלים היא מהירה ודטרמיניסטית, ובדרך כלל מסתיימת תוך פחות מ-2 דקות, כדי לשמור על זמני ריצה קצרים של צינורות CI/CD. בניגוד לסורקי השוואה שבודקים רק שורות שהשתנו, --diff בודק את הקשרים בין המתקשר לבין מי שהתקשרו אליו כדי לזהות רגרסיות אבטחה והפרות חוזה בין קבצים. הסריקה חוסמת בקשות למשיכת שינויים רק בבעיות שנוצרו או שהושפעו מהשינויים, וכך נמנעים דוחות עמוסים מדי וכשלי בנייה מיותרים. סריקת ההבדלים יוצרת גם קובץ SARIF בגרסה 2.1.0 לשילוב ישיר בהערות של סריקת קוד ב-GitHub ובמרכזי הבקרה של Cloud Build.
הפשרות והמגבלות
סריקת השוואה מנתחת רק קוד באזור המושפע של בקשת משיכה, ולא מוצאת נקודות חולשה קיימות בחלקים שלא נגעו בהם במאגר. נדרש גם מאגר Git עם גישה להפניה הבסיסית של היעד.
מתי משתמשים
כדאי להשתמש בסריקת השוואה בתרחישים הבאים:
- הפעלת בדיקות אוטומטיות בכל בקשת משיכה בצינורות CI/CD, כמו GitHub Actions, Cloud Build, GitLab CI או Jenkins.
- לפני שמעלים קוד למאגר המרוחק, צריך לוודא שהשינויים המקומיים נקיים ב-pre-commit או ב-pre-push hooks.
- מוודאים שמיזוגים בין ענפי גרסאות לא גורמים לרגרסיות.
סריקה מקיפה
סריקה מקיפה היא מצב סריקה ממצה שנועד לביצוע ביקורות אבטחה מקיפות בכל המאגר. הכלי מבצע ביקורת בקובצי מקור בכל המאגר בו-זמנית באמצעות עובדים מקבילים (מוגדר באמצעות --deep-workers, שמוגדר כברירת מחדל ל-8 ותומך בטווח של 1 עד 16). כשהכלי מוצא ממצאים פוטנציאליים, הוא מאמת אותם ומשווה אותם להקשר של הקוד שמסביב כדי לסנן תוצאות חיוביות שגויות לפני שהוא מדווח על התוצאות.
בדוגמאות הבאות מוסבר איך להריץ סריקה מעמיקה במאגר:
# Run an exhaustive deep scan across the entire repository
cm find . --deep
# Tune concurrency and use the cyber-specialized security model
cm find . --deep --deep-workers=8 --model=gemini-3.8-flash-cyber
נקודות חוזק
סריקה מעמיקה מספקת יכולת היזכרות גבוהה וגילוי מקיף של נקודות חולשה בבסיסי קוד גדולים של ארגונים. היא עדיפה על סריקות של סשן יחיד, ומשתמשת באימות אוטומטי כדי לשמור על רמת דיוק גבוהה. הוא תומך בכמה שפות ופועל בכל השפות שנתמכות על ידי Gemini, בלי לדרוש קומפיילרים ספציפיים לשפה, הגדרות בנייה או קובצי דקדוק. בנוסף, הוא מבצע אופטימיזציה של השימוש במשאבים על ידי התמקדות בניתוח של קוד ייצור וצמצום צריכת המחשוב והטוקנים בקבצים שאינם קבצי ייצור.
הפשרות והמגבלות
אל תשתמשו בסריקה מעמיקה כבדיקה סינכרונית שחוסמת בקשות משיכה. סריקות מעמיקות מבצעות ניתוח יסודי בכל המאגר. לכן, הן דורשות זמן ריצה ארוך יותר והוצאה גבוהה יותר של טוקנים בהשוואה לסריקות רגילות או לסריקות של הבדלים.
מתי משתמשים
כדאי להשתמש בסריקה מעמיקה בתרחישים הבאים:
- הפעלת ביקורות אבטחה מתוזמנות לפי לוח זמנים יומי או שבועי בכל מאגרי הייצור.
- מומלץ לבצע ביקורת אבטחה מלאה לפני שחרור גרסאות ראשיות או פריסות בסביבת ייצור.
- יצירת ראיות לביקורת לצורך עמידה בדרישות של SOC 2, ISO 27001, FedRAMP או PCI-DSS, וביקורות אישורים.
- כשמצרפים בסיס קוד חדש ל-CodeMender, כדאי ליצור פרופיל אבטחה ראשוני.
בחירת מצב חיפוש
הטבלה הבאה תעזור לכם לבחור את מצב הסריקה המתאים לתהליך העבודה שלכם:
| תהליך עבודה או סביבה | תרחיש שימוש ויעד | מצב מומלץ | פקודה לדוגמה |
|---|---|---|---|
| טרמינל מקומי | גילוי מהיר או בדיקת מהימנות של מודול ספציפי | סריקה רגילה | cm find ./src |
| טרמינל מקומי | בדיקה לפני ביצוע (pre-commit) של שינויים שהועברו לאזור ההכנה (staging) לפני הדחיפה | סריקת השוואה | cm find . --diff --staged |
| צינור עיבוד נתונים של CI/CD | שליטה אוטומטית בבקשות משיכה בקוד ובמתקשרים שהשתנו | סריקת השוואה |
cm find . --diff=origin/main --fail-on=CRITICAL,HIGH
|
| צינור עיבוד נתונים או ביקורת מתוזמנים | ביקורות יומיות, שערים לפני פרסום, תאימות ל-SOC 2 | סריקה מקיפה | cm find . --deep --deep-workers=8 |
הפניה להגדרות flag של פקודות לפי מצב
בטבלאות הבאות מתוארים הפלאגים של שורת הפקודה שנתמכים בכל מצב סריקה.
מאפיינים משותפים (בכל המצבים)
הדגלים הבאים חלים על כל מצבי הסריקה של cm find:
| דגל | ברירת מחדל | תיאור |
|---|---|---|
-c, --context TEXT |
"" |
הקשר נוסף שיעזור לסוכן הסריקה, כמו הערות על הארכיטקטורה. |
--model MODEL_NAME |
gemini-3.8-flash |
מודל Gemini לשימוש (gemini-3.8-flash,
gemini-3.8-flash-cyber).
|
-y, --yes |
false |
דילוג על כל ההנחיות האינטראקטיביות לאישור. |
--unrestricted |
false |
משביתים את ארגז החול של מערכת הקבצים. |
הבדלים בהתראות של סריקה
הדגלים הבאים מגדירים סריקות של cm find --diff:
| דגל | ברירת מחדל | תיאור |
|---|---|---|
--diff[=REF] |
מושבת |
מפעילים את מצב ההשוואה מול קובץ העזר של היעד, למשל
origin/main או HEAD~1. Without
REF, compares against HEAD. אי אפשר להשתמש ב---deep.
|
--staged |
מושבת |
השוואת היקף השינויים רק לאינדקס בשלב ההכנה (git diff --cached).
נדרשת ההרשאה --diff.
|
--diff-depth DEPTH |
1 |
עומק המעבר לניתוח ההשפעה (1 עד 3, ברירת מחדל: 1-hop). |
--diff-workers COUNT |
4 |
מספר העובדים בו-זמנית למשימות של ביקורת בקשות משיכה (1 עד 16). |
--diff-max-neighbors COUNT |
10 |
המספר המקסימלי של קבצים של המתקשר או של מקבל השיחה שייבדקו. |
--fail-on SEVERITIES |
CRITICAL,HIGH |
רמות חומרה מופרדות בפסיקים שגורמות ל-cm find לצאת עם
קוד 1.
|
--fail-on-truncation |
מושבת | יציאה עם קוד 1 אם גילוי השכנים חורג מהמגבלה. |
--format FORMAT |
table |
פורמט הפלט: table, json או sarif.
|
--output FILE |
פלט רגיל | כתיבת הדוח לקובץ במקום לפלט הסטנדרטי. |
התראות בסריקה מקיפה
הדגלים הבאים מגדירים סריקות של cm find --deep:
| דגל | ברירת מחדל | תיאור |
|---|---|---|
--deep |
false |
הפעלה של סריקה עמוקה ומקיפה בכל המאגר. אי אפשר להשתמש בו עם --diff.
|
--deep-workers COUNT |
8 |
מספר העובדים בו-זמנית לסריקה מעמיקה (1 עד 16). |