Оцінювальний випуск. Усі можливості нижче доступні протягом безкоштовного 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 визначається пороговими значеннями для кожної метрики та налаштовуваним режимом.
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 вбудував його черезбез жодного хостингового сервісу;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 | ✓ | ✓ |
| Покриття різниці, історія і тренд, позначки «з попереднього прогону» | ✓ | ✓ |
| Завантаження покриття командою | 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 — це 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} у ньому означає саме цю теку.
Локалізація
| Налаштування | Типове значення | Що робить |
|---|---|---|
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 | [] | Файл(и) трасування для завантаження & об’єднання — відносно базової теки, абсолютно (ті самі змінні, що й вище) або як URL-адреса http(s)://, що отримується при кожному завантаженні; додайте #lcov.info (або іншу назву файлу) як фрагмент URL-адреси, коли сама адреса не має розширення. Відносний глоб із * шукає рекурсивно під базовою текою; абсолютний запис теж може містити підстановку (${workspaceFolder}/build/coverage-merged/*.lcov.info, ** для будь-якої глибини) — пошук іде в теках перед нею. Для кожної теки. |
watch.enabled | true | Перезавантажувати покриття, коли файл трасування змінюється — або з'являється, для абсолютного запису поза робочою областю. Для кожної теки. |
watch.reloadAfterTasks | [] | Назви завдань (label або source: name, як-от npm: test), завершення яких перезавантажує покриття, незалежно від того, чи ввімкнено watch.enabled. Для кожної теки. |
remote.headers | [] | Заголовки Name: value, що надсилаються з кожним отриманням за URL-адресою; змінні розгортаються, тож Authorization: Bearer ${env:CI_TOKEN} тримає токен подалі від settings.json. Для кожної теки. |
remote.refreshMinutes | 0 | Повторно отримувати записи-URL кожні N хвилин (умовний GET; 0 = лише під час завантаження). Для кожної теки. |
baseline.report | "" | Звіт, з яким звіряється кожен завантажений запуск — звіт гілки main, як його публікує сервер збірки: URL, що запитується з remote.headers і кешується так само, як URL із coverageFile.paths, або шлях до завантаженого артефакту, абсолютний чи відносно теки. Картка в рядку стану тоді каже, де цей запуск стоїть відносно нього, а 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 | [] | Глоб-шаблони цілих файлів, які слід вилучити з прогону (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 називає їх у поданні Coverage та в результаті завантаження; count ще й зараховує кожен як непокритий файл зі стількома рядками, скільки в ньому рядків коду. Зміна перезавантажує. |
unmeasured.exclude | ["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"] | Файли, які ніколи не називаються невиміряними, у глоб-синтаксисі ignore — типово файли лише з заголовками та лише з оголошеннями. Для кожної теки. |
hotspots.crapThreshold | 30 | Функція з такою оцінкою CRAP або вищою — це гаряча точка ризику, перелічена під деревом подання Coverage, найгірші першими — 30 є числом, яке запропонували автори метрики. Їх мають лише звіти, що несуть цикломатичну складність. На теку. |
hotspots.complexityThreshold | 0 | Функція такої складності або вищої — теж гаряча точка, незалежно від її покриття; 0 це вимикає. На теку. |
gitDiff.enabled | false | Обмежити покриття рядками, зміненими відносно базового посилання. Для кожної теки. |
gitDiff.baseRef | origin/master | Базове посилання Git для diff-покриття. Для кожної теки. |
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, відсотки в Провіднику, 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 днів, один раз на машину; на платну ліцензію це не впливає. Що саме надсилається, див. у політиці конфіденційності. Щоденне зведення та повідомлення про видалення також залежать від власного параметра VS Code telemetry.telemetryLevel; сигнал про встановлення та кілька невеликих подій — ні. |
Оновлення
| Налаштування | Типове значення | Що робить |
|---|---|---|
update.checkForUpdates | true | Періодично перевіряти fucini.software і VS Code Marketplace на новіший випуск і пропонувати встановити новіший із них. |
Ліцензування
| Налаштування | Типове значення | Що робить |
|---|---|---|
license.key | "" | Ключ активації для ознайомчого пре-релізу (рядок FCK1.…). Прив’язаний до цього комп’ютера/користувача; може мати термін дії та обмеження за функціями. Див. Ознайомлення та активація. |