Wydanie ewaluacyjne. Wszystkie poniższe funkcje są dostępne w trakcie bezpłatnego 14-dniowego okresu próbnego. Po nim klucz licencyjny jest dostępny na żądanie, wydawany automatycznie, a klucz może włączać lub ograniczać poszczególne funkcje dla danego użytkownika. Poproś o licencję →
Gdy testy napisała SI
Pokrycie wobec wygenerowanego zestawu testów
Przegląd przedstawia argument ogólny. Tutaj jest on zestawiony z samą listą funkcji, bo wygenerowany zestaw testów zawodzi w charakterystyczny sposób — każda linia dotknięta, połowa decyzji nigdy niepodjęta i kilka funkcji wymienionych w tytułach testów, lecz nigdy niewywołanych — a pięć pozycji poniżej właśnie ten kształt czyni widocznym.
- Pokrycie gałęzi i MC/DC, wraz z podpowiedzią dla każdej gałęzi i każdej decyzji, oddziela linia się wykonała od decyzja została przećwiczona. Zestaw idący wyłącznie szczęśliwą ścieżką pokazuje blisko 100% na liniach i blisko 50% na gałęziach — i to właśnie ten rozstęp jest znaleziskiem. Zielony przebieg testów nie pokazuje z tego nic.
- Wynik złożony to średnia harmoniczna, więc mocna metryka nie przykryje słabej — dokładnie ta arytmetyka, której potrzebuje wygenerowany zestaw testów. Uśrednienie liczby dla linii z liczbą dla gałęzi pogrzebałoby jedyną liczbę wartą spojrzenia.
- Ostrzeżenia o martwym kodzie dodają wpis w panelu Problems dla każdej funkcji z mierzalnymi liniami i zerowym pokryciem. Zestaw, który wymienia funkcję w tytule testu i nigdy do niej nie dociera, nigdzie indziej nie zawiedzie.
- Pokrycie diffa względem bazowego refa gita zawęża wszystko powyższe do linii, które właśnie się zmieniły — do kodu przyjętego dziś po południu, a nie do średniej z całego życia repozytorium, przy której duży istniejący zestaw testów będzie sobie dalej spokojnie wyglądał zdrowo.
- Copy Uncovered Lines wypisuje dokładnie to, co nigdy się nie wykonało, w Markdownie — czyli coś, co wkleja się prosto z powrotem temu asystentowi, który ten zestaw testów w ogóle napisał.
Nic z tego nie czyta testu i go nie ocenia, i niczego tutaj nie należy tak rozumieć: test bez ani jednej asercji nadal pokrywa każdą linię, której dotknie. Mierzone jest to, czego recenzent nie utrzyma w głowie — który kod nigdy się nie wykonał.
Unikatowe dla tego rozszerzenia
Twoje pokrycie wierszy mówi 100%. 312 bajtów Twojego pliku binarnego nigdy się nie wykonało.
Każda inna miara tutaj mierzona jest ze źródła: instrumentuj kod, uruchom instrumentowaną kompilację, policz, co się wyzwoliło. Pokrycie kodu obiektowego mierzy coś, do czego żadne narzędzie działające na źródłach nie sięgnie — jaka część zbudowanego pliku binarnego faktycznie się wykonała, w bajtach instrukcji, przez obserwację strumienia instrukcji. Kompilator emituje kod, za którym nie stoi żaden wiersz Twojego źródła: kontrole zakresu tablic, tablice skoków switch, zrzuty rejestrów, procedury pomocnicze środowiska wykonawczego dla dzielenia lub liczb zmiennoprzecinkowych. Nic z tego nie pojawia się w Twoim źródle, więc żadne narzędzie działające na źródłach — łącznie z tym rozszerzeniem, dla każdej innej odczytywanej przez nie miary — nie powie, czy to się wykonało. To także jedyna tutaj miara odpowiadająca na pytanie czy to obejmuje asembler?, bo ręcznie pisany asembler nigdy nie jest instrumentowany.
DO-178C wprost to nazywa: na poziomie A wymagane jest oprócz MC/DC. Żadne inne rozszerzenie VS Code tego nie odczytuje. Jak to uzyskać z urządzenia wbudowanego →
Możliwości
Podstawowe
- Widok Coverage każdego zmierzonego pliku, linijka przeglądu i Annotated Source; na własnym marginesie edytora domyślnie tylko to, co warte oznaczenia — paski MC/DC, trójkąty „od ostatniego przebiegu”, kropki edytowanych wierszy — a paski tylko na niepokrytych wierszach albo mapa cieplna liczby trafień o jedno ustawienie dalej.
- Pokrycie wiersz po wierszu dla instrukcji, gałęzi, funkcji, regionów, MC/DC i instancjacji C++, w zależności od tego, co dostarcza plik śledzenia.
- Wczytywanie wielu formatów i deterministyczne łączenie kilku przebiegów z zapisanym pochodzeniem.
- Przemapowanie ścieżek — ścieżki maszyny budującej CI → Twoje lokalne środowisko robocze.
- Pokrycie różnicowe — dekoruje tylko linie zmienione względem bazowej referencji git.
- Odznaki Explorer oraz element paska stanu na poziomie całego przebiegu, kolorowany według wyniku złożonego.
- Tryb obserwacji — automatyczne ponowne wczytywanie po zmianie pliku śledzenia.
- Run Tests with Coverage — rozpoznaje program uruchamiający testy po korzeniu obszaru roboczego i uruchamia go z włączonym pokryciem, wczytując to, co zapisze.
- Zdalne pliki śledzenia — wpis
coverageFile.pathsmoże być adresem URLhttps://: artefakt CI jest pobierany warunkowo (ETag / Last-Modified), z nagłówkami skonfigurowanymi wremote.headers, wczytywany jak plik lokalny i pobierany ponownie według zegara zremote.refreshMinutes; gdy pobranie się nie powiedzie, wczytywana jest ostatnia pobrana kopia. - Zmienne w ścieżkach —
${workspaceFolder},${workspaceFolderBasename},${userHome},${env:NAME},${command:id}i${config:section.key}w każdym ustawieniu ścieżki; nieznana zmienna zostaje tak, jak ją zapisano, więc literówka pojawia się w dzienniku wykrywania, zamiast zniknąć. - Obszary robocze wielokorzeniowe — każdy folder jest wykrywany z własnych ustawień (jego
.vscode/settings.jsonlub wpisu w.code-workspace), jego pliki śledzenia scalają się w jeden przebieg, widok Coverage grupuje pliki według folderu, a folder dodany lub usunięty sam przeładowuje pokrycie. - Dwa kolejne wyzwalacze przeładowania — bezwzględny wpis
coverageFile.pathspoza obszarem roboczym jest odpytywany, więc plik, który się tam pojawi, zostaje wczytany; awatch.reloadAfterTaskswymienia zadania (npm: test), których zakończenie przeładowuje pokrycie, niezależnie od tego, czy tryb obserwacji jest włączony. - Postęp, który można anulować — wczytanie dziesięciu lub więcej plików śledzenia, albo 8 MB lub więcej takich plików, oraz każdy Generate Full HTML Report działają pod powiadomieniem o postępie z przyciskiem Anuluj; anulowanie zostawia poprzedni przebieg wczytany.
- Własny widok Test Coverage VS Code — każde wczytanie jest też publikowane przez API Test Coverage edytora (
testCoverage.publish), więc panel pokrycia w Test Explorer, procenty per plik w Eksploratorze i własny przełącznik edytora Show Inline Coverage pokazują te same liczby; Show in Test Coverage View publikuje na żądanie i otwiera panel. Przy nazwanych testach (TN:w lcov) widok filtruje pokrycie pliku według testu. - Proponowana reguła przemapowania — gdy po wczytaniu zostają niedopasowane pliki (ścieżki z kontenera lub CI wobec lokalnego checkoutu), rozszerzenie wywodzi regułę
pathRemap, która wyjaśnia ich najwięcej, oferuje Apply Suggested Remap w wyniku wczytania i Suggest Path Remap Rule w palecie; bez kliknięcia nic nie jest zapisywane. - Wzorce ignorowania —
fuciniCoverage.ignore(vendor/**,**/*.generated.ts) usuwa całe pliki z przebiegu przy wczytaniu, więc każdy widok, bramka i eksport liczy bez nich; wynik wczytania mówi ile, a wyjście wymienia każdy z nich. - Niezmierzone a niepokryte — plik, którego żaden test nie wczytał, nie jest za Twoimi plecami oceniany jako 0%; pasek stanu mówi o nim not measured, a
unmeasured.modemoże wymienić takie pliki w widoku Coverage albo policzyć każdy jako niepokryty plik, zthreshold.unmeasuredFilesdo bramkowania ich liczby. - Widać, co zrobiło scalanie — przy kilku wczytanych plikach śledzenia każdy wiersz pliku podaje raport, z którego pochodzą jego liczby, plakietka ma obrys tam, gdzie te liczby zastąpiły starszy raport, każdy wiersz pliku śledzenia liczy, ile jego plików zostało zastąpionych lub zastąpiło inne, a kliknięcie wiersza pliku śledzenia podświetla jego pliki w drzewie (
coverageView.mergedMarks).
Wynik złożony i zgodność
Pojedyncza ważona średnia harmoniczna obejmująca wiersze, gałęzie, funkcje, regiony, MC/DC i instancjacje. Ponieważ jest to średnia harmoniczna, słaba metryka nie może zostać zamaskowana przez idealną. Wagi domyślnie odpowiadają poziomom IEC 61508 / ISO 26262 / DO-178C, a werdykt COMPLIANT / NON-COMPLIANT jest determinowany przez progi dla poszczególnych metryk oraz konfigurowalny tryb.
Screenshot pending — add assets/img/statusbar.png (see SCREENSHOTS.md).Analiza w edytorze
- CodeLens funkcji — % pokrycia na funkcję, kliknięcie przenosi do pierwszej niepokrytej linii.
- Podpowiedzi po najechaniu na gałąź i MC/DC — liczby wzięte/niewzięte na gałąź oraz podział warunek/wektor na decyzję; opcjonalny kolorowy wskaźnik marginesu MC/DC.
- Ostrzeżenia o martwym kodzie — ostrzeżenie w panelu Problems dla funkcji z mierzalnymi liniami i zerowym pokryciem.
- Nawigacja Next/Previous Uncovered.
- Ostrzeżenie o niezgodności, gdy zawartość pliku nie pasuje już do jego przebiegu — aktualizowane przy zapisie lub zmianie na dysku, z dokładną różnicą po najechaniu.
- Od ostatniego przebiegu — czerwony trójkąt na każdym wierszu wykonanym w poprzednim przebiegu, a nie w tym, zielony w odwrotnym przypadku, z linijką przeglądu i liczbą trafień po najechaniu.
- Edytowane bufory — każde oznaczenie, podpowiedź i CodeLens przesuwa się z tekstem podczas edycji i znika z przepisanego wiersza, gdzie szara kropka mówi dlaczego.
- Tryby marginesu edytora —
editorGutter.modeogranicza margines do ustaleń (off), stawia pasek na każdym wierszu, który nigdy się nie wykonał, i bursztynowy tam, gdzie gałęzi nigdy nie wzięto (uncovered), albo dodaje ciepły odcień na każdym wykonanym wierszu, tym gorętszy, im częściej się wykonał (heatmap); Choose Editor Gutter Mode... przełącza z palety lub z menu paska stanu. - Liczniki trafień w wierszu —
hitCounts.inlinedopisuje×12za każdym wierszem, w którym zaczyna się instrukcja, łącznie z×0; Toggle Inline Hit Counts to przełącza. - Wpisy w Problems per wiersz —
problems.perLinestawia diagnostykę Information na każdym bloku wierszy, które nigdy się nie wykonały, w otwartym dokumencie (martwa funkcja to jeden wpis, nie czterdzieści), a opcjonalnie na każdym wierszu z gałęzią, której nigdy nie wzięto; wpisy podążają za swoimi wierszami podczas edycji. - Podbarwienie wiersza i mapa na pasku przewijania —
lineHighlightumieszcza półprzezroczyste tło za samymi wierszami zamiast (lub obok) znaku na marginesie, aoverviewRulersam decyduje o pasku na pasku przewijania: przy wyłączonym marginesie to mapa luk pliku i nic obok kodu. - Który plik śledzenia pokrył ten wiersz — przy kilku scalonych raportach dymek z liczbą wykonań wymienia każdy, który pokrył wiersz (łącznie z nazwą zestawu z
TN:w lcov), a kliknięcie wiersza pliku śledzenia w widoku Coverage podświetla wiersze, które on wniósł.
- Czerwony, bursztynowy i zielony — tryb
coverageustawieńeditorGutter.modeilineHighlightmaluje każdy zmierzony wiersz kolorami skali kolorów; przycisk trybu na pasku stanu iAlt+Gprzechodzą od jednego trybu do następnego. - Twoje kolory z podglądem — skala kolorów i odcienie mapy cieplnej (
heatmap.colors,heatmap.colorsDark) to ustawienia, a strona ustawień pokazuje je na jasnym i ciemnym edytorze już w trakcie wybierania. - Z którego raportu pochodzi plik — gdy dwa raporty mierzą ten sam kod, reguły
coverageFile.sourceslub Choose Coverage Source for This File... decydują, który z nich pokazuje każdy plik, zamiast aby wygrywał najnowszy.
Raportowanie i historia
- Generate Full HTML Report — samodzielnie generowany, wielostronicowy raport dla każdego katalogu; Open Annotated Source dla pojedynczego pliku.
- Opcjonalna lokalna historia przebiegów z trendem pokrycia (▲/▼) oraz Compare Two History Runs i Compare with Last Run.
- Show Worst-Covered Files / Functions i Copy Uncovered Lines (Markdown).
- Export Fucini JSON — pełny znormalizowany model.
- Export Coverage Report... — ten sam przebieg jako CSV (na plik lub na funkcję), podsumowanie Markdown, plik śledzenia LCOV, XML Cobertura, SARIF albo samodzielna odznaka SVG. Z dwudziestoma pięcioma czytnikami i tymi zapisami rozszerzenie konwertuje między formatami: wczytaj JaCoCo lub llvm-cov JSON i wypisz LCOV, który czytają Codecov, Coveralls i SonarQube, albo XML Cobertura, który wczytują Jenkins, GitLab i Azure DevOps.
- Generate Coverage Badge — SVG w stylu shields zapisywany prosto do obszaru roboczego (
badge.outputPath, domyślniecoverage-badge.svg), aby README osadził go przezbez żadnej usługi hostowanej;badge.metricwybiera wiersze, gałęzie, MC/DC lub wynik złożony, kolor podąża za poziomamicolorScale.*, abadge.autoUpdateprzepisuje ją po każdym wczytaniu.
Screenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
Screenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).Community i Pro, funkcja po funkcji
Dwa wpisy, jedna baza kodu. Community to na stałe bezpłatna edycja i to, na czym ląduje wpis Pro po 14-dniowym okresie próbnym; Pro i okres próbny to wszystko, bez limitów. Granica jest wytyczona tak, by edycja bezpłatna zawsze widziała każdy wynik i płaciła tylko za wygodę, dowód i skalę — w VS Code Fucini Coverage: What Community Includes pokazuje tę samą listę z dzisiejszymi licznikami dla każdego limitu.
| Możliwość | Community (bezpłatnie) | Pro i okres próbny |
|---|---|---|
| Wszystkie 25 formatów, scalanie wielu plików, mapowanie ścieżek | ✓ | ✓ |
| Marginesy, linijka przeglądu, odznaki Eksploratora, widok Pokrycie, CodeLens, podpowiedzi | ✓ | ✓ |
| Tryb obserwacji z automatycznym przeładowaniem; Run Tests with Coverage | ✓ | ✓ |
| Pokrycie diffu, historia i trend, oznaczenia „od ostatniego przebiegu” | ✓ | ✓ |
| Wczytywanie pokrycia poleceniem | 25 dziennie (wczytania automatyczne się nie liczą) | bez limitu |
| Porównywanie przebiegów, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON | po 5 tygodniowo | bez limitu |
| Annotated Source, w miejscu | 5 tygodniowo | bez limitu, plus stały panel boczny i Generate Full HTML Report |
| Export Coverage Report | CSV (na plik, na funkcję) | także Markdown, LCOV, Cobertura XML, SARIF, odznaka SVG |
| Plik, który nie zgadza się już ze swoim pokryciem | zgłaszany i przyciemniany | także wiersz, funkcja lub suma kontrolna, które to udowodniły |
| Mutanty, które przeżyły | oznaczone na linii, z ich liczbą | także to, co każdy mutant zmienił |
| Testy, które wykonały linię | ile ich było | także ich nazwy |
| CRAP | Max CRAP przebiegu, CRAP przy każdej funkcji | także rankingowa lista Riskiest Methods |
| Risk hotspots | ile ich jest i najgorszy wynik | także lista rankingowa, każda pozycja otwiera swoją funkcję |
| Pokrycie MC/DC, paski na marginesie i podpowiedź | — | ✓ |
| Pokrycie kodu obiektowego oceniane i bramkowane | zgłaszana jest tylko obecność | ✓ |
| Plik mierzony przez kilka raportów | najnowszy raport | także wybór jednego dla każdego pliku lub ich połączenie (agree / union) |
| Wymagana telemetria | nie — opcjonalnie i raz na maszynę Unlock Full Features wymienia szczegółową telemetrię użycia na 30 dni wszystkiego z prawej kolumny | nie |
Tydzień trwa siedem dni od pierwszego użycia, które go otworzyło, a nic, co jedynie odczytuje pokrycie, nie jest liczone. Subskrypcja to jeszcze nie ten moment? Karnet 7-dniowy to wszystko z prawej kolumny na jeden tydzień, opłacone raz, bez niczego do anulowania.
VS Code i Visual Studio obok siebie
Jeden produkt, dwa edytory, jeden czytnik: ten sam raport daje te same liczby, co do cyfry, w obu. Coverage Studio dla Visual Studio działa w Visual Studio 2022 i 2026 — Community, Professional i Enterprise i nie korzysta z własnego pokrycia kodu Visual Studio, które w 2022 jest tylko w Enterprise; jest w cenie każdego płatnego planu, a urządzenie z oboma edytorami to jedno miejsce. Wszystko nad kreską jest w obu; pod nią to, czego Visual Studio nie ma odpowiednika, i to, co tam dopiero nadejdzie.
| Możliwość | VS Code | Visual Studio |
|---|---|---|
Wszystkie 25 formatów, scalanie wielu plików, mapowanie ścieżek, te same ustawienia fuciniCoverage.* i .vscode/settings.json | ✓ | ✓ |
| Marginesy, linijka przeglądu, liczniki trafień, soczewka na funkcję, podpowiedzi, widok Coverage, pasek stanu i jego karty | ✓ | ✓ |
| Tryb obserwacji z automatycznym przeładowaniem; Next Uncovered, Next Partly-Tested Decision; kopiowanie jako Markdown | ✓ | ✓ |
| Wynik złożony, progi i werdykt COMPLIANT; MC/DC; CRAP | ✓ | ✓ |
| Getting Started, w 18 językach | przewodnik | strona w Tools → Coverage Studio |
| Run Tests with Coverage, Run This Test with Coverage, pokrycie po każdym zapisie; własny panel Test Coverage edytora | ✓ | ✓, oraz Collect Coverage in Test Explorer… — panel Test Coverage to API VS Code |
| Odznaki w Eksploratorze | ✓ | — (Solution Explorer nie może dekorować plików) |
| Annotated Source, raport HTML, eksporty, Check Thresholds, Error List, historia i trend, pokrycie diff | ✓ | ✓ |
| Które testy wykonały linię, wykluczanie z drzewa i z edytora, perspektywa przestrzeni nazw i pole wyszukiwania, sesje pokrycia, wykres trendu, linia bazowa CI | ✓ | ✓, plus Run Native Project with Coverage dla projektu C++ |
| Darmowy poziom, okres próbny, płatność | ✓ | — (płatny plan; klucz jest znajdowany na maszynie, gdzie VS Code jest aktywowany) |
Następne: całe to pokrycie w Azure DevOps, w bezpłatnym rozszerzeniu. Azure DevOps pokazuje pokrycie na buildzie tylko na tyle, na ile sięga jego własny format — wiersze, a gałęzie jako procent. Fucini DevOps Studio pokaże wszystko, co czyta Coverage Studio: każdy z tych 25 formatów, dla każdego języka, z MC/DC, warunkami, wynikiem złożonym i progami, jako kartę Coverage na pipelinie, który go wytworzył. Śledź aktualności w oczekiwaniu na pierwsze wydanie.
Referencja ustawień
Konfiguruj w interfejsie ustawień (wyszukaj Fucini Coverage) lub w 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.
Wiersz kończący się na Per folder. przyjmuje w obszarze roboczym wielokorzeniowym wartość na poziomie folderu: każdy folder jest wykrywany z własnym wpisem w .vscode/settings.json lub .code-workspace, a ${workspaceFolder} w nim oznacza ten folder.
Lokalizacja
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
language | auto | Przypina własny interfejs tego rozszerzenia (pasek stanu, powiadomienia, dymki, widoki licencji i raportu) do konkretnego języka, niezależnie od języka wyświetlania VS Code. auto podąża za VS Code. Jedno z auto, en, uk, nl, de, fr, es, hr, pl, it, pt, ru, tr, he, ja, zh, hi, ko, ar. Nie zmienia pozycji palety poleceń ani etykiet/opisów interfejsu ustawień — te VS Code pobiera ze swojego języka wyświetlania. |
Wykrywanie i wczytywanie
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
coverageFile.defaultLocation | "" | Folder bazowy dla wykrywania i okien wyboru plików. Zmienne: ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id}, ${config:section.key}. Osobno dla każdego folderu. |
coverageFile.paths | [] | Pliki śladu do wczytania & scalenia, względem folderu bazowego, bezwzględne (te same zmienne co powyżej) albo adres URL http(s):// pobierany przy każdym wczytaniu — dodaj #lcov.info (lub inną nazwę pliku) jako fragment adresu URL, gdy sam adres nie ma rozszerzenia. Względny wzorzec z * przeszukuje rekurencyjnie pod folderem bazowym; wpis bezwzględny też może zawierać symbol wieloznaczny (${workspaceFolder}/build/coverage-merged/*.lcov.info, ** dla dowolnej głębokości), przeszukiwany pod folderami przed nim. Osobno dla każdego folderu. |
watch.enabled | true | Wczytaj pokrycie ponownie, gdy plik śladu się zmieni — lub pojawi, dla wpisu bezwzględnego poza obszarem roboczym. Osobno dla każdego folderu. |
watch.reloadAfterTasks | [] | Nazwy zadań (label albo source: name, jak npm: test), których zakończenie przeładowuje pokrycie, niezależnie od tego, czy watch.enabled jest włączone. Osobno dla każdego folderu. |
remote.headers | [] | Nagłówki Name: value wysyłane z każdym pobraniem adresu URL; zmienne są rozwijane, więc Authorization: Bearer ${env:CI_TOKEN} trzyma token z dala od settings.json. Osobno dla każdego folderu. |
remote.refreshMinutes | 0 | Pobieraj ponownie wpisy URL co N minut (warunkowy GET; 0 = tylko przy wczytaniu). Osobno dla każdego folderu. |
baseline.report | "" | Raport, z którym porównywany jest każdy wczytany przebieg — raport gałęzi main, tak jak publikuje go serwer kompilacji: adres URL, pobierany z remote.headers i buforowany tak jak adres URL z coverageFile.paths, albo ścieżka pobranego artefaktu, bezwzględna lub względna wobec folderu. Karta na pasku stanu mówi wtedy, jak ten przebieg wypada wobec niego, a Compare with CI Baseline wymienia pliki, które się zmieniły. Puste: brak linii bazowej. Na folder. |
Skala kolorów i plakietki
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
colorScale.preset | default | colorblind zamienia czerwień, bursztyn i zieleń na cynober, pomarańcz i błękit (Okabe–Ito) wszędzie, gdzie pokrycie jest kolorowane; kolory zmienione poniżej mają pierwszeństwo. |
colorScale.lowColor | #8b1a1a | Dolny kraniec gradientu pokrycia. |
colorScale.midColor | #b8860b | Kolor środkowy gradientu. |
colorScale.highColor | #228b22 | Górny kraniec gradientu (100%). |
colorScale.lowThreshold | 80 | % przy którym plakietka zmienia się z niskiej na średnią. |
colorScale.highThreshold | 90 | % przy którym plakietka zmienia się ze średniej na wysoką (i punkt środkowy gradientu). |
heatmap.colors | ["#fff1a8", …, "#a63603"] | Pięć odcieni mapy cieplnej dla jasnego motywu — od wiersza wykonanego najrzadziej do wiersza wykonanego najczęściej. |
heatmap.colorsDark | ["#6e5f22", …, "#ff6a00"] | To samo dla ciemnego motywu, gdzie jaśniej znaczy więcej. |
Wynik złożony (ważona średnia harmoniczna)
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
whmWeights.lines | 1 | Waga pokrycia wierszy/instrukcji. |
whmWeights.functions | 1 | Waga pokrycia funkcji. |
whmWeights.regions | 1.5 | Waga pokrycia regionów (llvm-cov). |
whmWeights.branches | 2 | Waga pokrycia gałęzi. |
whmWeights.mcdc | 4 | Waga pokrycia MC/DC. 0 je wyklucza. |
whmWeights.instantiations | 0.5 | Waga instancjacji szablonów C++ (llvm-cov). |
Progi i zgodność
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
threshold.profile | standard | standard ustawia domyślne wartości podane niżej; safety podnosi każdą bramkę do 100 poza wynikiem mutacyjnym; custom pozostawia to, co Państwo ustawili. W profilu domyślnym metryki bezpieczeństwa pozostają bez bramki — projekt, który nie mierzy MC/DC, nie jest z tego powodu odrzucany. |
threshold.statement | 80 | Minimalny % instrukcji. 0 wyłącza bramkę. |
threshold.branch | 70 | Minimalny % gałęzi. |
threshold.mcdc | 0 | Minimalny % MC/DC. |
threshold.functions | 80 | Minimalny % funkcji. |
threshold.regions | 75 | Minimalny % regionów (llvm-cov). |
threshold.instantiations | 0 | Minimalny % instancjacji (llvm-cov); projekty wyłącznie w C są pomijane. |
threshold.conditions | 0 | Minimalny % warunków. |
threshold.functionCalls | 0 | Minimalny % wywołań funkcji, jeśli raport je zawiera. |
threshold.objectCode | 0 | Minimalny % kodu obiektowego, jeśli raport go zawiera. |
threshold.mutation | 0 | Minimalny wynik mutacyjny, jeśli wczytano raport mutacyjny. |
threshold.weighted | 75 | Minimalny wynik złożony. |
compliance.mode | strict | strict | whm | both | either. |
compliance.diagnostics | false | Jeden błąd w Problemach na każdy nieosiągnięty próg, na pliku śladu. |
threshold.unmeasuredFiles | -1 | Maksymalna liczba plików niezmierzonych (wymaga unmeasured.mode ustawionego na list lub count). -1 nie sprawdza; 0 oblewa przy pierwszym pliku, którego żaden test nie wczytał. |
problems.perLine | off | off | uncovered | uncoveredAndPartial: wpis Information (falista linia w edytorze) na każdy blok kolejnych niepokrytych wierszy w każdym otwartym dokumencie, opcjonalnie plus jeden na każdy wiersz z gałęzią, której nigdy nie wzięto. Niezależne od problems.enabled. Osobno dla każdego folderu. |
Diff, przemapowanie i raporty
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
pathRemap | [] | Uporządkowane podmiany ścieżek {from,to}; to może używać ${workspaceRoot}, które próbuje najpierw własnego folderu pliku śladu, a potem każdego innego folderu obszaru roboczego. Gdy po wczytaniu zostają niedopasowane pliki, wynik wczytania oferuje Apply Suggested Remap z regułą wywiedzioną z niedopasowanych ścieżek (także Suggest Path Remap Rule w palecie); nic nie jest zapisywane, dopóki nie klikniesz. Osobno dla każdego folderu. |
ignore | [] | Wzorce glob całych plików do pominięcia w przebiegu (vendor/**, **/*.generated.ts, build/**) — usuwane przy wczytaniu, więc każdy widok, bramka i eksport liczy bez nich. Dopasowywane do ścieżki względem obszaru roboczego i do ścieżki bezwzględnej; wzorzec bez / pasuje do nazwy na dowolnej głębokości, jak w .gitignore. Osobno dla każdego folderu. |
ignore.generated | true | Pomija generowane pliki .NET w każdej sumie, stronie i eksporcie — *.Designer.cs, *.g.cs, *.g.i.cs, *.generated.cs, *.razor.g.cs, *.AssemblyInfo.cs, GlobalUsings.g.cs, Migrations/** i obj/** — zanim zostanie zastosowane ignore. Wyłączone dla projektu, który testuje swoje migracje. Na folder. |
ignore.namespaces | [] | Przestrzenie nazw pomijane w każdej sumie i na każdej stronie, dla źródeł .NET: plik, którego deklaracja przestrzeni nazw pasuje do jednej z nich, nie jest liczony. Prefiks z * jako symbolem wieloznacznym — Acme.Generated, Acme.*.Migrations, *Tests. Na folder. |
ignore.attributes | ["ExcludeFromCodeCoverage"] | Atrybuty, które wyłączają klasę, metodę lub właściwość .NET z liczenia, odczytywane ze źródła: składowa pod jednym z nich jest wykluczana tak, jak wykluczyłby ją LCOV_EXCL_START/STOP, niezależnie od tego, które narzędzie zapisało raport. Nazwy z przyrostkiem Attribute lub bez, z przestrzenią nazw lub bez; dodaj GeneratedCode, Obsolete albo własne. Na folder. |
testRun.perTest | false | Run Tests with Coverage uruchamia przepis dotnet test po jednej klasie testowej naraz i oznacza każdy raport jej klasą, aby podpowiedź, CodeLens i Show Tests That Ran This Line mogły powiedzieć, które testy wykonały wiersz — wolniej i tylko dla .NET, którego raport Cobertura sam tego powiedzieć nie potrafi. Na folder. |
testRun.onSave | false | Zapisanie pliku źródłowego uruchamia testy, które go pokrywają, z pokryciem, chwilę po zapisie: dla rozwiązania .NET tylko projekty testowe, które odwołują się do projektu zapisanego pliku, po jednym dotnet test każdy; każdy inny runner cały swój przepis. Kilka zapisów to jeden przebieg; trwający już przebieg nie jest przerywany. Na folder. |
testRun.skipWhenTestsFail | false | Run Tests with Coverage zostawia pokrycie na ekranie takie, jakie było, gdy runner kończy się niepowodzeniem, i mówi to w panelu Output — czerwone uruchomienie nie maluje zielonego pliku na czerwono. Na folder. |
unmeasured.mode | off | off | list | count: co robić z plikami obszaru roboczego rodzaju przebiegu, których żaden test nie wczytał (zob. Niezmierzone a niepokryte). list wymienia je w widoku Coverage i w wyniku wczytania; count dodatkowo ocenia każdy jako niepokryty plik o tylu wierszach, ile ma wierszy kodu. Zmiana przeładowuje. |
unmeasured.exclude | ["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"] | Pliki nigdy nienazywane niezmierzonymi, w składni glob ignore — domyślnie pliki zawierające wyłącznie nagłówki i deklaracje. Osobno dla każdego folderu. |
hotspots.crapThreshold | 30 | Funkcja z tym wynikiem CRAP lub wyższym jest punktem ryzyka, wymienionym pod drzewem widoku Coverage, najgorsze najpierw — 30 to liczba zaproponowana przez autorów metryki. Mają je tylko raporty niosące złożoność cyklomatyczną. Na folder. |
hotspots.complexityThreshold | 0 | Funkcja tak złożona lub bardziej także jest punktem ryzyka, niezależnie od pokrycia; 0 to wyłącza. Na folder. |
gitDiff.enabled | false | Ogranicz pokrycie do wierszy zmienionych względem referencji bazowej. Osobno dla każdego folderu. |
gitDiff.baseRef | origin/master | Bazowa referencja Git dla pokrycia różnicy. Osobno dla każdego folderu. |
externalHtmlReport.dir | "" | Odczytuj gotowy katalog HTML llvm-cov show dla Annotated Source. Osobno dla każdego folderu. |
htmlReport.outputDir | "" | Katalog wyjściowy dla Generate Full HTML Report. Osobno dla każdego folderu. |
badge.outputPath | coverage-badge.svg | Gdzie Generate Coverage Badge zapisuje SVG — względem folderu obszaru roboczego lub bezwzględnie, te same zmienne co w coverageFile.defaultLocation; foldery nadrzędne są tworzone. Osobno dla każdego folderu. |
badge.metric | lines | lines | branches | mcdc | weighted: liczba dla całego przebiegu na odznace (weighted to wynik złożony z paska stanu). Brak danych → szare n/a. Osobno dla każdego folderu. |
badge.autoUpdate | false | Przepisuj odznakę po każdym udanym wczytaniu, po cichu (zapisywane w dzienniku jako [FUCINI_BADGE]). Osobno dla każdego folderu. |
Wyświetlanie i analiza
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
mcdcGutter.enabled | false | Kolorowy margines MC/DC. |
statusBar.enabled | true | Pokazuj elementy paska stanu dla całego przebiegu i dla plików. |
statusBar.showLauncher | true | Zawsze dostępny przycisk szybkiego menu. |
statusBar.showModeToggle | true | Przycisk na pasku stanu z nazwą trybu marginesu; kliknięcie przełącza go o jeden dalej. |
codeLens.enabled | true | CodeLens pokrycia dla każdej funkcji. |
deadCode.enabled | true | Ostrzegaj o funkcjach bez pokrycia. |
staleWarning.enabled | true | Oznaczaj pliki, których zawartość nie zgadza się już z ich przebiegiem. |
explorerBadges.enabled | false | Odznaki pokrycia i podpowiedź obok plików w Eksploratorze. |
coverageFile.rememberPicks | true | Zapisuj każdy wybrany plik do coverageFile.paths. |
coverageFile.sources | [] | Z którego wczytanego raportu pochodzą liczby pliku, gdy mierzy go więcej niż jeden: uporządkowane reguły { "files": glob, "report": glob }, rozstrzyga pierwsza pasująca. Z "combine": "union" (pokryte tam, gdzie wiersz wykonał którykolwiek raport) lub "agree" (tylko tam, gdzie zrobił to każdy raport, rozbieżności w kolorze morskim) pasujące raporty są łączone. Płatne plany. Osobno dla każdego folderu. |
coverageFile.mergeStrategy | newest | Dla plików, o których nie decyduje żadna reguła: newest (wygrywa raport zapisany jako ostatni) lub order (wygrywa późniejszy wpis w coverageFile.paths, niezależnie od czasów). Osobno dla każdego folderu. |
sinceLastRun.enabled | true | Oznaczenia na marginesie w wierszach, których pokrycie zmieniło się od poprzedniego przebiegu. |
dirtyMarks.enabled | true | Szara kropka na marginesie w wierszach edytowanych od wczytania przebiegu. |
editorGutter.mode | off | off | uncovered | coverage | heatmap: nic poza ustaleniami powyżej, paski tylko na wierszach niepokrytych (i częściowo pokrytych), to plus zielony pasek na każdym pokrytym wierszu, albo to plus ciepły odcień na każdym wykonanym wierszu według liczby trafień. Osobno dla każdego folderu. |
lineHighlight | off | off | uncovered | coverage | heatmap: półprzezroczyste tło za samym wierszem, dla tego, co oznacza margines. Osobne ustawienie, aby margines mógł zostać czysty, gdy luki są podbarwione, albo odwrotnie. Osobno dla każdego folderu. |
overviewRuler | follow | follow | uncovered | off: czy niepokryte wiersze dostają pasek na linijce podglądu paska przewijania. uncovered rysuje go nawet przy wyłączonym marginesie — mapa luk pliku wzdłuż paska przewijania i nic obok kodu; off zachowuje słupki i usuwa pasek. Osobno dla każdego folderu. |
hitCounts.inline | false | ×N za każdym wierszem, w którym zaczyna się instrukcja, łącznie z ×0. Osobno dla każdego folderu. |
testCoverage.publish | true | Publikuj każdy wczytany przebieg do własnego widoku Test Coverage VS Code (panel Test Explorer, procenty w Eksploratorze, Show Inline Coverage). Wyłączone: brak wpisu Fucini Coverage w Test Explorer; Show in Test Coverage View nadal publikuje na żądanie. |
coverageView.perspective | folders | Które drzewo pokazuje widok Coverage: foldery i pliki obszaru roboczego albo — dla raportu .NET, który nazywa swoje klasy (Cobertura, Coverlet, OpenCover) — przestrzenie nazw, klasy i metody, każde z własnymi liczbami. Menu rozwijane w widoku zapisuje to ustawienie; jest oferowane tylko wtedy, gdy przebieg niesie nazwy klas. |
coverageView.mergedMarks | true | Przy kilku wczytanych plikach śledzenia: obrysować plakietkę pliku śledzenia każdego pliku, którego liczby zastąpiły starszy raport, i pozwolić, by kliknięcie wiersza pliku śledzenia podświetlało zmierzone przez niego pliki. Wyłączone: zwykłe plakietki, bez podświetlenia; wiersze plików śledzenia nadal liczą, co zostało zastąpione. |
excludeComments | true | Wyklucz wiersze komentarzy, puste i LCOV_EXCL_* oraz dyrektywy preprocesora w C, C++, Objective-C, CUDA i C#. |
excluded.includeInTotals | false | Wliczaj wykluczone wiersze do sum. |
Historia
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
history.enabled | false | Przechowuj przebiegi lokalnie do trendu i porównań. |
history.retention | 20 | Maksymalna liczba przechowywanych przebiegów. |
Szybkie akcje paska stanu
Wszystkie domyślnie false poza dwoma ostatnimi; włącz, aby dodać odpowiednią akcję do szybkiego menu: quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFolders, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson, exportReport, generateBadge, showTestCoverage, chooseGutterMode, toggleInlineHitCounts.
Telemetria
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
telemetry.enabled | false | Telemetria użycia, domyślnie wyłączona. Na poziomie Community polecenie Unlock Full Features wymienia ją na wszystkie funkcje Pro, w tym MC/DC, na 30 dni, raz na maszynę; licencji płatnej to nie dotyczy. Co jest wysyłane, opisano w polityce prywatności. Dzienne podsumowanie i powiadomienie o usunięciu zależą również od własnego ustawienia VS Code telemetry.telemetryLevel; sygnał instalacji i kilka drobnych zdarzeń — nie. |
Aktualizacje
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
update.checkForUpdates | true | Okresowo sprawdzaj fucini.software i VS Code Marketplace pod kątem nowszego wydania i proponuj instalację nowszego. |
Licencjonowanie
| Ustawienie | Domyślnie | Działanie |
|---|---|---|
license.key | "" | Klucz aktywacyjny wersji ewaluacyjnej (ciąg FCK1.…). Powiązany z tym komputerem/użytkownikiem; może mieć datę wygaśnięcia i limity dla funkcji. Zobacz Ewaluacja i aktywacja. |