CodeMender מספק שלושה מצבי סריקה שונים באמצעות הפקודה cm find.
כל מצב מיועד לשלב ספציפי במחזור החיים של פיתוח התוכנה, תוך איזון בין מהירות, היקף ועומק.
השוואה בין מצבי חיפוש
בטבלה הבאה מוצגת השוואה בין שלושת cm find מצבי הסריקה:
| מצב | פקודה | היקף היעד | זמן ריצה אופייני | מתאים במיוחד בשביל |
|---|---|---|---|---|
| סריקה רגילה | cm find PATH |
ספרייה שצוינה | זמן ריצה בינוני | גילוי מפתחים מקומיים, בדיקות מהירות, בדיקות גישוש |
| סריקת השוואה | cm find PATH --diff[=REF] |
קבצים ששונו בתוספת קבצים תלויים (כמו המתקשרים והנמענים) | זמן ריצה מהיר | צינורות עיבוד נתונים של CI/CD לבקשות משיכה (GitHub Actions, Cloud Build), הוקים לפני ביצוע שינויים (pre-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
נקודות חוזק
סריקה רגילה פועלת ללא הגדרה וללא דגלים או פרמטרים נוספים. הוא מאזן בין מהירות וכיסוי עם זמן ריצה מתון, ומשתמש במינימום טוקנים ומשאבי מחשוב, כך שהוא חסכוני לפיתוח יומיומי.
פשרות ומגבלות
בסריקה רגילה, יכולת השליפה נמוכה יותר בבסיסי קוד גדולים, ויכול להיות שהיא לא תבדוק כל קובץ במאגרים ארגוניים גדולים עם כמה חבילות, כי היא פועלת בהקשר של סשן אחד. הוא גם מתמקד בעיקר בדפוסים מקומיים בתוך קבצים ספציפיים, מה שמגביל את הניתוח של חבילות שונות ועלול לפספס נקודות חולשה שמשתרעות על פני חבילות מרוחקות.
מתי משתמשים
כדאי להשתמש בסריקה רגילה בתרחישים הבאים:
- כדי לקבל משוב מהיר במהלך הפיתוח המקומי, כדאי להריץ סריקה במחשב המקומי לפני ששומרים את השינויים.
- לבדוק מאגר ששוכפל לאחרונה או פרויקט קטן כדי להעריך את מצב האבטחה שלו.
- בודקים ספריית משנה או מודול ספציפיים כשחוקרים בעיה פוטנציאלית.
סריקת השוואה
בסריקת diff מתבצע ניתוח של Git diff לתהליכי עבודה של בקשות משיכה ולצינורות עיבוד נתונים של CI/CD, על ידי בדיקה של קבצים ששונו ונוספו, תוך התמקדות בטווחי השורות המדויקים (diff hunks) שהשתנו. בנוסף לבדיקת השורות ששונו, הכלי מבצע ניתוח השפעה כדי לגלות קבצים במאגר שלא נגעו בהם, שקוראים לפונקציות ולסמלים ששונו, מייבאים אותם או תלויים בהם. כך אפשר לוודא ששינויים שמשנים חוזים או חתימות של פונקציות בקובץ אחד לא יוצרים נקודות חולשה בקבצים תלויים.
במהלך הסריקה, CodeMender מבודד באופן אוטומטי פגיעויות קיימות בקוד שלא נגעו בו, כדי שבעיות קודמות לא יגרמו לכך שהסריקה תיכשל או תחסום את בקשת המשיכה. לאחר מכן, המערכת מעריכה את הממצאים בהתאם למדיניות --fail-on ומציגה את התוצאות בפורמט טבלה, JSON או SARIF v2.1.0.
בדוגמאות הבאות מוסבר איך להריץ סריקת diff על שינויים בעותק העבודה, שינויים בשלב ה-staging או ענף יעד:
# 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.
נקודות חוזק
סריקת diff היא מהירה ודטרמיניסטית, ובדרך כלל מסתיימת תוך פחות מ-2 דקות כדי שזמני הריצה של צינור עיבוד הנתונים של CI/CD יהיו קצרים. בניגוד לסורקי השוואה שבודקים רק שורות שהשתנו, --diff בודק את הקשרים בין המתקשר לבין מי שהתקשרו אליו כדי לזהות רגרסיות אבטחה והפרות חוזה בין קבצים. הסריקה לא מציגה ממצאים בקוד שלא השתנה, ולכן היא חוסמת רק בקשות משיכה שקשורות לבעיות שנוצרו או הושפעו מהשינויים. כך נמנעים דוחות רועשים וכשלים מיותרים ב-build. סריקת ההבדלים יוצרת גם קובץ SARIF בגרסה 2.1.0 לשילוב ישיר בהערות של סריקת קוד ב-GitHub ובמרכזי הבקרה של Cloud Build.
הפשרות והמגבלות
סריקת השוואה מנתחת רק קוד באזור המושפע של בקשת משיכה, ולא מוצאת נקודות חולשה קיימות בחלקים שלא נגעו בהם במאגר. בנוסף, צריך מאגר Git עם גישה להפניה הבסיסית של היעד.
מתי משתמשים
כדאי להשתמש בסריקת diff בתרחישים הבאים:
- הפעלת בדיקות אוטומטיות בכל בקשת משיכה בצינורות CI/CD, כמו GitHub Actions, Cloud Build, GitLab CI או Jenkins.
- לפני שמעבירים קוד למאגר המרוחק, צריך לוודא שהשינויים המקומיים נקיים ב-hooks של pre-commit או pre-push.
- מוודאים שמיזוגים בין ענפי גרסאות לא גורמים לרגרסיות.
סריקה מקיפה
סריקה מקיפה היא מצב סריקה ממצה שנועד לביצוע ביקורות אבטחה מקיפות בכל המאגר. הכלי מבצע ביקורת בקובצי מקור בכל המאגר בו-זמנית באמצעות עובדים מקבילים (מוגדר באמצעות --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, בלי קשר לפלטפורמה, בלי צורך בקומפיילרים, בהגדרות build או בקובצי דקדוק ספציפיים לשפה. בנוסף, הוא מבצע אופטימיזציה של השימוש במשאבים על ידי התמקדות בניתוח של קוד ייצור וצמצום צריכת המחשוב והטוקנים בקבצים שאינם קבצי ייצור.
הפשרות והמגבלות
אל תשתמשו בסריקה מעמיקה כבדיקה סינכרונית שחוסמת בקשות משיכה. בסריקות מעמיקות מתבצע ניתוח יסודי בכל המאגר. לכן, נדרש זמן ריצה ארוך יותר ועלות גבוהה יותר בטוקנים מאשר בסריקות רגילות או בסריקות diff.
מתי משתמשים
כדאי להשתמש בסריקה מעמיקה בתרחישים הבאים:
- הפעלת ביקורות אבטחה מתוזמנות לפי לוח זמנים יומי או שבועי בכל מאגרי הייצור.
- בצעו בדיקת אבטחה מלאה טרום-השקה לפני השקת הגרסה הראשית או פריסה בסביבת הייצור.
- יצירת ראיות לביקורת לצורך עמידה בדרישות של SOC 2, ISO 27001, FedRAMP או PCI-DSS, וביקורות אישורים.
- כשמצרפים בסיס קוד חדש ל-CodeMender, כדאי ליצור פרופיל אבטחה ראשוני.
בחירת מצב חיפוש
אתם יכולים להיעזר בטבלה הבאה כדי לבחור את מצב הסריקה שמתאים לתהליך העבודה שלכם:
| תהליך עבודה או סביבה | תרחיש שימוש ויעד | מצב מומלץ | פקודה לדוגמה |
|---|---|---|---|
| טרמינל מקומי | גילוי מהיר או בדיקת הבנה של מודול ספציפי | סריקה רגילה | cm find ./src |
| טרמינל מקומי | בדיקה לפני ביצוע שינויים בשלבים לפני דחיפה | סריקת השוואה | 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 |
משביתים את ארגז החול של מערכת הקבצים. |
דגלי סריקה של Diff
הדגלים הבאים מגדירים סריקות של 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, ברירת המחדל: דילוג אחד). |
--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 |
פלט רגיל | כתיבת הדוח בקובץ במקום בפלט סטנדרטי (stdout). |
התראות בסריקה מקיפה
הדגלים הבאים מגדירים סריקות של cm find --deep:
| דגל | ברירת מחדל | תיאור |
|---|---|---|
--deep |
false |
הפעלת סריקה עמוקה ומקיפה בכל המאגר. אי אפשר להשתמש בו עם --diff.
|
--deep-workers COUNT |
8 |
מספר העובדים בו-זמנית לסריקה מעמיקה (1 עד 16). |