МОЖЛИВОСТІ ТА НАЛАШТУВАННЯ

Усе, що вона робить, усе, що можна налаштувати

Повний огляд набору можливостей і повний довідник конфігурації — кожне налаштування з його значенням за замовчуванням.

Завантажити VSIX

Оцінювальний випуск. Усі можливості нижче доступні протягом безкоштовного 14-денного пробного періоду. Після нього ліцензійний ключ доступний на запит, видається автоматично, і ключ може вмикати або обмежувати окремі можливості для кожного користувача. Запросити ліцензію →

Коли тести написав ШІ

Покриття проти згенерованого набору тестів

Огляд викладає загальний аргумент. Ось той самий аргумент, прикладений до самого переліку можливостей: згенерований набір тестів хибить у характерний спосіб — кожен рядок зачеплено, половину рішень так і не взято, а кілька функцій названо в заголовках тестів, але жодного разу не викликано, — і п'ять пунктів нижче саме цю форму й роблять видимою.

  • Покриття гілок і MC/DC разом із підказкою по кожній вітці та кожному рішенню відділяють рядок виконався від рішення було перевірене. Набір тестів, що йде щасливим шляхом, показує майже 100% за рядками і близько 50% за гілками — і саме цей розрив і є знахідкою. Зелений прогін тестів не показує з нього нічого.
  • Складений бал — це гармонійне середнє, тож сильна метрика не може прикрити слабку; саме така арифметика й потрібна згенерованому набору тестів. Усереднення числа за рядками з числом за гілками поховало б єдине число, на яке варто дивитися.
  • Попередження про мертвий код заводять запис у панель Problems для будь-якої функції, що має вимірювані рядки й нульове покриття. Набір тестів, який називає функцію в заголовку тесту й ніколи до неї не доходить, більше ніде не впаде.
  • Diff-покриття відносно базового git-рефа звужує все вищесказане до рядків, які щойно змінилися, — до коду, який ви прийняли сьогодні по обіді, а не до середнього за весь час життя репозиторію, з яким великий наявний набір тестів залюбки й далі виглядатиме здоровим.
  • Copy Uncovered Lines видає рівно те, що не виконалося, у форматі Markdown — тобто те, що можна вставити просто назад тому асистентові, який цей набір тестів і написав.

Ніщо з цього не читає тест і не судить його, і нічого тут не слід розуміти як таку заяву: тест узагалі без жодних перевірок усе одно покриває кожен рядок, якого торкається. Ці метрики вимірюють ту частину, яку рецензент не втримає в голові, — який код ніколи не виконувався.

Унікально для цього розширення

Ваше покриття рядків показує 100%. 312 байтів вашого двійкового файлу так і не виконалися.

Кожна інша метрика тут вимірюється з коду: інструментуйте код, запустіть інструментовану збірку, порахуйте, що спрацювало. Покриття об'єктного коду вимірює те, до чого не дістанеться жоден засіб на рівні джерела — скільки зібраного двійкового файлу справді виконалося, у байтах інструкцій, спостерігаючи за потоком інструкцій. Компілятор породжує код, якого немає в жодному вашому рядку: перевірки меж масивів, таблиці переходів switch, вивантаження регістрів, допоміжні підпрограми рантайму для ділення чи плаваючої коми. Нічого з цього не з'являється у вашому джерелі, тож жоден засіб на рівні джерела — включно з цим розширенням, для будь-якої іншої зчитуваної ним метрики — не скаже, чи це виконалося. Це також єдина тут метрика, що відповідає на питання чи покриває це асемблер?, оскільки рукописний асемблер ніколи не інструментується.

DO-178C прямо називає це: на рівні A воно вимагається на додачу до MC/DC. Жодне інше розширення VS Code його не читає. Як отримати це з вбудованого пристрою →

Можливості

Основа

  • Подання Coverage з кожним виміряним файлом, оглядова лінійка та Annotated Source; у власному полі редактора типово лише те, що варте позначки — смужки MC/DC, трикутники «з попереднього прогону», крапки відредагованих рядків, — а смужки лише на непокритих рядках або теплова карта влучань за одне налаштування звідси.
  • Порядкове покриття операторів, гілок, функцій, регіонів, MC/DC і інстанціацій C++ — залежно від того, що надає файл трасування.
  • Прийом кількох форматів і детермінований злиття кількох запусків із записаним походженням даних.
  • Переприв'язка шляхів — шляхи CI build-машини → ваш локальний робочий простір.
  • Diff-покриття — позначає лише рядки, змінені відносно базового посилання git.
  • Значки в Провіднику та елемент рядка стану для всього запуску, з кольоровим кодуванням за композитним показником.
  • Режим спостереження — автоматичне перезавантаження при зміні файлу трасування.
  • Run Tests with Coverage — розпізнає тестовий рушій із кореня робочого простору й запускає його з увімкненим покриттям, завантажуючи записане.
  • Віддалені файли трасування — запис coverageFile.paths може бути URL-адресою 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 — кожне завантаження також публікується через API Test Coverage редактора (testCoverage.publish), тож панель покриття в Test 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).

Аналіз безпосередньо в редакторі

  • Function 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, XML Cobertura, SARIF або автономний значок SVG. Із двадцятьма п'ятьма читачами й цими записами розширення конвертує між форматами: завантажте JaCoCo чи llvm-cov JSON і видайте LCOV, який читають Codecov, Coveralls і SonarQube, або XML Cobertura, який зчитують 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 після 14-денного пробного періоду; 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 JSONпо 5 на тижденьбез обмежень
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 — це API VS Code
Позначки в 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 на конвеєрі, що її створив. Стежте за новинами, щоб дізнатися про перший випуск.

Довідник налаштувань

Налаштовується в інтерфейсі Settings (пошук за 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[]Файл(и) трасування для завантаження & об’єднання — відносно базової теки, абсолютно (ті самі змінні, що й вище) або як URL-адреса http(s)://, що отримується при кожному завантаженні; додайте #lcov.info (або іншу назву файлу) як фрагмент URL-адреси, коли сама адреса не має розширення. Відносний глоб із * шукає рекурсивно під базовою текою; абсолютний запис теж може містити підстановку (${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""Звіт, з яким звіряється кожен завантажений запуск — звіт гілки main, як його публікує сервер збірки: URL, що запитується з remote.headers і кешується так само, як URL із coverageFile.paths, або шлях до завантаженого артефакту, абсолютний чи відносно теки. Картка в рядку стану тоді каже, де цей запуск стоїть відносно нього, а Compare with CI Baseline перелічує файли, що змінилися. Порожньо: без базової лінії. На теку.

Колірна шкала та значки

coverage: 83%

НалаштуванняТипове значенняЩо робить
colorScale.presetdefaultcolorblind замінює червоний, бурштиновий і зелений на червоно-помаранчевий, помаранчевий і синій (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.profilestandardstandard задає наведені нижче типові значення; 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. Для кожної теки.

Diff, переприв'язка шляхів і звіти

НалаштуванняТипове значенняЩо робить
pathRemap[]Упорядковані перезаписи шляхів {from,to}; to може використовувати ${workspaceRoot}, що спочатку пробує власну теку файлу трасування, а потім кожну іншу теку робочої області. Коли після завантаження лишаються незіставлені файли, результат завантаження пропонує Apply Suggested Remap із правилом, виведеним із незіставлених шляхів (також Suggest Path Remap Rule у палітрі); доки ви не клацнете, нічого не записується. Для кожної теки.
ignore[]Глоб-шаблони цілих файлів, які слід вилучити з прогону (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.perTestfalseRun Tests with Coverage виконує рецепт dotnet test по одному тестовому класу за раз і позначає кожен звіт його класом, щоб підказка при наведенні, CodeLens і Show Tests That Ran This Line могли сказати, які тести виконали рядок — повільніше, і лише для .NET, чий звіт Cobertura сам цього сказати не може. На теку.
testRun.onSavefalseЗбереження джерела запускає тести, що його покривають, із покриттям, за мить після збереження: для рішення .NET — лише тестові проєкти, які посилаються на проєкт збереженого файлу, по одному dotnet test на кожен; будь-який інший виконувач — увесь свій рецепт. Кілька збережень — один запуск; запуск, що вже триває, не переривається. На теку.
testRun.skipWhenTestsFailfalseRun Tests with Coverage залишає покриття на екрані як було, коли виконувач завершується невдачею, і повідомляє про це в панелі Output — червоний запуск не фарбує зелений файл червоним. На теку.
unmeasured.modeoffoff | list | count: що робити з файлами робочої області того ж виду, що й прогін, яких не завантажив жоден тест (див. Невиміряне проти непокритого). list називає їх у поданні Coverage та в результаті завантаження; count ще й зараховує кожен як непокритий файл зі стількома рядками, скільки в ньому рядків коду. Зміна перезавантажує.
unmeasured.exclude["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"]Файли, які ніколи не називаються невиміряними, у глоб-синтаксисі ignore — типово файли лише з заголовками та лише з оголошеннями. Для кожної теки.
hotspots.crapThreshold30Функція з такою оцінкою CRAP або вищою — це гаряча точка ризику, перелічена під деревом подання Coverage, найгірші першими — 30 є числом, яке запропонували автори метрики. Їх мають лише звіти, що несуть цикломатичну складність. На теку.
hotspots.complexityThreshold0Функція такої складності або вищої — теж гаряча точка, незалежно від її покриття; 0 це вимикає. На теку.
gitDiff.enabledfalseОбмежити покриття рядками, зміненими відносно базового посилання. Для кожної теки.
gitDiff.baseReforigin/masterБазове посилання Git для diff-покриття. Для кожної теки.
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, відсотки в Провіднику, 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 днів, один раз на машину; на платну ліцензію це не впливає. Що саме надсилається, див. у політиці конфіденційності. Щоденне зведення та повідомлення про видалення також залежать від власного параметра VS Code telemetry.telemetryLevel; сигнал про встановлення та кілька невеликих подій — ні.

Оновлення

НалаштуванняТипове значенняЩо робить
update.checkForUpdatestrueПеріодично перевіряти fucini.software і VS Code Marketplace на новіший випуск і пропонувати встановити новіший із них.

Ліцензування

НалаштуванняТипове значенняЩо робить
license.key""Ключ активації для ознайомчого пре-релізу (рядок FCK1.…). Прив’язаний до цього комп’ютера/користувача; може мати термін дії та обмеження за функціями. Див. Ознайомлення та активація.