الميزات والإعدادات

كل ما يفعله، وكل ما يمكنك ضبطه

جولة كاملة في مجموعة الميزات ومرجع الإعدادات الكامل — كل إعداد مع قيمته الافتراضية.

تنزيل VSIX

إصدار للتقييم. كل الميزات أدناه متاحة خلال الفترة التجريبية المجانية البالغة 14 يومًا. وبعدها يتوفر مفتاح ترخيص عند الطلب، يُصدر تلقائيًا، ويمكن للمفتاح تفعيل ميزات مفردة أو تقييدها لكل مستخدم. اطلب ترخيصًا →

حين يكتب الذكاء الاصطناعي الاختبارات

التغطية في مواجهة مجموعة اختبارات مُولَّدة

تعرض النظرة العامة الحجة في صورتها العامة. وهذه هي الحجة نفسها في مواجهة قائمة الميزات، لأن مجموعة اختبارات مُولَّدة تُخفق على نحو له شكل مميّز — كل سطر مسّته، ونصف القرارات لم تُتَّخذ قط، وبضع دوال تَرِد أسماؤها في عناوين الاختبارات ولا تُستدعى أبدًا — وخمسة مما يلي هي ما يجعل ذلك الشكل مرئيًا.

  • تغطية الفروع و MC/DC، مع التلميح لكل فرع ولكل قرار، تفصل السطر نُفِّذ عن القرار جرى اختباره. المجموعة التي تسلك المسار السعيد وحده تُقرأ قرابة 100% على الأسطر وقرابة 50% على الفروع، وهذه الفجوة هي النتيجة. تشغيل اختبارات كلّه أخضر لا يُظهر منها شيئًا.
  • الدرجة المركّبة هي وسط توافقي، فلا يستطيع مقياس قوي أن يحجب مقياسًا ضعيفًا — وهذا بالضبط الحساب الذي تحتاجه مجموعة مُولَّدة. أخذ متوسط رقم الأسطر مع رقم الفروع سيدفن الرقم الوحيد الجدير بالنظر.
  • تحذيرات الشفرة الميتة تُنشئ مدخلًا في لوحة Problems لكل دالة لها أسطر قابلة للقياس وتغطيتها صفر. والمجموعة التي تذكر دالةً في عنوان اختبار ولا تصل إليها أبدًا لا تُخفق في أي موضع آخر.
  • تغطية الفروق مقابل مرجع أساس في git تُضيّق كل ما سبق إلى الأسطر التي تغيّرت للتو — الشفرة التي قبِلتها بعد ظهر اليوم، لا متوسط عمر المستودع كله؛ فمع ذلك المتوسط تظل مجموعة كبيرة قائمة تبدو بصحة جيدة بلا عناء.
  • Copy Uncovered Lines يُخرج بالضبط ما لم يُنفَّذ قط، بصيغة Markdown — أي شيء يُلصق مباشرةً في المساعد الذي كتب المجموعة أصلًا.

لا شيء من هذا يقرأ اختبارًا ويحكم عليه، ولا ينبغي فهم أي مما هنا على أنه ادّعاء بذلك: فالاختبار الذي لا يحوي أي تأكيد على الإطلاق يغطي مع ذلك كل سطر يمسّه. ما يُقاس هنا هو الجزء الذي لا يستطيع المراجع أن يحمله في رأسه — أي شفرة لم تُنفَّذ قط.

ميزة فريدة لهذا الامتداد

تغطية الأسطر لديك تقول 100%. لكن 312 بايت من ملفك الثنائي لم تُنفَّذ قط.

كل مقياس آخر هنا يُقاس من المصدر: تُجهَّز الشيفرة، ويُشغَّل البناء المجهَّز، ويُحصى ما تفعّل. أما تغطية الشيفرة الهدف فتقيس شيئًا لا تصل إليه أي أداة قائمة على المصدر — كم من الملف الثنائي المبني نُفِّذ فعليًا، ببايتات التعليمات، عبر مراقبة تدفّق التعليمات. يُصدر المترجم شيفرةً لا يقابلها أي سطر في مصدرك: فحوص حدود المصفوفات، وجداول قفز switch، وإفراغ المسجّلات، وروتينات المساعدة في زمن التشغيل للقسمة أو الفاصلة العائمة. لا يظهر شيء من ذلك في مصدرك، لذا لا تستطيع أي أداة قائمة على المصدر — بما فيها هذا الامتداد نفسه، بالنسبة لأي مقياس آخر يقرؤه — أن تخبرك إن كان قد نُفِّذ. وهي أيضًا المقياس الوحيد هنا الذي يجيب عن سؤال هل يغطي هذا لغة التجميع؟، لأن شيفرة التجميع المكتوبة يدويًا لا تُجهَّز أبدًا.

تُسمّي DO-178C ذلك صراحةً: عند المستوى A، يُطلب هذا بالإضافة إلى MC/DC. لا يقرأه أي امتداد آخر لـ VS Code. كيفية الحصول عليه من هدف مضمّن →

القدرات

الأساسيات

  • عرض Coverage لكل ملف مقيس، ومسطرة النظرة العامة، وAnnotated Source؛ وفي هامش المحرر نفسه، افتراضيًا، ما يستحق علامة فحسب — أشرطة MC/DC، ومثلثات «منذ آخر تشغيل»، ونقاط الأسطر المحرَّرة — مع أشرطة على الأسطر غير المغطّاة وحدها أو خريطة حرارية لأعداد الإصابات على بُعد إعداد واحد.
  • تغطية لكل سطر من العبارات والفروع والدوال والمناطق وMC/DC ونسخ C++، وفقًا لما يوفره ملف التتبع.
  • استيعاب صيغ متعددة ودمج حتمي لعدة عمليات تشغيل مع تسجيل المصدر.
  • إعادة تعيين المسارات — مسارات جهاز بناء 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)، وتندمج ملفات تتبعه في تشغيل واحد، ويجمّع عرض Coverage الملفات حسب المجلد، والمجلد الذي يُضاف أو يُزال يعيد تحميل التغطية من تلقاء نفسه.
  • مُطلقان آخران لإعادة التحميل — مدخل coverageFile.paths المطلق خارج مساحة العمل يُستطلع، فالملف الذي يظهر هناك يُحمَّل؛ ويسمّي watch.reloadAfterTasks مهامّ (npm: test) يعيد انتهاؤها تحميل التغطية، سواء كان وضع المراقبة مفعّلًا أم لا.
  • تقدّم يمكن إلغاؤه — تحميل عشرة ملفات تتبع أو أكثر، أو 8 ميغابايت أو أكثر منها، وكل Generate Full HTML Report يجريان تحت إشعار تقدّم بزر Cancel؛ والإلغاء يُبقي التشغيل السابق محمَّلًا.
  • عرض Test Coverage الخاص بـ VS Code نفسه — يُنشر كل تحميل أيضًا عبر واجهة Test Coverage الخاصة بالمحرر (testCoverage.publish)، فتعرض لوحة التغطية في Test Explorer والنسب المئوية لكل ملف في Explorer ومفتاح Show Inline Coverage في المحرر الأرقام نفسها؛ وينشر Show in Test Coverage View عند الطلب ويفتح اللوحة. عندما تكون للاختبارات أسماء (TN: في lcov)، يصفّي العرض تغطية الملف حسب الاختبار.
  • قاعدة إعادة تعيين مقترحة — حين يترك التحميل ملفات بلا تطابق (مسارات حاوية أو CI مقابل نسخة محلية)، يستنتج الامتداد قاعدة pathRemap التي تفسّر أكبر عدد منها، ويعرض Apply Suggested Remap في نتيجة التحميل وSuggest Path Remap Rule في لوحة الأوامر؛ ولا يُكتب شيء من دون النقرة.
  • أنماط التجاهل — يُسقط fuciniCoverage.ignore (vendor/**، **/*.generated.ts) ملفات كاملة من التشغيل عند التحميل، فيَعُدّ كل عرض وبوابة وتصدير من دونها؛ وتقول نتيجة التحميل كم ملفًا وتسمّي المخرجات كلًّا منها.
  • غير مقيس مقابل غير مغطّى — الملف الذي لم يحمّله أي اختبار لا يُحتسب 0% من وراء ظهرك؛ يقول شريط الحالة غير مقيس عنه، ويستطيع unmeasured.mode سرد هذه الملفات في عرض Coverage أو احتساب كلٍّ منها ملفًا غير مغطّى، مع threshold.unmeasuredFiles للتحكّم بعددها.
  • ما فعله الدمج، ظاهرًا — مع تحميل عدة ملفات تتبع، يذكر كل صف ملف التقرير الذي جاءت منه أرقامه، وتُحاط الشارة بإطار حيث طغت تلك الأرقام على تقرير أقدم، ويعدّ كل صف ملف تتبع كم من ملفاته طُغي عليها أو طغت على غيرها، والنقر على صف ملف تتبع يُبرز ملفاته في الشجرة (coverageView.mergedMarks).

الدرجة المركّبة والامتثال

متوسط توافقي مرجّح واحد عبر الأسطر والفروع والدوال والمناطق وMC/DC والنسخ. نظرًا لكونه متوسطًا توافقيًا، لا يمكن إخفاء مقياس ضعيف بواسطة مقياس مثالي. تتوافق الأوزان افتراضيًا مع مستويات IEC 61508 / ISO 26262 / DO-178C، ويتم تحديد حكم COMPLIANT / NON-COMPLIANT بواسطة عتبات لكل مقياس بالإضافة إلى وضع قابل للتكوين.

The status-bar hover card: NON-COMPLIANT, 3 of 5 gates below threshold — functions and regions pass, lines and branches miss narrowly (amber), MC/DC misses outright (red)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 بـ ![coverage](coverage-badge.svg) من دون خدمة مستضافة؛ يختار badge.metric الأسطر أو الفروع أو MC/DC أو الدرجة المركّبة، ويتبع اللون مستويات colorScale.*، ويعيد badge.autoUpdate كتابتها بعد كل تحميل.
Generated multi-page HTML coverage reportScreenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
The report’s annotated page for src/calc.c: per-line hit counts, a fully covered function, an uncovered else branch, a 1/2 partial branch, an MC/DC expansion and a never-called functionScreenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).

Community وPro، ميزة بميزة

قائمتان، قاعدة كود واحدة. Community هو المستوى المجاني دائمًا، وهو ما تستقر عليه قائمة Pro بعد تجربتها ذات الأربعة عشر يومًا؛ أما Pro والتجربة فكل شيء دون حدود. رُسم الخط بحيث يظل المستوى المجاني يرى كل نتيجة ولا يدفع إلا مقابل الراحة والدليل والحجم — داخل VS Code يعرض Fucini Coverage: What Community Includes القائمة نفسها مع عدّادات اليوم مقابل كل حد.

القدرةCommunity (مجاني)Pro والتجربة
كل التنسيقات الـ25، دمج ملفات متعددة، إعادة تعيين المسارات✓✓
الهوامش، مسطرة النظرة العامة، شارات المستكشف، عرض التغطية، CodeLens، التلميحات✓✓
وضع المراقبة مع إعادة التحميل التلقائية؛ Run Tests with Coverage✓✓
تغطية الفروق، السجل والاتجاه، علامات «منذ آخر تشغيل»✓✓
تحميل التغطية بالأمر25 في اليوم (لا تُحتسب التحميلات التلقائية)غير محدود
مقارنة التشغيلات، Check Coverage Thresholds، Open HTML Report، Export Coverage Report، Export Fucini JSON5 في الأسبوع لكل منهاغير محدود
Annotated Source في مكانه5 في الأسبوعغير محدود، إضافة إلى لوحة جانبية دائمة وGenerate Full HTML Report
Export Coverage ReportCSV (لكل ملف، لكل دالة)أيضًا Markdown وLCOV وCobertura XML وSARIF وشارة SVG
ملف لم يعد مطابقًا لتغطيتهيُبلَّغ عنه ويُخفَّتأيضًا السطر أو الدالة أو مجموع التحقق الذي أثبت ذلك
الطفرات الناجيةتُعلَّم على السطر، مع عددهاوكذلك ما غيّرته كل طفرة
الاختبارات التي نفّذت السطرعددهاوكذلك أسماؤها
CRAPMax 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 CodeVisual 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
شارات المستكشف✓— (لا يستطيع Solution Explorer تزيين الملفات)
Annotated Source، تقرير HTML، التصديرات، Check Thresholds، Error List، السجل والاتجاه، تغطية الفروق✓✓
أي الاختبارات نفّذت سطرًا، الاستبعاد من الشجرة ومن المحرر، منظور مساحات الأسماء ومربع البحث، جلسات التغطية، مخطط الاتجاه، خط الأساس لـ CI✓✓، بالإضافة إلى Run Native Project with Coverage لمشروع C++
المستوى المجاني، التجربة، الدفع✓— (خطة مدفوعة؛ يُعثر على المفتاح على جهاز فُعِّل فيه VS Code)

الآتي: كل هذه التغطية في Azure DevOps، في امتداد مجاني. لا يعرض Azure DevOps التغطية على البناء إلا بقدر ما يبلغه تنسيقه هو — الأسطر، والفروع نسبةً مئوية. سيعرض Fucini DevOps Studio كل ما يقرؤه Coverage Studio: كل واحد من هذه التنسيقات الخمسة والعشرين، لكل لغة، مع 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} فيه ذلك المجلد.

التوطين

الإعدادالافتراضيما الذي يفعله
languageautoيثبّت واجهة التشغيل الخاصة بهذا الامتداد (شريط الحالة، الإشعارات، التلميحات، عروض الويب للترخيص والتقرير) على لغة محددة، بصرف النظر عن لغة عرض 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.enabledtrueإعادة تحميل التغطية عند تغيّر ملف تتبّع — أو ظهوره، في حالة مدخل مطلق خارج مساحة العمل. لكل مجلد.
watch.reloadAfterTasks[]أسماء المهام (label، أو source: name مثل npm: test) التي يعيد انتهاؤها تحميل التغطية، سواء كان watch.enabled مفعّلًا أم لا. لكل مجلد.
remote.headers[]ترويسات Name: value تُرسل مع كل جلب لعنوان URL؛ تُوسَّع المتغيّرات، فيُبقي Authorization: Bearer ${env:CI_TOKEN} الرمز خارج settings.json. لكل مجلد.
remote.refreshMinutes0إعادة جلب مدخلات URL كل N دقيقة (GET مشروط؛ 0 = عند التحميل فقط). لكل مجلد.
baseline.report""التقرير الذي يُقارن به كل تشغيل محمَّل — تقرير الفرع الرئيسي، كما ينشره خادم البناء: عنوان URL يُجلب بترويسات remote.headers ويُخزَّن مؤقتًا كما يُخزَّن عنوان URL في coverageFile.paths، أو مسار مُخرَج بناء منزَّل، مطلقًا أو نسبيًا إلى المجلد. تقول بطاقة شريط الحالة عندها أين يقف هذا التشغيل منه، ويسرد Compare with CI Baseline الملفات التي تحرّكت. فارغ: لا خط أساس. لكل مجلد.

مقياس الألوان والشارات

coverage: 83%

الإعدادالافتراضيما الذي يفعله
colorScale.presetdefaultيستبدل colorblind الأحمر والكهرماني والأخضر بالقرمزي والبرتقالي والأزرق (Okabe–Ito) أينما تُلوَّن التغطية؛ والألوان التي غيّرتها أدناه لها الأولوية.
colorScale.lowColor#8b1a1aالطرف الأدنى من تدرّج التغطية.
colorScale.midColor#b8860bاللون المحوري للتدرّج.
colorScale.highColor#228b22الطرف الأعلى (100%) من التدرّج.
colorScale.lowThreshold80النسبة التي تنتقل عندها الشارة من منخفض إلى متوسط.
colorScale.highThreshold90النسبة التي تنتقل عندها الشارة من متوسط إلى مرتفع (وهي أيضًا محور التدرّج).
heatmap.colors["#fff1a8", …, "#a63603"]درجات الخريطة الحرارية الخمس في السمة الفاتحة، من السطر الأقل تنفيذًا إلى السطر الأكثر تنفيذًا.
heatmap.colorsDark["#6e5f22", …, "#ff6a00"]الشيء نفسه للسمة الداكنة، حيث يعني الأسطع مراتٍ أكثر.

الدرجة المركّبة (المتوسط التوافقي المرجّح)

الإعدادالافتراضيما الذي يفعله
whmWeights.lines1وزن تغطية الأسطر/العبارات.
whmWeights.functions1وزن تغطية الدوال.
whmWeights.regions1.5وزن تغطية المناطق (llvm-cov).
whmWeights.branches2وزن تغطية التفرّعات.
whmWeights.mcdc4وزن تغطية MC/DC. القيمة 0 تستبعدها.
whmWeights.instantiations0.5وزن إنشاء نسخ قوالب C++‎ (llvm-cov).

العتبات والامتثال

الإعدادالافتراضيما الذي يفعله
threshold.profilestandardيضبط standard القيم الافتراضية الواردة أدناه؛ ويضع safety كل بوابة عند 100 باستثناء درجة الطفرات؛ أما custom فيترك ما ضبطته كما هو. وفي الملف الافتراضي تبقى مقاييس السلامة بلا بوابة — فالمشروع الذي لا يقيس MC/DC لا يُعدّ راسبًا بسبب ذلك.
threshold.statement80أدنى نسبة للعبارات. القيمة 0 تعطّل الفحص.
threshold.branch70أدنى نسبة للتفرّعات.
threshold.mcdc0أدنى نسبة لـ MC/DC.
threshold.functions80أدنى نسبة للدوال.
threshold.regions75أدنى نسبة للمناطق (llvm-cov).
threshold.instantiations0أدنى نسبة لإنشاء النسخ (llvm-cov)؛ تُتخطّى المشاريع المكتوبة بلغة C فقط.
threshold.conditions0أدنى نسبة للشروط.
threshold.functionCalls0أدنى نسبة لاستدعاءات الدوال، حيثما وفّرها التقرير.
threshold.objectCode0أدنى نسبة للشيفرة الهدف، حيثما وفّرها التقرير.
threshold.mutation0أدنى درجة للطفرات، حيثما كان تقرير طفرات محمَّلًا.
threshold.weighted75أدنى درجة مركّبة.
compliance.modestrictstrict | whm | both | either.
compliance.diagnosticsfalseخطأ واحد في المشكلات لكل عتبة لم تتحقق، على ملف التتبّع.
threshold.unmeasuredFiles-1أقصى عدد للملفات غير المقيسة (يتطلّب ضبط unmeasured.mode على list أو count). -1 لا يفحص؛ و0 يُخفق عند أول ملف لم يحمّله أي اختبار.
problems.perLineoffoff | uncovered | uncoveredAndPartial: مدخل Information (خط متعرّج في المحرر) لكل كتلة من الأسطر غير المغطّاة المتتالية في كل مستند مفتوح، واختياريًا مدخل لكل سطر فيه فرع لم يُسلك قط. مستقل عن problems.enabled. لكل مجلد.

الفروقات وإعادة التعيين والتقارير

الإعدادالافتراضيما الذي يفعله
pathRemap[]عمليات إعادة كتابة المسارات {from,to} بالترتيب؛ يجوز أن يستخدم to المتغيّر ${workspaceRoot}، الذي يجرّب مجلد ملف التتبّع نفسه أولًا ثم كل مجلد آخر في مساحة العمل. حين يترك التحميل ملفات بلا تطابق، تعرض نتيجة التحميل Apply Suggested Remap بالقاعدة المستنتجة من المسارات غير المتطابقة (وكذلك Suggest Path Remap Rule في لوحة الأوامر)؛ ولا يُكتب شيء حتى تنقر عليه. لكل مجلد.
ignore[]أنماط glob لملفات كاملة تُستبعد من التشغيل (vendor/**، **/*.generated.ts، build/**) — تُسقَط عند التحميل، فيَعُدّ كل عرض وبوابة وتصدير من دونها. تُطابَق مع المسار النسبي لمساحة العمل ومع المسار المطلق؛ والنمط الخالي من / يطابق اسمًا على أي عمق، مثل .gitignore. لكل مجلد.
ignore.generatedtrueيُبقي ملفات .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.perTestfalseيشغّل Run Tests with Coverage وصفة dotnet test صنفَ اختبار واحدًا في كل مرة ويسم كل تقرير بصنفه، فيستطيع التلميح وCodeLens وShow Tests That Ran This Line أن تقول أي الاختبارات نفّذت سطرًا — أبطأ، ولـ .NET فقط، الذي لا يستطيع تقرير Cobertura الخاص به قول ذلك بنفسه. لكل مجلد.
testRun.onSavefalseحفظ ملف مصدر يشغّل الاختبارات التي تغطّيه، مع التغطية، بعد لحظة من الحفظ: لحلّ .NET مشاريعُ الاختبار التي تشير إلى مشروع الملف المحفوظ فقط، بأمر dotnet test واحد لكل منها؛ ولأي مشغّل آخر وصفته كاملةً. عدة عمليات حفظ تشغيلٌ واحد؛ والتشغيل الجاري لا يُقاطَع. لكل مجلد.
testRun.skipWhenTestsFailfalseيترك Run Tests with Coverage التغطية على الشاشة كما كانت عندما يخرج المشغّل بفشل، ويقول ذلك في جزء Output — فلا يصبغ تشغيلٌ أحمر ملفًا أخضر بالأحمر. لكل مجلد.
unmeasured.modeoffoff | list | count: ما يُفعل بملفات مساحة العمل من نوع التشغيل التي لم يحمّلها أي اختبار (راجع غير مقيس مقابل غير مغطّى). يسمّيها list في عرض Coverage ونتيجة التحميل؛ ويحتسب count كلًّا منها أيضًا ملفًا غير مغطّى بعدد أسطر شيفرته. وتغييره يعيد التحميل.
unmeasured.exclude["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"]ملفات لا تُسمّى غير مقيسة أبدًا، بصيغة glob الخاصة بـ ignore — الملفات المقتصرة على الترويسات أو التصريحات افتراضيًا. لكل مجلد.
hotspots.crapThreshold30الدالة التي تبلغ درجة CRAP هذه أو تتجاوزها هي بؤرة خطر، تُسرد تحت شجرة عرض Coverage، الأسوأ أولًا — و30 هو الرقم الذي اقترحه واضعو هذا المقياس. ولا يحوي أيًّا منها إلا التقارير التي تحمل التعقيد الدوري. لكل مجلد.
hotspots.complexityThreshold0الدالة التي تبلغ هذا التعقيد أو تتجاوزه بؤرة خطر أيضًا، أيًّا كانت تغطيتها؛ و0 يعطّله. لكل مجلد.
gitDiff.enabledfalseقصر التغطية على الأسطر المتغيّرة مقارنةً بمرجع أساسي. لكل مجلد.
gitDiff.baseReforigin/masterمرجع Git الأساسي لتغطية الفروق. لكل مجلد.
externalHtmlReport.dir""قراءة مجلد HTML جاهز من llvm-cov show من أجل Annotated Source. لكل مجلد.
htmlReport.outputDir""مجلد الإخراج لأمر Generate Full HTML Report. لكل مجلد.
badge.outputPathcoverage-badge.svgالمكان الذي يكتب فيه Generate Coverage Badge ملف SVG — نسبةً إلى مجلد مساحة العمل أو مطلقًا، بالمتغيّرات نفسها التي في coverageFile.defaultLocation؛ وتُنشأ المجلدات الأصل. لكل مجلد.
badge.metriclineslines | branches | mcdc | weighted: الرقم على مستوى التشغيل الذي يظهر على الشارة (weighted هو الدرجة المركّبة لشريط الحالة). لا بيانات له ← n/a رمادية. لكل مجلد.
badge.autoUpdatefalseإعادة كتابة الشارة بعد كل تحميل ناجح، بصمت (تُسجَّل بوصفها [FUCINI_BADGE]). لكل مجلد.

العرض والتحليل

الإعدادالافتراضيما الذي يفعله
mcdcGutter.enabledfalseشريط هامش MC/DC ملوّن.
statusBar.enabledtrueإظهار عناصر شريط الحالة للتشغيل بأكمله ولكل ملف.
statusBar.showLaunchertrueمشغّل قائمة سريعة متاح دائمًا.
statusBar.showModeToggletrueزر في شريط الحالة يسمّي وضع الهامش؛ ونقرة واحدة تنقله إلى الوضع التالي.
codeLens.enabledtrueCodeLens للتغطية لكل دالة.
deadCode.enabledtrueالتحذير من الدوال ذات التغطية الصفرية.
staleWarning.enabledtrueتمييز الملفات التي لم يعد محتواها مطابقًا لتشغيلها.
explorerBadges.enabledfalseشارات التغطية والتلميح بجوار الملفات في المستكشف.
coverageFile.rememberPickstrueكتابة كل ملف مختار في coverageFile.paths.
coverageFile.sources[]من أي تقرير محمَّل تأتي أرقام الملف حين يقيسه أكثر من تقرير: قواعد مرتّبة { "files": glob, "report": glob }، تحسم أولاها مطابقةً. ومع "combine": "union" (مغطى حيث نفّذ أي تقرير السطر) أو "agree" (فقط حيث نفّذه كل تقرير، والاختلافات بالأزرق المخضر) تُدمج التقارير المطابقة. الخطط المدفوعة. لكل مجلد.
coverageFile.mergeStrategynewestللملفات التي لا تقرّر فيها أي قاعدة: newest (يفوز التقرير الذي كُتب أخيرًا) أو order (يفوز الإدخال اللاحق في coverageFile.paths، أيًّا كانت الأوقات). لكل مجلد.
sinceLastRun.enabledtrueعلامات هامش على الأسطر التي تغيّرت تغطيتها منذ التشغيل السابق.
dirtyMarks.enabledtrueنقطة هامش رمادية على الأسطر المعدَّلة منذ تحميل التشغيل.
editorGutter.modeoffoff | uncovered | coverage | heatmap: لا شيء غير النتائج المذكورة أعلاه، أو أشرطة على الأسطر غير المغطّاة (والمغطّاة جزئيًا) فقط، أو تلك مع شريط أخضر على كل سطر مغطّى، أو تلك مع ظلّ دافئ على كل سطر نُفِّذ بحسب عدد الإصابات. لكل مجلد.
lineHighlightoffoff | uncovered | coverage | heatmap: لون شبه شفاف خلف السطر نفسه، لما يعلّمه الهامش. إعداد مستقل، حتى يبقى الهامش نظيفًا بينما تُلوَّن الفجوات، أو العكس. لكل مجلد.
overviewRulerfollowfollow | uncovered | off: ما إذا كانت الأسطر غير المغطاة تحصل على شريط في مسطرة النظرة العامة لشريط التمرير. يرسمه uncovered حتى مع إيقاف الهامش — خريطة لفجوات الملف على امتداد شريط التمرير ولا شيء بجوار الشفرة؛ ويُبقي off الأعمدة ويحذف الشريط. لكل مجلد.
hitCounts.inlinefalse×N بعد كل سطر تبدأ عنده عبارة، بما في ذلك ×0. لكل مجلد.
testCoverage.publishtrueنشر كل تشغيل محمَّل إلى عرض Test Coverage الخاص بـ VS Code نفسه (لوحة Test Explorer، والنسب المئوية في Explorer، وShow Inline Coverage). عند التعطيل: لا مدخل Fucini Coverage في Test Explorer؛ وما زال Show in Test Coverage View ينشر عند الطلب.
coverageView.perspectivefoldersأي شجرة يعرضها عرض Coverage: مجلدات مساحة العمل وملفاتها، أو — لتقرير .NET يسمّي أصنافه (Cobertura وCoverlet وOpenCover) — مساحات الأسماء والأصناف والتوابع، لكل منها أرقامها. تكتب القائمة المنسدلة في العرض هذا الإعداد؛ ولا تُعرض إلا عندما يحمل التشغيل أسماء أصناف.
coverageView.mergedMarkstrueمع تحميل عدة ملفات تتبع: إحاطة شارة ملف التتبع بإطار لكل ملف طغت أرقامه على تقرير أقدم، والسماح للنقر على صف ملف تتبع بإبراز الملفات التي قاسها. عند الإيقاف: شارات عادية وبلا إبراز؛ وتظل صفوف ملفات التتبع تعدّ ما طُغي عليه.
excludeCommentstrueاستبعاد أسطر التعليقات والأسطر الفارغة & أسطر LCOV_EXCL_*، وموجّهات المعالج المسبق في C وC++ وObjective-C وCUDA وC#.
excluded.includeInTotalsfalseاحتساب الأسطر المستبعدة ضمن الإجماليات.

السجل

الإعدادالافتراضيما الذي يفعله
history.enabledfalseحفظ عمليات التشغيل محليًا للاتجاه والمقارنة.
history.retention20أقصى عدد لعمليات التشغيل المحفوظة.

إجراءات سريعة لشريط الحالة

الكل افتراضيًا false عدا الأخيرين؛ فعّل لإضافة الإجراء المطابق إلى القائمة السريعة: quickActions.compareWithLastRun، openAnnotatedSource، openAnnotatedSourceToSide، toggleAnnotatedSource، toggleWatch، worstCoveredFiles, worstCoveredFolders، worstCoveredFunctions، nextUncovered، previousUncovered، checkThresholds، copyUncoveredLines، compareHistoryRuns، exportJson، exportReport، generateBadge، showTestCoverage، chooseGutterMode، toggleInlineHitCounts.

القياس عن بُعد

الإعدادالافتراضيما الذي يفعله
telemetry.enabledfalseبيانات الاستخدام، مُعطَّلة افتراضيًا. في مستوى Community، يبادلها Unlock Full Features بكل ميزات Pro، بما فيها MC/DC، لمدة 30 يومًا، مرة واحدة لكل جهاز؛ والترخيص المدفوع لا يتأثر بها. لمعرفة ما يُرسَل، راجع سياسة الخصوصية. ويخضع الملخّص اليومي وإشعار الإزالة أيضًا لإعداد telemetry.telemetryLevel الخاص بـ VS Code؛ أمّا إشعار التثبيت وبعض الأحداث الصغيرة فلا.

التحديثات

الإعدادالافتراضيما الذي يفعله
update.checkForUpdatestrueالتحقق دوريًا من fucini.software ومن VS Code Marketplace بحثًا عن إصدار أحدث، واقتراح تثبيت الأحدث منهما.

الترخيص

الإعدادالافتراضيما الذي يفعله
license.key""مفتاح التفعيل للإصدار التجريبي المسبق (سلسلة بالشكل FCK1.…). مرتبط بهذا الجهاز/المستخدم، وقد يحمل تاريخ انتهاء وحدودًا لكل ميزة. راجع التقييم والتفعيل.