גרסת הערכה. כל התכונות שלהלן זמינות במהלך תקופת הניסיון החינמית של 14 ימים. לאחר תקופת הניסיון מפתח רישיון זמין לפי בקשה, מונפק אוטומטית, ומפתח יכול להפעיל או להגביל תכונות בודדות לכל משתמש. בקשת רישיון →
כשבינה מלאכותית כתבה את הבדיקות
כיסוי מול חבילת בדיקות שנוצרה אוטומטית
הסקירה מציגה את הטיעון הכללי. כאן הוא מוצב מול רשימת היכולות עצמה, משום שחבילת בדיקות שנוצרה אוטומטית נכשלת בתבנית אופיינית — כל שורה נגועה, מחצית ההחלטות מעולם לא נלקחו, וכמה פונקציות שמופיעות בכותרות הבדיקות אך מעולם לא נקראו בפועל — וחמישה מן הדברים שלהלן הם מה שהופך את התבנית הזו לגלויה.
- כיסוי הסתעפויות ו-MC/DC, יחד עם החיווי לכל ענף ולכל החלטה, מפריד בין השורה רצה לבין ההחלטה נבחנה. חבילה שהולכת רק במסלול הנעים נקראת כמעט 100% בשורות וכמעט 50% בהסתעפויות, והפער הזה הוא הממצא. הרצת בדיקות ירוקה אינה מראה ממנו דבר.
- הציון המשוקלל הוא ממוצע הרמוני, ולכן מדד חזק אינו יכול להסתיר מדד חלש — וזו בדיוק החשבונאות שחבילה שנוצרה אוטומטית זקוקה לה. מיצוע המספר של השורות עם המספר של ההסתעפויות היה קובר את המספר היחיד ששווה להסתכל עליו.
- אזהרות קוד מת פותחות רשומה בלוח Problems לכל פונקציה שיש לה שורות מדידות וכיסוי אפס. חבילה שמזכירה פונקציה בכותרת הבדיקה ולעולם אינה מגיעה אליה לא נכשלת בשום מקום אחר.
- כיסוי diff מול רפרנס בסיס של git מצמצם את כל האמור לשורות שהשתנו זה עתה — לקוד שאישרתם היום אחר הצהריים, ולא לממוצע של כל חיי המאגר, שאיתו חבילה גדולה וקיימת תמשיך להיראות בריאה בשלווה גמורה.
- Copy Uncovered Lines מפיק בדיוק את מה שמעולם לא רץ, כ-Markdown — כלומר משהו שמדביקים ישר בחזרה לאותו עוזר שכתב את החבילה מלכתחילה.
שום דבר מכל אלה אינו קורא בדיקה ושופט אותה, ואין להבין דבר מכאן כטענה כזו: בדיקה בלי שום קביעה כלל עדיין מכסה כל שורה שהיא נוגעת בה. מה שנמדד כאן הוא החלק שסוקר אינו יכול להחזיק בראשו — איזה קוד מעולם לא רץ.
ייחודי להרחבה הזו
כיסוי השורות שלכם אומר 100%. 312 בייטים מהקובץ הבינארי שלכם מעולם לא רצו.
כל מדד אחר כאן נמדד מהמקור: לאבזר את הקוד, להריץ את הבנייה המאובזרת, לספור מה הופעל. כיסוי קוד אובייקט מודד משהו שאף כלי מבוסס-מקור אינו יכול להגיע אליו — כמה מהקובץ הבינארי שנבנה באמת רץ, בבייטים של הוראות, על ידי התבוננות בזרם ההוראות. מהדר פולט קוד שאף שורה במקור שלכם אינה אחראית לו: בדיקות גבולות של מערכים, טבלאות קפיצה של switch, שפיכת אוגרים, שגרות עזר של זמן ריצה לחילוק או לנקודה צפה. שום דבר מכך אינו מופיע במקור שלכם, ולכן שום כלי מבוסס-מקור — כולל ההרחבה הזו, לגבי כל מדד אחר שהיא קוראת — אינו יכול לומר אם זה רץ. זהו גם המדד היחיד כאן שעונה על השאלה האם זה מכסה אסמבלי?, שכן אסמבלי שנכתב ביד לעולם אינו מאובזר.
DO-178C מכנה זאת במפורש: ברמה A זה נדרש בנוסף ל-MC/DC. אף הרחבת VS Code אחרת אינה קוראת את זה. איך משיגים את זה מיעד מוטמע →
יכולות
ליבה
- תצוגת הכיסוי של כל קובץ שנמדד, סרגל הסקירה ו-Annotated Source; בשוליים של העורך עצמו, כברירת מחדל, רק מה שראוי לסימון — פסי MC/DC, משולשי „מאז ההרצה האחרונה“, נקודות של שורות שנערכו — עם פסים על שורות לא מכוסות בלבד או מפת חום של מספרי פגיעות במרחק הגדרה אחת.
- כיסוי לכל שורה של הצהרות, ענפים, פונקציות, אזורים, MC/DC ומופעי C++, בהתאם למה שקובץ המעקב מספק.
- קליטת פורמטים מרובים ומיזוג דטרמיניסטי של מספר הרצות עם מקור מתועד.
- מיפוי מחדש של נתיבים — נתיבי מכונת ה-build של CI ← סביבת העבודה המקומית שלכם.
- כיסוי הפרשי — מקשט רק שורות שהשתנו ביחס לענף בסיס ב-git.
- תגי Explorer ופריט שורת מצב ברמת ההרצה, צבוע לפי הציון המורכב.
- מצב מעקב — טעינה מחדש אוטומטית כאשר קובץ מעקב משתנה.
- Run Tests with Coverage — מזהה את מריץ הבדיקות משורש סביבת העבודה ומריץ אותו עם כיסוי מופעל, וטוען את מה שהוא כותב.
- קובצי מעקב מרוחקים — ערך ב-
coverageFile.pathsיכול להיות כתובתhttps://: הארטיפקט של ה-CI נשלף באופן מותנה (ETag / Last-Modified), עם הכותרות שתגדירו ב-remote.headers, נטען כמו קובץ מקומי ונשלף מחדש לפי שעון עםremote.refreshMinutes; כששליפה נכשלת, נטען במקומו העותק האחרון שהורד. - משתנים בנתיבים —
${workspaceFolder},${workspaceFolderBasename},${userHome},${env:NAME},${command:id}ו-${config:section.key}בכל הגדרת נתיב; משתנה לא מוכר נשאר כפי שנכתב, כך ששגיאת הקלדה מופיעה ביומן הגילוי במקום להיעלם. - סביבות עבודה מרובות שורשים — כל תיקייה מתגלה מההגדרות שלה (ה-
.vscode/settings.jsonשלה או הרשומה שלה ב-.code-workspace), קובצי המעקב שלה ממוזגים להרצה אחת, תצוגת הכיסוי מקבצת את הקבצים לפי תיקייה, ותיקייה שנוספה או הוסרה טוענת מחדש את הכיסוי מעצמה. - שני גורמי טעינה מחדש נוספים — ערך מוחלט ב-
coverageFile.pathsמחוץ לסביבת העבודה נדגם, כך שקובץ שמופיע שם נטען; ו-watch.reloadAfterTasksמציין משימות (npm: test) שסיומן טוען מחדש את הכיסוי, בין אם מצב המעקב מופעל ובין אם לא. - התקדמות שאפשר לבטל — טעינה של עשרה קובצי מעקב או יותר, או 8 MB או יותר מהם, וכל Generate Full HTML Report רצים תחת הודעת התקדמות עם כפתור ביטול; ביטול משאיר את ההרצה הקודמת טעונה.
- תצוגת Test Coverage של VS Code עצמו — כל טעינה מתפרסמת גם דרך ה-API של Test Coverage של העורך (
testCoverage.publish), כך שחלונית הכיסוי של Test Explorer, האחוזים לכל קובץ ב-Explorer והמתג Show Inline Coverage של העורך מציגים את אותם מספרים; Show in Test Coverage View מפרסם לפי בקשה ופותח את החלונית. כשלבדיקות יש שמות (TN:ב-lcov), התצוגה מסננת את הכיסוי של קובץ לפי בדיקה. - כלל מיפוי מוצע — כשטעינה משאירה קבצים ללא התאמה (נתיבי קונטיינר או CI מול checkout מקומי), ההרחבה מסיקה את כלל ה-
pathRemapשמסביר את רובם, מציעה Apply Suggested Remap בתוצאת הטעינה ו-Suggest Path Remap Rule בלוח הפקודות; שום דבר אינו נכתב בלי הלחיצה. - תבניות התעלמות —
fuciniCoverage.ignore(vendor/**,**/*.generated.ts) משמיט קבצים שלמים מההרצה בטעינה, כך שכל תצוגה, שער וייצוא סופרים בלעדיהם; תוצאת הטעינה אומרת כמה והפלט מציין כל אחד בשמו. - לא נמדד לעומת לא מכוסה — קובץ ששום בדיקה לא טענה אינו מנוקד כ-0% מאחורי גבכם; שורת המצב אומרת לא נמדד עבורו, ו-
unmeasured.modeיכול לרשום קבצים כאלה בתצוגת הכיסוי או לספור כל אחד כקובץ לא מכוסה, עםthreshold.unmeasuredFilesכשער על מספרם. - מה עשה המיזוג, גלוי לעין — כשכמה קובצי מעקב טעונים, כל שורת קובץ מציינת את הדוח שממנו באו מספריה, התג מוקף במסגרת היכן שמספרים אלה גברו על דוח ישן יותר, כל שורת קובץ מעקב סופרת כמה מקבציה נדרסו או דרסו אחרים, ולחיצה על שורת קובץ מעקב מדגישה את קבציה בעץ (
coverageView.mergedMarks).
ציון מורכב ותאימות
ממוצע הרמוני משוקלל יחיד על פני שורות, ענפים, פונקציות, אזורים, MC/DC ומופעים. מכיוון שמדובר בממוצע הרמוני, מדד חלש לא יכול להיות מוסתר על ידי מדד מושלם. המשקלים מותאמים כברירת מחדל לרמות IEC 61508 / ISO 26262 / DO-178C, ופסק הדין COMPLIANT / NON-COMPLIANT נקבע על פי ספי סף לכל מדד בתוספת מצב הניתן להגדרה.
Screenshot pending — add assets/img/statusbar.png (see SCREENSHOTS.md).ניתוח בתוך העורך
- CodeLens לפונקציות — אחוז כיסוי לכל פונקציה, לחצו כדי לקפוץ לשורה הלא-מכוסה הראשונה שלה.
- מעבר עכבר על ענפים ו-MC/DC — ספירות נלקחו/לא נלקחו לכל ענף ופירוט תנאי/וקטור לכל החלטה; סימון שוליים צבעוני אופציונלי ל-MC/DC.
- אזהרות קוד מת — אזהרה בפאנל Problems עבור פונקציות עם שורות מדידות וכיסוי אפס.
- ניווט Next/Previous Uncovered.
- אזהרת אי-התאמה כשתוכן קובץ כבר אינו מתאים להרצה שלו — מתעדכנת כשקבצים נשמרים או משתנים בדיסק, עם ההבדל המדויק בריחוף.
- מאז ההרצה האחרונה — משולש אדום על כל שורה שבוצעה בהרצה הקודמת ולא בזו, ירוק למקרה ההפוך, עם סרגל הסקירה ומספרי הפגיעות בריחוף.
- מאגרים שנערכו — כל סימון, ריחוף ו-CodeLens זזים עם הטקסט בזמן העריכה ונסוגים משורה שנכתבה מחדש, שם נקודה אפורה אומרת מדוע.
- מצבי שוליים של העורך —
editorGutter.modeמשאיר את השוליים לממצאים בלבד (off), מציב פס על כל שורה שמעולם לא רצה ופס ענברי היכן שענף מעולם לא נלקח (uncovered), או מוסיף גוון חם על כל שורה שבוצעה, חם יותר ככל שרצה יותר פעמים (heatmap); Choose Editor Gutter Mode... עובר ביניהם מלוח הפקודות או מתפריט שורת המצב. - מספרי פגיעות בתוך השורה —
hitCounts.inlineכותב×12אחרי כל שורה שפקודה מתחילה בה, כולל×0; Toggle Inline Hit Counts מחליף את המצב. - רשומות Problems לכל שורה —
problems.perLineמציב אבחון מסוג Information על כל בלוק של שורות שמעולם לא רצו במסמך פתוח (פונקציה מתה היא רשומה אחת, לא ארבעים), ולפי בחירה על כל שורה שענף שלה מעולם לא נלקח; הרשומות עוקבות אחרי השורות שלהן בזמן העריכה. - צביעת שורה ומפה בפס הגלילה —
lineHighlightמניח גוון שקוף למחצה מאחורי השורות עצמן במקום סימון בשוליים (או בנוסף אליו), ו-overviewRulerמחליט בעצמו על הפס בפס הגלילה: כשהשוליים כבויים זו מפה של פערי הקובץ ודבר לצד הקוד. - איזה קובץ מעקב כיסה את השורה הזאת — כששולבו כמה דוחות, החלונית עם מספר הריצות מציינת כל דוח שכיסה את השורה (כולל שם החבילה מתוך
TN:של lcov), ולחיצה על שורת קובץ מעקב בתצוגת Coverage מדגישה את השורות שהוא תרם.
- אדום, ענבר וירוק — המצב
coverageשלeditorGutter.modeושלlineHighlightצובע כל שורה שנמדדה בצבעי סולם הצבעים; לחצן המצב בשורת המצב ו-Alt+Gעוברים ממצב אחד למשנהו. - הצבעים שלכם, בתצוגה מקדימה — סולם הצבעים וגווני מפת החום (
heatmap.colors,heatmap.colorsDark) הם הגדרות, ודף ההגדרות מציג אותם בתצוגה מקדימה על עורך בהיר ועל עורך כהה בזמן שהם נבחרים. - מאיזה דוח בא קובץ — כששני דוחות מודדים את אותו קוד, כללי
coverageFile.sources, או Choose Coverage Source for This File..., קובעים איזה מהם כל קובץ מציג, במקום שהחדש ביותר ינצח.
דיווח והיסטוריה
- Generate Full HTML Report — דוח מרובה עמודים, לכל ספרייה, המעובד עצמאית; Open Annotated Source עבור קובץ בודד.
- היסטוריה מקומית אופציונלית של הרצות עם מגמת כיסוי (▲/▼), בנוסף ל-Compare Two History Runs ו-Compare with Last Run.
- Show Worst-Covered Files / Functions ו-Copy Uncovered Lines (Markdown).
- Export Fucini JSON — המודל המנורמל המלא.
- Export Coverage Report... — אותה הרצה כ-CSV (לכל קובץ או לכל פונקציה), סיכום Markdown, קובץ מעקב LCOV, Cobertura XML, SARIF, או תג SVG עצמאי. עם עשרים וחמישה קוראים והכותבים האלה ההרחבה ממירה בין פורמטים: טענו JaCoCo או llvm-cov JSON והפיקו את ה-LCOV ש-Codecov, Coveralls ו-SonarQube קוראים, או את ה-Cobertura XML ש-Jenkins, GitLab ו-Azure DevOps קולטים.
- Generate Coverage Badge — SVG בסגנון shields שנכתב ישירות לסביבת העבודה (
badge.outputPath, ברירת מחדלcoverage-badge.svg) כדי ש-README יטמיע אותו עםוללא שירות מארח;badge.metricבוחר שורות, ענפים, MC/DC או את הציון המורכב, הצבע עוקב אחרי מדרגותcolorScale.*, ו-badge.autoUpdateכותב אותו מחדש אחרי כל טעינה.
Screenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
Screenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).Community ו-Pro, תכונה אחר תכונה
שני רישומים, בסיס קוד אחד. Community היא הרמה החינמית לתמיד, וזו שאליה נוחת רישום Pro אחרי 14 ימי הניסיון; Pro והניסיון הם הכול, ללא הגבלה. הקו נמתח כך שהרמה החינמית תמיד רואה כל ממצא ומשלמת רק על נוחות, הוכחה והיקף — בתוך VS Code, Fucini Coverage: What Community Includes מציג את אותה רשימה עם מוני היום מול כל מכסה.
| יכולת | Community (חינם) | Pro, והניסיון |
|---|---|---|
| כל 25 הפורמטים, מיזוג רב-קבצי, מיפוי נתיבים | ✓ | ✓ |
| שוליים, סרגל סקירה, תגי סייר, תצוגת כיסוי, CodeLens, ריחופים | ✓ | ✓ |
| מצב מעקב עם טעינה מחדש אוטומטית; Run Tests with Coverage | ✓ | ✓ |
| כיסוי diff, היסטוריה ומגמה, סימוני "מאז ההרצה האחרונה" | ✓ | ✓ |
| טעינת כיסוי בפקודה | 25 ביום (טעינות אוטומטיות אינן נספרות) | ללא הגבלה |
| השוואת הרצות, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON | 5 בשבוע כל אחד | ללא הגבלה |
| Annotated Source, במקום | 5 בשבוע | ללא הגבלה, בתוספת חלונית צד קבועה ו-Generate Full HTML Report |
| Export Coverage Report | CSV (לפי קובץ, לפי פונקציה) | גם Markdown, LCOV, Cobertura XML, SARIF, תג SVG |
| קובץ שכבר אינו תואם לכיסוי שלו | מדווח ומעומעם | גם השורה, הפונקציה או סכום הביקורת שהוכיחו זאת |
| מוטנטים ששרדו | מסומנים על השורה, עם מספרם | גם מה כל מוטנט שינה |
| בדיקות שהריצו שורה | כמה | גם שמותיהן |
| CRAP | Max CRAP של ההרצה, CRAP לכל פונקציה | גם הרשימה המדורגת Riskiest Methods |
| Risk hotspots | כמה יש, והציון הגרוע ביותר | גם הרשימה המדורגת, שכל פריט בה פותח את הפונקציה שלו |
| כיסוי MC/DC, פסי שוליים וריחוף | — | ✓ |
| כיסוי קוד אובייקט מדורג ומבוקר | רק נוכחותו מדווחת | ✓ |
| קובץ שנמדד בכמה דוחות | הדוח החדש ביותר | גם בחירת דוח אחד לכל קובץ, או שילובם (agree / union) |
| נדרשת טלמטריה | לא — אופציונלית, ופעם אחת לכל מכונה, Unlock Full Features מחליף טלמטריית שימוש מפורטת ב-30 יום של כל מה שבעמודה הימנית | לא |
שבוע נמשך שבעה ימים מהשימוש הראשון שפתח אותו, ושום דבר שרק קורא כיסוי אינו נספר. עדיין לא בשלים למינוי? כרטיס ל-7 ימים הוא כל מה שבעמודת התוכניות בתשלום למשך שבוע אחד, בתשלום חד-פעמי, בלי שום דבר לבטל.
VS Code ו-Visual Studio זה לצד זה
מוצר אחד, שני עורכים, קורא אחד: אותו דוח נותן את אותם מספרים, עד הספרה, בשניהם. Coverage Studio ל-Visual Studio רץ על Visual Studio 2022 ו-2026 — Community, Professional ו-Enterprise ואינו משתמש בכיסוי הקוד של Visual Studio עצמו, שב-2022 קיים רק ב-Enterprise; הוא כלול בכל תוכנית בתשלום, ומכשיר עם שני העורכים הוא מושב אחד. כל מה שמעל הקו קיים בשניהם; מתחתיו — מה שאין לו מקבילה ב-Visual Studio, ומה שעדיין בדרך לשם.
| יכולת | VS Code | Visual Studio |
|---|---|---|
כל 25 הפורמטים, מיזוג ריבוי קבצים, מיפוי נתיבים מחדש, אותן הגדרות fuciniCoverage.* ו-.vscode/settings.json | ✓ | ✓ |
| שוליים, סרגל סקירה, ספירות הרצה, עדשה לכל פונקציה, חלוניות ריחוף, תצוגת Coverage, שורת המצב והכרטיסים שלה | ✓ | ✓ |
| מצב מעקב עם טעינה מחדש אוטומטית; Next Uncovered, Next Partly-Tested Decision; העתקה כ-Markdown | ✓ | ✓ |
| ציון משולב, ספים ופסק הדין COMPLIANT; MC/DC; CRAP | ✓ | ✓ |
| Getting Started, ב-18 שפות | מדריך מודרך | עמוד תחת Tools → Coverage Studio |
| Run Tests with Coverage, Run This Test with Coverage, כיסוי אחרי כל שמירה; חלונית Test Coverage של העורך עצמו | ✓ | ✓, וגם Collect Coverage in Test Explorer… — חלונית Test Coverage היא VS Code API |
| תגי Explorer | ✓ | — (Solution Explorer אינו יכול לסמן קבצים) |
| Annotated Source, דוח HTML, ייצואים, Check Thresholds, Error List, היסטוריה ומגמה, כיסוי diff | ✓ | ✓ |
| אילו בדיקות הריצו שורה, החרגה מהעץ ומהעורך, פרספקטיבת מרחבי השמות ותיבת החיפוש, מפגשי כיסוי, תרשים המגמה, קו הבסיס של ה-CI | ✓ | ✓, בנוסף Run Native Project with Coverage לפרויקט C++ |
| רמה חינמית, ניסיון, תשלום | ✓ | — (תוכנית בתשלום; המפתח נמצא במחשב שבו VS Code מופעל) |
הבא בתור: כל הכיסוי הזה ב-Azure DevOps, בהרחבה חינמית. Azure DevOps מציג כיסוי על בנייה רק עד כמה שהפורמט שלו מגיע — שורות, וענפים כאחוז. Fucini DevOps Studio יציג את כל מה ש-Coverage Studio קורא: כל אחד מ-25 הפורמטים האלה, לכל שפה, עם MC/DC, תנאים, הציון המשולב והספים, כלשונית Coverage בצינור שהפיק אותה. עקבו אחר החדשות לקראת הגרסה הראשונה.
הפניית הגדרות
הגדירו בממשק ההגדרות (חפשו Fucini Coverage) או ב-settings.json.
Download the complete settings reference — a commented settings.json holding every fuciniCoverage.* setting at the same default the packaged extension uses, ready to copy into your workspace or user settings. Regenerated from the extension on every release, so it cannot drift from what the VSIX ships.
שורה המסתיימת בלכל תיקייה. מקבלת ערך ברמת התיקייה בסביבת עבודה מרובת שורשים: כל תיקייה מתגלה עם ה-.vscode/settings.json שלה או עם הרשומה שלה ב-.code-workspace, ו-${workspaceFolder} בתוכה פירושו אותה תיקייה.
לוקליזציה
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
language | auto | מקבע את ממשק זמן־הריצה של התוסף (שורת מצב, התראות, תיאורים, תצוגות רישיון ודוח) לשפה מסוימת, ללא תלות בשפת התצוגה של VS Code. auto עוקב אחר VS Code. אחד מ־auto, en, uk, nl, de, fr, es, hr, pl, it, pt, ru, tr, he, ja, zh, hi, ko, ar. אינו משנה ערכים בלוח הפקודות או תוויות/תיאורים בממשק ההגדרות — את אלה VS Code שולף משפת התצוגה שלו. |
גילוי וטעינה
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
coverageFile.defaultLocation | "" | תיקיית הבסיס לגילוי ולתיבות בחירת קבצים. משתנים: ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id}, ${config:section.key}. לכל תיקייה. |
coverageFile.paths | [] | קובצי מעקב לטעינה ולמיזוג, יחסית לתיקיית הבסיס, מוחלטים (אותם משתנים כמו לעיל), או כתובת http(s):// הנשלפת בכל טעינה — הוסיפו #lcov.info (או שם קובץ אחר) כמקטע של הכתובת כשלכתובת עצמה אין סיומת. תבנית * יחסית סורקת רקורסיבית תחת תיקיית הבסיס; גם ערך מוחלט יכול להכיל תו כללי (${workspaceFolder}/build/coverage-merged/*.lcov.info, ** לכל עומק), והחיפוש נעשה תחת התיקיות שלפניו. לכל תיקייה. |
watch.enabled | true | לטעון מחדש את הכיסוי כשקובץ מעקב משתנה — או מופיע, עבור ערך מוחלט מחוץ לסביבת העבודה. לכל תיקייה. |
watch.reloadAfterTasks | [] | שמות משימות (label, או source: name כמו npm: test) שסיומן טוען מחדש את הכיסוי, בין אם watch.enabled מופעל ובין אם לא. לכל תיקייה. |
remote.headers | [] | כותרות Name: value הנשלחות עם כל שליפת כתובת; משתנים מורחבים, ולכן Authorization: Bearer ${env:CI_TOKEN} משאיר את האסימון מחוץ ל-settings.json. לכל תיקייה. |
remote.refreshMinutes | 0 | לשלוף מחדש ערכי כתובת כל N דקות (GET מותנה; 0 = רק בטעינה). לכל תיקייה. |
baseline.report | "" | הדוח שכל הרצה טעונה מושווית אליו — זה של הענף הראשי, כפי ששרת ה-build מפרסם אותו: כתובת URL, הנשלפת עם remote.headers ונשמרת במטמון כפי שכתובת URL ב-coverageFile.paths נשמרת, או נתיב של artifact שהורד, מוחלט או יחסי לתיקייה. כרטיס שורת המצב אומר אז היכן ההרצה הזו עומדת מולו, ו-Compare with CI Baseline מונה את הקבצים שזזו. ריק: אין קו בסיס. לכל תיקייה. |
סולם צבעים ותגים
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
colorScale.preset | default | colorblind מחליף אדום, ענבר וירוק בכתום-אדום, כתום וכחול (Okabe–Ito) בכל מקום שבו הכיסוי נצבע; צבעים ששיניתם למטה גוברים. |
colorScale.lowColor | #8b1a1a | הקצה הנמוך של מדרג הכיסוי. |
colorScale.midColor | #b8860b | צבע הציר של המדרג. |
colorScale.highColor | #228b22 | הקצה הגבוה (100%) של המדרג. |
colorScale.lowThreshold | 80 | האחוז שבו התג עובר מנמוך לבינוני. |
colorScale.highThreshold | 90 | האחוז שבו התג עובר מבינוני לגבוה (וגם ציר המדרג). |
heatmap.colors | ["#fff1a8", …, "#a63603"] | חמשת הגוונים של מפת החום בערכת נושא בהירה, מהשורה שרצה הכי מעט לשורה שרצה הכי הרבה. |
heatmap.colorsDark | ["#6e5f22", …, "#ff6a00"] | אותו הדבר לערכת נושא כהה, שבה בהיר יותר פירושו יותר. |
ציון מורכב (ממוצע הרמוני משוקלל)
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
whmWeights.lines | 1 | משקל כיסוי שורות/פקודות. |
whmWeights.functions | 1 | משקל כיסוי פונקציות. |
whmWeights.regions | 1.5 | משקל כיסוי אזורים (llvm-cov). |
whmWeights.branches | 2 | משקל כיסוי הסתעפויות. |
whmWeights.mcdc | 4 | משקל כיסוי MC/DC. 0 מחריג אותו. |
whmWeights.instantiations | 0.5 | משקל מימושי תבניות C++ (llvm-cov). |
ספי סף ותאימות
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
threshold.profile | standard | standard קובע את ברירות המחדל שלהלן; safety מעמיד כל שער על 100 למעט ציון המוטציות; custom משאיר את מה שהגדרתם. בפרופיל ברירת המחדל מדדי הבטיחות הם ללא שער — פרויקט שאינו מודד MC/DC אינו נכשל בשל כך. |
threshold.statement | 80 | אחוז מינימלי של פקודות. 0 מבטל את הבדיקה. |
threshold.branch | 70 | אחוז מינימלי של הסתעפויות. |
threshold.mcdc | 0 | אחוז מינימלי של MC/DC. |
threshold.functions | 80 | אחוז מינימלי של פונקציות. |
threshold.regions | 75 | אחוז מינימלי של אזורים (llvm-cov). |
threshold.instantiations | 0 | אחוז מינימלי של מימושים (llvm-cov); פרויקטים ב־C בלבד מדולגים. |
threshold.conditions | 0 | אחוז מינימלי של תנאים. |
threshold.functionCalls | 0 | אחוז מינימלי של קריאות לפונקציות, כאשר הדוח מספק אותו. |
threshold.objectCode | 0 | אחוז מינימלי של קוד אובייקט, כאשר הדוח מספק אותו. |
threshold.mutation | 0 | ציון מוטציות מינימלי, כאשר נטען דוח מוטציות. |
threshold.weighted | 75 | ציון משוקלל מינימלי. |
compliance.mode | strict | strict | whm | both | either. |
compliance.diagnostics | false | שגיאה אחת בבעיות לכל סף שלא עמדו בו, על קובץ המעקב. |
threshold.unmeasuredFiles | -1 | מספר מרבי של קבצים שלא נמדדו (דורש ש-unmeasured.mode יהיה list או count). -1 אינו בודק; 0 נכשל בקובץ הראשון ששום בדיקה לא טענה. |
problems.perLine | off | off | uncovered | uncoveredAndPartial: רשומת Information (קו גלי בעורך) לכל בלוק של שורות לא מכוסות רצופות בכל מסמך פתוח, ולפי בחירה גם אחת לכל שורה שענף שלה מעולם לא נלקח. בלתי תלוי ב-problems.enabled. לכל תיקייה. |
Diff, מיפוי מחדש ודוחות
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
pathRemap | [] | שכתובי נתיבים {from,to} לפי סדר; to יכול להשתמש ב-${workspaceRoot}, שמנסה תחילה את התיקייה של קובץ המעקב עצמו ואז כל תיקייה אחרת בסביבת העבודה. כשטעינה משאירה קבצים ללא התאמה, תוצאת הטעינה מציעה Apply Suggested Remap עם הכלל שהוסק מהנתיבים שלא הותאמו (וגם Suggest Path Remap Rule בלוח הפקודות); שום דבר אינו נכתב עד שתלחצו עליו. לכל תיקייה. |
ignore | [] | תבניות glob לקבצים שלמים שיש להשאיר מחוץ להרצה (vendor/**, **/*.generated.ts, build/**) — מושמטים בטעינה, כך שכל תצוגה, שער וייצוא סופרים בלעדיהם. נבדקות מול הנתיב היחסי לסביבת העבודה ומול הנתיב המוחלט; תבנית ללא / תואמת שם בכל עומק, כמו .gitignore. לכל תיקייה. |
ignore.generated | true | משאיר קובצי .NET שנוצרו אוטומטית מחוץ לכל סיכום, עמוד וייצוא — *.Designer.cs, *.g.cs, *.g.i.cs, *.generated.cs, *.razor.g.cs, *.AssemblyInfo.cs, GlobalUsings.g.cs, Migrations/** ו-obj/** — לפני ש-ignore מוחל. כבו לפרויקט שבודק את ההגירות שלו. לכל תיקייה. |
ignore.namespaces | [] | מרחבי שמות שיישארו מחוץ לכל סיכום ולכל עמוד, במקורות .NET: קובץ שהצהרת מרחב השמות שלו תואמת אחד מהם אינו נספר. קידומת עם * כתו כללי — Acme.Generated, Acme.*.Migrations, *Tests. לכל תיקייה. |
ignore.attributes | ["ExcludeFromCodeCoverage"] | אטריבוטים המוציאים מחלקה, מתודה או מאפיין של .NET מהספירה, נקראים מתוך המקור: האיבר שמתחת לאחד מהם מוחרג כפי ש-LCOV_EXCL_START/STOP היו מחריגים אותו, יהיה הכלי שכתב את הדוח אשר יהיה. שמות עם הסיומת Attribute או בלעדיה, עם מרחב שמות או בלעדיו; הוסיפו GeneratedCode, Obsolete או משלכם. לכל תיקייה. |
testRun.perTest | false | Run Tests with Coverage מריץ מתכון dotnet test מחלקת בדיקות אחת בכל פעם ומתייג כל דוח במחלקה שלו, כך שהריחוף, ה-CodeLens ו-Show Tests That Ran This Line יכולים לומר אילו בדיקות הריצו שורה — איטי יותר, ורק ל-.NET, שדוח ה-Cobertura שלו אינו יכול לומר זאת בעצמו. לכל תיקייה. |
testRun.onSave | false | שמירת קובץ מקור מריצה את הבדיקות המכסות אותו, עם כיסוי, רגע אחרי השמירה: לפתרון .NET רק פרויקטי הבדיקות המפנים לפרויקט של הקובץ שנשמר, dotnet test אחד לכל אחד; לכל מריץ אחר — המתכון כולו. כמה שמירות הן הרצה אחת; הרצה שכבר בעיצומה אינה נקטעת. לכל תיקייה. |
testRun.skipWhenTestsFail | false | Run Tests with Coverage משאיר את הכיסוי על המסך כפי שהיה כשהמריץ יוצא בכישלון, ואומר זאת בחלונית Output — הרצה אדומה אינה צובעת קובץ ירוק באדום. לכל תיקייה. |
unmeasured.mode | off | off | list | count: מה לעשות עם קבצים בסביבת העבודה מהסוג של ההרצה ששום בדיקה לא טענה (ראו לא נמדד לעומת לא מכוסה). list מציין אותם בתצוגת הכיסוי ובתוצאת הטעינה; count גם מנקד כל אחד מהם כקובץ לא מכוסה של שורות הקוד שלו. שינוי ההגדרה טוען מחדש. |
unmeasured.exclude | ["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"] | קבצים שלעולם אינם נקראים „לא נמדדו“, בתחביר ה-glob של ignore — כברירת מחדל קבצי כותרת בלבד וקבצי הצהרות בלבד. לכל תיקייה. |
hotspots.crapThreshold | 30 | פונקציה עם ציון CRAP זה או גבוה ממנו היא risk hotspot, הנמנית מתחת לעץ של תצוגת Coverage, הגרועות תחילה — 30 הוא הערך שמחברי המדד הציעו. רק דוחות הנושאים מורכבות ציקלומטית מכילים כאלה. לכל תיקייה. |
hotspots.complexityThreshold | 0 | פונקציה מורכבת כך או יותר היא hotspot גם היא, יהיה הכיסוי שלה אשר יהיה; 0 מכבה זאת. לכל תיקייה. |
gitDiff.enabled | false | להגביל את הכיסוי לשורות שהשתנו מול הפניית בסיס. לכל תיקייה. |
gitDiff.baseRef | origin/master | הפניית בסיס ב־Git לכיסוי הפרשים. לכל תיקייה. |
externalHtmlReport.dir | "" | לקרוא תיקיית HTML מוכנה של llvm-cov show עבור Annotated Source. לכל תיקייה. |
htmlReport.outputDir | "" | תיקיית הפלט עבור Generate Full HTML Report. לכל תיקייה. |
badge.outputPath | coverage-badge.svg | היכן Generate Coverage Badge כותב את ה-SVG — יחסית לתיקיית סביבת העבודה או מוחלט, אותם משתנים כמו coverageFile.defaultLocation; תיקיות אב נוצרות. לכל תיקייה. |
badge.metric | lines | lines | branches | mcdc | weighted: המספר ברמת ההרצה שעל התג (weighted הוא הציון המורכב של שורת המצב). אין נתונים עבורו ← n/a אפור. לכל תיקייה. |
badge.autoUpdate | false | לכתוב מחדש את התג אחרי כל טעינה מוצלחת, בשקט (נרשם כ-[FUCINI_BADGE]). לכל תיקייה. |
תצוגה וניתוח
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
mcdcGutter.enabled | false | פס MC/DC צבעוני בשוליים. |
statusBar.enabled | true | להציג פריטי שורת מצב לכל ההרצה ולכל קובץ. |
statusBar.showLauncher | true | לחצן תפריט מהיר הזמין תמיד. |
statusBar.showModeToggle | true | לחצן בשורת המצב שמציג את מצב השוליים; לחיצה מקדמת אותו במצב אחד. |
codeLens.enabled | true | CodeLens של כיסוי לכל פונקציה. |
deadCode.enabled | true | להתריע על פונקציות ללא כיסוי. |
staleWarning.enabled | true | סמן קבצים שתוכנם כבר אינו תואם להרצה שלהם. |
explorerBadges.enabled | false | תגי כיסוי ותיאור ליד קבצים בסייר. |
coverageFile.rememberPicks | true | כתוב כל קובץ שנבחר אל coverageFile.paths. |
coverageFile.sources | [] | מאיזה דוח טעון באים המספרים של קובץ כשיותר מדוח אחד מודד אותו: כללי { "files": glob, "report": glob } מסודרים, והראשון שמתאים מכריע. עם "combine": "union" (מכוסה היכן שדוח כלשהו הריץ שורה) או "agree" (רק היכן שכל דוח הריץ אותה, ואי-הסכמות בטורקיז) הדוחות התואמים משולבים. תוכניות בתשלום. לכל תיקייה. |
coverageFile.mergeStrategy | newest | לקבצים שאף כלל אינו מכריע לגביהם: newest (הדוח שנכתב אחרון מנצח) או order (הרשומה המאוחרת יותר ב-coverageFile.paths מנצחת, בלי קשר לזמנים). לכל תיקייה. |
sinceLastRun.enabled | true | סימוני שוליים בשורות שהכיסוי שלהן השתנה מאז ההרצה הקודמת. |
dirtyMarks.enabled | true | נקודה אפורה בשוליים בשורות שנערכו מאז שנטענה ההרצה. |
editorGutter.mode | off | off | uncovered | coverage | heatmap: שום דבר מעבר לממצאים שלעיל, פסים על שורות לא מכוסות (ומכוסות חלקית) בלבד, אלה בתוספת פס ירוק על כל שורה מכוסה, או אלה בתוספת גוון חם על כל שורה שבוצעה לפי מספר הפגיעות. לכל תיקייה. |
lineHighlight | off | off | uncovered | coverage | heatmap: גוון שקוף למחצה מאחורי השורה עצמה, עבור מה שהשוליים מסמנים. הגדרה עצמאית, כדי שהשוליים יוכלו להישאר נקיים בזמן שהפערים נצבעים, או להפך. לכל תיקייה. |
overviewRuler | follow | follow | uncovered | off: האם שורות לא מכוסות מקבלות פס בסרגל הסקירה של פס הגלילה. uncovered מצייר אותו גם כשהשוליים כבויים — מפה של פערי הקובץ לאורך פס הגלילה ודבר לצד הקוד; off משאיר את הפסים ומסיר את הפס. לכל תיקייה. |
hitCounts.inline | false | ×N אחרי כל שורה שפקודה מתחילה בה, כולל ×0. לכל תיקייה. |
testCoverage.publish | true | לפרסם כל הרצה טעונה לתצוגת Test Coverage של VS Code עצמו (חלונית Test Explorer, אחוזים ב-Explorer, Show Inline Coverage). כבוי: אין רשומת Fucini Coverage ב-Test Explorer; Show in Test Coverage View עדיין מפרסם לפי בקשה. |
coverageView.perspective | folders | איזה עץ תצוגת Coverage מציגה: התיקיות והקבצים של סביבת העבודה, או — לדוח .NET שמציין את המחלקות שלו (Cobertura, Coverlet, OpenCover) — מרחבי שמות, מחלקות ומתודות, לכל אחד המספרים שלו. הרשימה הנפתחת בתצוגה כותבת את זה; היא מוצעת רק כשההרצה נושאת שמות מחלקות. |
coverageView.mergedMarks | true | כשכמה קובצי מעקב טעונים: להקיף במסגרת את תג קובץ המעקב של כל קובץ שמספריו גברו על דוח ישן יותר, ולאפשר ללחיצה על שורת קובץ מעקב להדגיש את הקבצים שהוא מדד. כבוי: תגים רגילים, ללא הדגשה; שורות קובצי המעקב עדיין סופרות מה נדרס. |
excludeComments | true | להחריג שורות הערה, שורות ריקות & שורות LCOV_EXCL_*, וכן הנחיות קדם-מעבד ב-C, C++, Objective-C, CUDA ו-C#. |
excluded.includeInTotals | false | לכלול שורות מוחרגות בסיכומים. |
היסטוריה
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
history.enabled | false | לשמור הרצות מקומית לצורך מגמה והשוואה. |
history.retention | 20 | מספר ההרצות המרבי שיישמרו. |
פעולות מהירות של שורת המצב
כולן ברירת מחדל false מלבד שתי האחרונות; הפעילו כדי להוסיף את הפעולה המתאימה לתפריט המהיר: quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFolders, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson, exportReport, generateBadge, showTestCoverage, chooseGutterMode, toggleInlineHitCounts.
טלמטריה
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
telemetry.enabled | false | טלמטריית שימוש, כבויה כברירת מחדל. ברמת Community, Unlock Full Features נותן בתמורה לה את כל תכונות Pro, כולל MC/DC, למשך 30 יום, פעם אחת לכל מכונה; רישיון בתשלום אינו מושפע ממנה. ראו את מדיניות הפרטיות לפירוט מה נשלח. הסיכום היומי והודעת ההסרה תלויים גם בהגדרה telemetry.telemetryLevel של VS Code עצמו; איתות ההתקנה וכמה אירועים קטנים אינם תלויים בה. |
עדכונים
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
update.checkForUpdates | true | לבדוק מדי פעם גם ב־fucini.software וגם ב־VS Code Marketplace אם יש גרסה חדשה יותר, ולהציע להתקין את החדשה מביניהן. |
רישוי
| הגדרה | ברירת מחדל | מה זה עושה |
|---|---|---|
license.key | "" | מפתח הפעלה לגרסת הקדם־שחרור להתנסות (מחרוזת FCK1.…). קשור למחשב/למשתמש הזה; ייתכן שיכלול תפוגה ומגבלות לכל תכונה. ראו התנסות והפעלה. |