Evaluierungs-Release. Jede Funktion unten steht während der kostenlosen 14-tägigen Testphase zur Verfügung. Nach der Testphase ist ein Lizenzschlüssel auf Anfrage verfügbar, automatisch ausgestellt, und ein Schlüssel kann einzelne Funktionen pro Benutzer aktivieren oder begrenzen. Lizenz anfordern →
Wenn eine KI die Tests geschrieben hat
Coverage gegen eine generierte Testsuite
Die Übersicht führt das allgemeine Argument. Hier steht es der Funktionsliste selbst gegenüber, denn eine generierte Suite versagt in einer charakteristischen Form — jede Zeile berührt, die Hälfte der Entscheidungen nie getroffen und ein paar Funktionen, die in den Testtiteln vorkommen, aber nie aufgerufen werden — und fünf der Punkte unten machen genau diese Form sichtbar.
- Branch- und MC/DC-Abdeckung trennen, mit dem Hover je Zweig und je Entscheidung, die Zeile lief von die Entscheidung wurde durchlaufen. Eine Suite, die nur den Happy Path geht, liest sich als knapp 100% bei Zeilen und knapp 50% bei Branches — und genau diese Spreizung ist der Befund. Ein grüner Testlauf zeigt davon nichts.
- Der zusammengesetzte Score ist ein harmonisches Mittel, sodass eine starke Metrik keine schwache verdecken kann — genau die Arithmetik, die eine generierte Suite braucht. Die Zeilenzahl mit der Branchzahl zu mitteln würde die eine Zahl begraben, auf die es ankommt.
- Dead-Code-Warnungen erzeugen einen Eintrag im Problems-Panel für jede Funktion mit messbaren Zeilen und null Abdeckung. Eine Suite, die eine Funktion im Testtitel nennt und sie nie erreicht, schlägt sonst nirgends fehl.
- Diff-Abdeckung gegen eine Git-Basisreferenz verengt all das auf die Zeilen, die sich gerade geändert haben — den Code, den Sie heute Nachmittag übernommen haben, statt auf den Lebenszeitdurchschnitt des Repositorys, mit dem eine große bestehende Suite bereitwillig weiter gesund aussieht.
- Copy Uncovered Lines gibt genau das aus, was nie lief, als Markdown — also etwas, das sich direkt wieder in denjenigen Assistenten einfügen lässt, der die Suite überhaupt geschrieben hat.
Nichts davon liest einen Test und beurteilt ihn, und nichts hier soll als eine solche Behauptung verstanden werden: ein Test ganz ohne Assertions deckt weiterhin jede Zeile ab, die er berührt. Gemessen wird der Teil, den ein Reviewer nicht im Kopf behalten kann — welcher Code nie ausgeführt wurde.
Einzigartig für diese Erweiterung
Ihre Zeilenüberdeckung sagt 100%. 312 Bytes Ihres Binärprogramms liefen nie.
Jede andere Metrik hier wird am Quelltext gemessen: Code instrumentieren, den instrumentierten Build laufen lassen, zählen, was ausgelöst wurde. Objektcode-Coverage misst etwas, das kein quellbasiertes Werkzeug erreichen kann — wie viel des gebauten Binärprogramms tatsächlich ausgeführt wurde, in Instruktionsbytes, durch Beobachtung des Instruktionsstroms. Ein Compiler erzeugt Code, für den keine Zeile Ihres Quelltexts steht: Array-Grenzprüfungen, switch-Sprungtabellen, Register-Spills, Laufzeit-Hilfsroutinen für Division oder Gleitkomma. Nichts davon erscheint in Ihrem Quelltext, also kann kein quellbasiertes Werkzeug — auch nicht diese Erweiterung, für jede andere von ihr gelesene Metrik — sagen, ob es lief. Sie ist außerdem die einzige Metrik hier, die die Frage deckt das Assembler ab? beantwortet, da handgeschriebener Assembler nie instrumentiert wird.
DO-178C nennt das ausdrücklich: auf Stufe A ist es zusätzlich zu MC/DC vorgeschrieben. Keine andere VS-Code-Erweiterung liest es. So bekommen Sie es von einem eingebetteten Zielsystem →
Funktionsumfang
Kernfunktionen
- Eine Coverage-Ansicht jeder gemessenen Datei, das Übersichtslineal und Annotated Source; im eigenen Gutter des Editors standardmäßig nur, was eine Markierung wert ist — MC/DC-Balken, Seit-letztem-Lauf-Dreiecke, Punkte auf bearbeiteten Zeilen —, mit Balken nur auf nicht abgedeckten Zeilen oder einer Heatmap der Trefferzahlen eine Einstellung entfernt.
- Zeilengenaue Abdeckung für Anweisungen, Branches, Funktionen, Regionen, MC/DC und C++-Instanziierungen, je nachdem, was die Tracedatei liefert.
- Einlesen mehrerer Formate und deterministisches Zusammenführen mehrerer Läufe mit erfasster Herkunft.
- Pfad-Remapping — Pfade der CI-Build-Maschine → Ihr lokaler Arbeitsbereich.
- Diff-Abdeckung — hebt nur Zeilen hervor, die gegenüber einer git-Basisreferenz geändert wurden.
- Explorer-Badges und ein laufweites Statusleisten-Element, farblich codiert nach dem Gesamtwert.
- Watch-Modus — automatisches Neuladen bei Änderung einer Tracedatei.
- Run Tests with Coverage – erkennt den Test-Runner am Arbeitsbereichsstamm, führt ihn mit Abdeckung aus und lädt das Geschriebene.
- Entfernte Tracedateien — ein
coverageFile.paths-Eintrag darf einehttps://-URL sein: Das CI-Artefakt wird bedingt abgerufen (ETag / Last-Modified), mit den inremote.headerskonfigurierten Headern, wie eine lokale Datei geladen und mitremote.refreshMinutesnach einem Zeitplan erneut abgerufen; schlägt ein Abruf fehl, wird stattdessen die zuletzt heruntergeladene Kopie geladen. - Variablen in Pfaden —
${workspaceFolder},${workspaceFolderBasename},${userHome},${env:NAME},${command:id}und${config:section.key}in jeder Pfadeinstellung; eine unbekannte Variable bleibt stehen, wie sie geschrieben wurde, sodass ein Tippfehler im Erkennungsprotokoll auftaucht, statt zu verschwinden. - Multi-Root-Arbeitsbereiche — jeder Ordner wird aus seinen eigenen Einstellungen erkannt (seiner
.vscode/settings.jsonoder seinem.code-workspace-Eintrag), seine Tracedateien verschmelzen zu einem Lauf, die Coverage-Ansicht gruppiert die Dateien nach Ordner, und ein hinzugefügter oder entfernter Ordner lädt die Coverage von selbst neu. - Zwei weitere Auslöser zum Neuladen — ein absoluter
coverageFile.paths-Eintrag außerhalb des Arbeitsbereichs wird abgefragt, sodass eine dort erscheinende Datei geladen wird; undwatch.reloadAfterTasksnennt Aufgaben (npm: test), deren Ende die Coverage neu lädt, ob der Watch-Modus nun an ist oder nicht. - Fortschritt, den Sie abbrechen können — ein Ladevorgang mit zehn oder mehr Tracedateien, oder 8 MB oder mehr davon, und jeder Generate Full HTML Report laufen unter einer Fortschrittsbenachrichtigung mit einer Abbrechen-Schaltfläche; ein Abbruch lässt den vorherigen Lauf geladen.
- VS Codes eigene Test-Coverage-Ansicht — jeder Ladevorgang wird auch über die Test-Coverage-API des Editors veröffentlicht (
testCoverage.publish), sodass das Coverage-Panel des Test Explorers, die Prozentzahlen je Datei im Explorer und der editoreigene Schalter Show Inline Coverage dieselben Zahlen zeigen; Show in Test Coverage View veröffentlicht auf Anfrage und öffnet das Panel. Bei benannten Tests (TN:in lcov) filtert die Ansicht die Abdeckung einer Datei nach Test. - Vorgeschlagene Remap-Regel — lässt ein Ladevorgang Dateien unzugeordnet (Container- oder CI-Pfade gegen einen lokalen Checkout), leitet die Erweiterung die
pathRemap-Regel ab, die die meisten davon erklärt, und bietet Apply Suggested Remap im Ladeergebnis und Suggest Path Remap Rule in der Palette an; ohne den Klick wird nichts geschrieben. - Ignore-Globs —
fuciniCoverage.ignore(vendor/**,**/*.generated.ts) entfernt ganze Dateien beim Laden aus dem Lauf, sodass jede Ansicht, jedes Gate und jeder Export ohne sie zählt; das Ladeergebnis sagt, wie viele, und die Ausgabe nennt jede einzelne. - Nicht gemessen versus nicht abgedeckt — eine Datei, die kein Test geladen hat, wird nicht hinter Ihrem Rücken als 0% bewertet; die Statusleiste sagt für eine solche nicht gemessen, und
unmeasured.modekann solche Dateien in der Coverage-Ansicht auflisten oder jede als nicht abgedeckte Datei zählen, mitthreshold.unmeasuredFilesals Gate dafür, wie viele es gibt. - Sichtbar, was das Zusammenführen bewirkt hat — sind mehrere Tracefiles geladen, nennt jede Dateizeile den Bericht, aus dem ihre Zahlen stammen, das Abzeichen ist umrandet, wo diese Zahlen einen älteren Bericht überstimmt haben, jede Tracefile-Zeile zählt, wie viele ihrer Dateien überstimmt wurden oder andere überstimmt haben, und ein Klick auf eine Tracefile-Zeile hebt ihre Dateien im Baum hervor (
coverageView.mergedMarks).
Gesamtwert und Konformität
Ein einziges gewichtetes harmonisches Mittel über Zeilen, Branches, Funktionen, Regionen, MC/DC und Instanziierungen. Da es sich um ein harmonisches Mittel handelt, kann eine schwache Metrik nicht durch eine perfekte verdeckt werden. Die Gewichte orientieren sich standardmäßig an Stufen gemäß IEC 61508 / ISO 26262 / DO-178C, und das Urteil COMPLIANT / NON-COMPLIANT wird durch Schwellenwerte pro Metrik sowie einen konfigurierbaren Modus bestimmt.
Screenshot pending — add assets/img/statusbar.png (see SCREENSHOTS.md).Analyse im Editor
- Function CodeLens — Abdeckung in % pro Funktion, Klick springt zur ersten nicht abgedeckten Zeile.
- Branch- und MC/DC-Hover — Anzahl genommener/nicht genommener Zweige pro Branch sowie Bedingungs-/Vektoraufschlüsselungen pro Entscheidung; optionale farbige MC/DC-Randanzeige im Gutter.
- Warnungen zu totem Code — Warnung im Problems-Panel für Funktionen mit messbaren Zeilen und null Abdeckung.
- Navigation Next/Previous Uncovered (nächste/vorherige nicht abgedeckte Zeile).
- Abweichungswarnung, wenn der Inhalt einer Datei nicht mehr zu ihrem Lauf passt — aktuell gehalten beim Speichern oder bei Änderungen auf der Festplatte, mit dem genauen Unterschied beim Überfahren.
- Seit dem letzten Lauf – ein rotes Dreieck auf jeder Zeile, die im vorherigen Lauf ausgeführt wurde und in diesem nicht, ein grünes für den umgekehrten Fall, mit Übersichtslineal und Trefferzahlen beim Überfahren.
- Bearbeitete Puffer – jede Markierung, jeder Hover und jede CodeLens wandert beim Bearbeiten mit dem Text mit und zieht sich von einer umgeschriebenen Zeile zurück, wo ein grauer Punkt sagt, warum.
- Editor-Gutter-Modi —
editorGutter.modebeschränkt den Gutter auf Befunde (off), setzt einen Balken auf jede Zeile, die nie lief, und einen bernsteinfarbenen, wo ein Zweig nie genommen wurde (uncovered), oder legt zusätzlich einen warmen Farbton auf jede ausgeführte Zeile, umso heißer, je öfter sie lief (heatmap); Choose Editor Gutter Mode... wechselt aus der Palette oder dem Statusleisten-Menü. - Inline-Trefferzahlen —
hitCounts.inlineschreibt×12hinter jede Zeile, auf der eine Anweisung beginnt,×0eingeschlossen; Toggle Inline Hit Counts schaltet sie um. - Problems-Einträge je Zeile —
problems.perLinesetzt eine Informations-Diagnose auf jeden Block von Zeilen, die in einem geöffneten Dokument nie liefen (eine tote Funktion ist ein Eintrag, nicht vierzig), und wahlweise auf jede Zeile mit einem nie genommenen Zweig; die Einträge folgen ihren Zeilen beim Bearbeiten. - Zeilenfärbung und Karte in der Bildlaufleiste —
lineHighlightlegt eine durchscheinende Färbung hinter die Zeilen selbst, statt (oder zusätzlich zu) einer Markierung im Randstreifen, undoverviewRulerentscheidet allein über den Streifen in der Bildlaufleiste: bei ausgeschaltetem Randstreifen ist das eine Karte der Lücken der Datei und nichts neben dem Code. - Welche Tracedatei diese Zeile abgedeckt hat — sind mehrere Berichte zusammengeführt, nennt der Hover mit der Trefferzahl jeden, der die Zeile abgedeckt hat (samt Suite-Name aus lcovs
TN:), und ein Klick auf eine Tracedatei-Zeile in der Coverage-Ansicht hebt die von ihr beigesteuerten Zeilen hervor.
- Rot, Bernstein und Grün — der Modus
coveragevoneditorGutter.modeundlineHighlightfärbt jede gemessene Zeile in den Farben der Farbskala; die Modus-Schaltfläche in der Statusleiste undAlt+Gwechseln von einem Modus zum nächsten. - Ihre Farben, mit Vorschau — die Farbskala und die Farbtöne der Heatmap (
heatmap.colors,heatmap.colorsDark) sind Einstellungen, und die Einstellungsseite zeigt sie schon beim Auswählen auf einem hellen und einem dunklen Editor. - Aus welchem Bericht eine Datei stammt — messen zwei Berichte denselben Code, entscheiden
coverageFile.sources-Regeln oder Choose Coverage Source for This File..., welchen jede Datei zeigt, statt dass der neueste gewinnt.
Berichte und Verlauf
- Generate Full HTML Report — ein selbst gerenderter, mehrseitiger Bericht pro Verzeichnis; Open Annotated Source für eine einzelne Datei.
- Optionaler lokaler Laufverlauf mit einem Abdeckungstrend (▲/▼), außerdem Compare Two History Runs und Compare with Last Run.
- Show Worst-Covered Files / Functions und Copy Uncovered Lines (Markdown).
- Export Fucini JSON — das vollständige normalisierte Modell.
- Export Coverage Report... — derselbe Lauf als CSV (pro Datei oder pro Funktion), Markdown-Zusammenfassung, LCOV-Tracefile, Cobertura-XML, SARIF oder eigenständiges SVG-Badge. Mit fünfundzwanzig Lesern und diesen Schreibern konvertiert die Erweiterung zwischen Formaten: JaCoCo oder llvm-cov JSON laden und das LCOV erzeugen, das Codecov, Coveralls und SonarQube lesen, oder das Cobertura-XML, das Jenkins, GitLab und Azure DevOps einlesen.
- Generate Coverage Badge — ein SVG im Stil von shields, direkt in den Arbeitsbereich geschrieben (
badge.outputPath, Standardcoverage-badge.svg), damit eine README es miteinbettet, ohne gehosteten Dienst;badge.metricwählt Zeilen, Zweige, MC/DC oder die zusammengesetzte Bewertung, die Farbe folgt dencolorScale.*-Stufen, undbadge.autoUpdateschreibt es nach jedem Laden neu.
Screenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
Screenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).Community und Pro, Funktion für Funktion
Zwei Einträge, eine Codebasis. Community ist die dauerhaft kostenlose Stufe und das, worauf der Pro-Eintrag nach seiner 14-tägigen Testphase landet; Pro und die Testphase sind alles, ohne Obergrenzen. Die Grenze ist so gezogen, dass die kostenlose Stufe jeden Befund immer sieht und nur für Komfort, Nachweis und Umfang zahlt – in VS Code zeigt Fucini Coverage: What Community Includes dieselbe Liste mit den heutigen Zählern je Obergrenze.
| Fähigkeit | Community (kostenlos) | Pro, und die Testphase |
|---|---|---|
| Alle 25 Formate, Zusammenführen mehrerer Dateien, Pfadzuordnung | ✓ | ✓ |
| Gutter, Übersichtslineal, Explorer-Badges, Abdeckungsansicht, CodeLens, Hover | ✓ | ✓ |
| Überwachung mit automatischem Neuladen; Run Tests with Coverage | ✓ | ✓ |
| Diff-Abdeckung, Verlauf und Trend, Seit-letztem-Lauf-Markierungen | ✓ | ✓ |
| Abdeckung per Befehl laden | 25 am Tag (automatische Ladevorgänge zählen nicht) | unbegrenzt |
| Läufe vergleichen, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON | je 5 pro Woche | unbegrenzt |
| Annotated Source, an Ort und Stelle | 5 pro Woche | unbegrenzt, plus ein dauerhaftes Seitenfenster und Generate Full HTML Report |
| Export Coverage Report | CSV (je Datei, je Funktion) | auch Markdown, LCOV, Cobertura XML, SARIF, SVG-Badge |
| Eine Datei, die nicht mehr zu ihrer Abdeckung passt | gemeldet und abgeblendet | auch die Zeile, Funktion oder Prüfsumme, die es bewiesen hat |
| Überlebende Mutanten | auf der Zeile markiert, mit Anzahl | zusätzlich, was jeder Mutant geändert hat |
| Tests, die eine Zeile ausgeführt haben | wie viele | zusätzlich ihre Namen |
| CRAP | Max CRAP des Laufs, CRAP an jeder Funktion | zusätzlich die Rangliste Riskiest Methods |
| Risk hotspots | wie viele, und der schlechteste Score | auch die Rangliste, jeder Eintrag öffnet seine Funktion |
| MC/DC-Abdeckung, Gutter-Balken und Hover | — | ✓ |
| Objektcode-Abdeckung bewertet und geprüft | nur das Vorhandensein wird gemeldet | ✓ |
| Eine Datei, die mehrere Berichte messen | der neueste Bericht | außerdem je Datei einen wählen oder sie kombinieren (agree / union) |
| Telemetrie erforderlich | nein – optional und einmal pro Gerät tauscht Unlock Full Features detaillierte Nutzungstelemetrie gegen 30 Tage mit allem in der rechten Spalte | nein |
Eine Woche läuft sieben Tage ab der ersten Nutzung, die sie eröffnet hat, und nichts, was Coverage nur liest, wird gezählt. Noch nicht bereit für ein Abo? Ein 7-Tage-Pass ist alles aus der rechten Spalte für eine Woche, einmal bezahlt, ohne dass etwas zu kündigen wäre.
VS Code und Visual Studio nebeneinander
Ein Produkt, zwei Editoren, ein Reader: Derselbe Bericht liefert in beiden dieselben Zahlen, auf die Stelle genau. Coverage Studio für Visual Studio läuft auf Visual Studio 2022 und 2026 — Community, Professional und Enterprise und verwendet nicht Visual Studios eigene Code Coverage, die in 2022 nur Enterprise hat; er ist in jedem bezahlten Plan enthalten, und ein Gerät mit beiden Editoren ist ein Seat. Alles über dem Strich gibt es in beiden; darunter steht, wofür Visual Studio kein Gegenstück hat und was dort noch kommt.
| Funktion | VS Code | Visual Studio |
|---|---|---|
Alle 25 Formate, Zusammenführen mehrerer Dateien, Pfad-Remapping, dieselben fuciniCoverage.*-Einstellungen und .vscode/settings.json | ✓ | ✓ |
| Randleiste, Übersichtslineal, Trefferzahlen, Lens pro Funktion, Hovers, die Coverage-Ansicht, die Statusleiste und ihre Karten | ✓ | ✓ |
| Watch-Modus mit automatischem Neuladen; Next Uncovered, Next Partly-Tested Decision; als Markdown kopieren | ✓ | ✓ |
| Gesamtwert, Schwellen und das COMPLIANT-Urteil; MC/DC; CRAP | ✓ | ✓ |
| Getting Started, in 18 Sprachen | ein Walkthrough | eine Seite unter Tools → Coverage Studio |
| Run Tests with Coverage, Run This Test with Coverage, Coverage nach jedem Speichern; das editoreigene Test-Coverage-Panel | ✓ | ✓, dazu Collect Coverage in Test Explorer… — das Test-Coverage-Panel ist eine VS-Code-API |
| Explorer-Badges | ✓ | — (der Projektmappen-Explorer kann Dateien nicht dekorieren) |
| Annotated Source, HTML-Bericht, Exporte, Check Thresholds, Fehlerliste, Verlauf und Trend, Diff-Coverage | ✓ | ✓ |
| Welche Tests eine Zeile ausgeführt haben, Ausschließen aus dem Baum und aus dem Editor, die Namespace-Perspektive und das Suchfeld, Coverage-Sitzungen, das Trend-Diagramm, die CI-Baseline | ✓ | ✓, dazu Run Native Project with Coverage für ein C++-Projekt |
| Kostenlose Stufe, Testphase, Checkout | ✓ | — (ein bezahlter Plan; der Schlüssel wird auf einem Rechner gefunden, auf dem VS Code aktiviert ist) |
Als Nächstes: all diese Coverage in Azure DevOps, als kostenlose Erweiterung. Azure DevOps zeigt Coverage an einem Build nur so weit, wie sein eigenes Format reicht — Zeilen, und Zweige als Prozentsatz. Fucini DevOps Studio wird alles zeigen, was Coverage Studio liest: jedes dieser 25 Formate, für jede Sprache, mit MC/DC, Bedingungen, dem zusammengesetzten Score und den Gates, als Coverage-Reiter an der Pipeline, die es erzeugt hat. Folgen Sie den Neuigkeiten für die erste Veröffentlichung.
Einstellungsreferenz
Konfiguration über die Settings-Oberfläche (Suche nach Fucini Coverage) oder in 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.
Eine Zeile, die mit Je Ordner. endet, nimmt in einem Multi-Root-Arbeitsbereich einen Wert auf Ordnerebene an: Jeder Ordner wird mit seiner eigenen .vscode/settings.json oder seinem .code-workspace-Eintrag erkannt, und ${workspaceFolder} darin meint diesen Ordner.
Lokalisierung
| Einstellung | Standard | Funktion |
|---|---|---|
language | auto | Die eigene Laufzeit-Oberfläche dieser Erweiterung (Statusleiste, Benachrichtigungen, Tooltips, Lizenz- und Bericht-Webviews) auf eine bestimmte Sprache festlegen, unabhängig von der Anzeigesprache von VS Code. auto folgt VS Code. Einer von auto, en, uk, nl, de, fr, es, hr, pl, it, pt, ru, tr, he, ja, zh, hi, ko, ar. Ändert nicht die Einträge der Befehlspalette oder die Beschriftungen/Beschreibungen der Einstellungsoberfläche — die löst VS Code über seine Anzeigesprache auf. |
Erkennung und Laden
| Einstellung | Standard | Funktion |
|---|---|---|
coverageFile.defaultLocation | "" | Basisordner für die Suche und die Dateiauswahldialoge. Variablen: ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id}, ${config:section.key}. Je Ordner. |
coverageFile.paths | [] | Zu ladende & zusammenzuführende Tracefiles, relativ zum Basisordner, absolut (dieselben Variablen wie oben) oder eine http(s)://-URL, die bei jedem Laden abgerufen wird — hängen Sie #lcov.info (oder einen anderen Dateinamen) als URL-Fragment an, wenn die URL selbst keine Erweiterung hat. Ein relatives *-Glob sucht rekursiv unterhalb des Basisordners; auch ein absoluter Eintrag darf einen Platzhalter enthalten (${workspaceFolder}/build/coverage-merged/*.lcov.info, ** für beliebige Tiefe), gesucht unterhalb der Ordner davor. Je Ordner. |
watch.enabled | true | Coverage neu laden, wenn sich ein Tracefile ändert — oder erscheint, bei einem absoluten Eintrag außerhalb des Arbeitsbereichs. Je Ordner. |
watch.reloadAfterTasks | [] | Aufgabennamen (label, oder source: name wie npm: test), deren Ende die Coverage neu lädt, ob watch.enabled nun an ist oder nicht. Je Ordner. |
remote.headers | [] | Name: value-Header, die mit jedem URL-Abruf gesendet werden; Variablen werden expandiert, sodass Authorization: Bearer ${env:CI_TOKEN} das Token aus der settings.json heraushält. Je Ordner. |
remote.refreshMinutes | 0 | URL-Einträge alle N Minuten erneut abrufen (bedingtes GET; 0 = nur beim Laden). Je Ordner. |
baseline.report | "" | Der Bericht, gegen den jeder geladene Lauf gehalten wird — der des main-Branches, wie der Build-Server ihn veröffentlicht: eine URL, mit remote.headers abgerufen und zwischengespeichert wie eine coverageFile.paths-URL, oder der Pfad eines heruntergeladenen Artefakts, absolut oder relativ zum Ordner. Die Karte der Statusleiste sagt dann, wo dieser Lauf im Vergleich dazu steht, und Compare with CI Baseline listet die Dateien, die sich bewegt haben. Leer: keine Baseline. Je Ordner. |
Farbskala & Badges
| Einstellung | Standard | Funktion |
|---|---|---|
colorScale.preset | default | colorblind ersetzt Rot, Bernstein und Grün überall, wo Coverage eingefärbt wird, durch Zinnoberrot, Orange und Blau (Okabe-Ito); unten geänderte Farben haben Vorrang. |
colorScale.lowColor | #8b1a1a | Unteres Ende des Coverage-Verlaufs. |
colorScale.midColor | #b8860b | Mittelfarbe des Verlaufs. |
colorScale.highColor | #228b22 | Oberes Ende (100 %) des Verlaufs. |
colorScale.lowThreshold | 80 | Prozentwert, ab dem das Badge von niedrig auf mittel wechselt. |
colorScale.highThreshold | 90 | Prozentwert, ab dem das Badge von mittel auf hoch wechselt (und Mittelpunkt des Verlaufs). |
heatmap.colors | ["#fff1a8", …, "#a63603"] | Die fünf Farbtöne der Heatmap in einem hellen Design, von der Zeile, die am seltensten lief, bis zu der, die am häufigsten lief. |
heatmap.colorsDark | ["#6e5f22", …, "#ff6a00"] | Dasselbe für ein dunkles Design, in dem heller mehr bedeutet. |
Gesamtwert (gewichtetes harmonisches Mittel)
| Einstellung | Standard | Funktion |
|---|---|---|
whmWeights.lines | 1 | Gewichtung für Zeilen-/Anweisungsabdeckung. |
whmWeights.functions | 1 | Gewichtung für Funktionsabdeckung. |
whmWeights.regions | 1.5 | Gewichtung für Regionsabdeckung (llvm-cov). |
whmWeights.branches | 2 | Gewichtung für Zweigabdeckung. |
whmWeights.mcdc | 4 | Gewichtung für MC/DC-Abdeckung. 0 schließt sie aus. |
whmWeights.instantiations | 0.5 | Gewichtung für C++-Template-Instanziierungen (llvm-cov). |
Schwellenwerte und Konformität
| Einstellung | Standard | Funktion |
|---|---|---|
threshold.profile | standard | standard setzt die unten stehenden Standardwerte; safety stellt jede Schranke auf 100, außer dem Mutationsscore; custom lässt stehen, was Sie gesetzt haben. Im Standardprofil bleiben die Sicherheitsmetriken ohne Schranke — ein Projekt, das kein MC/DC misst, fällt deswegen nicht durch. |
threshold.statement | 80 | Mindest-Anweisungsprozentsatz. 0 deaktiviert die Prüfung. |
threshold.branch | 70 | Mindest-Zweigprozentsatz. |
threshold.mcdc | 0 | Mindest-MC/DC-Prozentsatz. |
threshold.functions | 80 | Mindest-Funktionsprozentsatz. |
threshold.regions | 75 | Mindest-Regionsprozentsatz (llvm-cov). |
threshold.instantiations | 0 | Mindest-Instanziierungsprozentsatz (llvm-cov); reine C-Projekte werden übersprungen. |
threshold.conditions | 0 | Mindest-Bedingungsprozentsatz. |
threshold.functionCalls | 0 | Mindest-Funktionsaufrufprozentsatz, sofern der Bericht ihn enthält. |
threshold.objectCode | 0 | Mindest-Objektcodeprozentsatz, sofern der Bericht ihn enthält. |
threshold.mutation | 0 | Mindest-Mutationsscore, sofern ein Mutationsbericht geladen ist. |
threshold.weighted | 75 | Mindest-Gesamtscore. |
compliance.mode | strict | strict | whm | both | either. |
compliance.diagnostics | false | Ein Problems-Fehler je verfehlter Schwelle, auf der Tracedatei. |
threshold.unmeasuredFiles | -1 | Höchstzahl nicht gemessener Dateien (braucht unmeasured.mode auf list oder count). -1 prüft nicht; 0 schlägt bei der ersten Datei fehl, die kein Test geladen hat. |
problems.perLine | off | off | uncovered | uncoveredAndPartial: ein Informations-Eintrag (eine Wellenlinie im Editor) je Block aufeinanderfolgender nicht abgedeckter Zeilen in jedem geöffneten Dokument, wahlweise plus einer je Zeile mit einem nie genommenen Zweig. Unabhängig von problems.enabled. Je Ordner. |
Diff, Remapping und Berichte
| Einstellung | Standard | Funktion |
|---|---|---|
pathRemap | [] | Geordnete {from,to}-Pfadumschreibungen; to darf ${workspaceRoot} verwenden, das zuerst den eigenen Ordner der Tracedatei versucht und dann jeden anderen Ordner des Arbeitsbereichs. Lässt ein Ladevorgang Dateien unzugeordnet, bietet das Ladeergebnis Apply Suggested Remap mit der aus den unzugeordneten Pfaden abgeleiteten Regel an (auch Suggest Path Remap Rule in der Palette); nichts wird geschrieben, bis Sie darauf klicken. Je Ordner. |
ignore | [] | Glob-Muster für ganze Dateien, die aus dem Lauf herausbleiben (vendor/**, **/*.generated.ts, build/**) — beim Laden entfernt, sodass jede Ansicht, jedes Gate und jeder Export ohne sie zählt. Abgeglichen mit dem arbeitsbereichsrelativen und dem absoluten Pfad; ein Muster ohne / passt auf einen Namen in beliebiger Tiefe, wie in .gitignore. Je Ordner. |
ignore.generated | true | Generierte .NET-Dateien aus jeder Summe, jeder Seite und jedem Export herauslassen — *.Designer.cs, *.g.cs, *.g.i.cs, *.generated.cs, *.razor.g.cs, *.AssemblyInfo.cs, GlobalUsings.g.cs, Migrations/** und obj/** —, bevor ignore angewandt wird. Aus für ein Projekt, das seine Migrationen testet. Je Ordner. |
ignore.namespaces | [] | Namespaces, die aus jeder Summe und jeder Seite herausbleiben, für .NET-Quellen: Eine Datei, deren Namespace-Deklaration auf einen davon passt, wird nicht gezählt. Ein Präfix mit * als Platzhalter — Acme.Generated, Acme.*.Migrations, *Tests. Je Ordner. |
ignore.attributes | ["ExcludeFromCodeCoverage"] | Attribute, die eine .NET-Klasse, -Methode oder -Eigenschaft aus der Zählung nehmen, aus der Quelle gelesen: Das Element unter einem davon wird ausgeschlossen, wie LCOV_EXCL_START/STOP es ausschließen würden, welches Werkzeug auch immer den Bericht geschrieben hat. Namen mit oder ohne das Suffix Attribute, mit oder ohne Namespace; fügen Sie GeneratedCode, Obsolete oder Ihre eigenen hinzu. Je Ordner. |
testRun.perTest | false | Run Tests with Coverage führt ein dotnet test-Rezept Testklasse für Testklasse aus und versieht jeden Bericht mit seiner Klasse, sodass der Hover, die CodeLens und Show Tests That Ran This Line sagen können, welche Tests eine Zeile ausgeführt haben — langsamer, und nur für .NET, dessen Cobertura-Bericht es von sich aus nicht sagen kann. Je Ordner. |
testRun.onSave | false | Das Speichern einer Quelldatei führt kurz danach die Tests aus, die sie abdecken, mit Coverage: bei einer .NET-Projektmappe nur die Testprojekte, die auf das Projekt der gespeicherten Datei verweisen, je ein dotnet test; bei jedem anderen Runner sein ganzes Rezept. Mehrere Speichervorgänge sind ein Lauf; ein laufender Lauf wird nicht unterbrochen. Je Ordner. |
testRun.skipWhenTestsFail | false | Run Tests with Coverage lässt die Coverage auf dem Bildschirm, wie sie war, wenn der Runner mit einem Fehler endet, und sagt es im Output-Bereich — ein roter Lauf färbt keine grüne Datei rot. Je Ordner. |
unmeasured.mode | off | off | list | count: was mit Arbeitsbereichsdateien von der Art des Laufs geschieht, die kein Test geladen hat (siehe Nicht gemessen versus nicht abgedeckt). list nennt sie in der Coverage-Ansicht und im Ladeergebnis; count bewertet jede zusätzlich als nicht abgedeckte Datei ihrer Codezeilen. Eine Änderung lädt neu. |
unmeasured.exclude | ["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"] | Dateien, die nie als nicht gemessen gelten, in der Glob-Syntax von ignore — standardmäßig reine Header- und Deklarationsdateien. Je Ordner. |
hotspots.crapThreshold | 30 | Eine Funktion mit diesem CRAP-Score oder mehr ist ein Risk hotspot, aufgeführt unter dem Baum der Coverage-Ansicht, die schlimmste zuerst — 30 ist der Wert, den die Autoren der Metrik vorgeschlagen haben. Nur Berichte, die zyklomatische Komplexität enthalten, haben welche. Je Ordner. |
hotspots.complexityThreshold | 0 | Eine Funktion, die so komplex oder komplexer ist, ist ebenfalls ein Hotspot, ganz gleich, wie ihre Coverage ist; 0 schaltet es aus. Je Ordner. |
gitDiff.enabled | false | Coverage auf Zeilen beschränken, die sich gegenüber einer Basis-Ref geändert haben. Je Ordner. |
gitDiff.baseRef | origin/master | Git-Basis-Ref für Diff-Coverage. Je Ordner. |
externalHtmlReport.dir | "" | Ein vorhandenes llvm-cov show-HTML-Verzeichnis für Annotated Source lesen. Je Ordner. |
htmlReport.outputDir | "" | Ausgabeverzeichnis für Generate Full HTML Report. Je Ordner. |
badge.outputPath | coverage-badge.svg | Wohin Generate Coverage Badge das SVG schreibt — relativ zum Arbeitsbereichsordner oder absolut, dieselben Variablen wie coverageFile.defaultLocation; übergeordnete Ordner werden angelegt. Je Ordner. |
badge.metric | lines | lines | branches | mcdc | weighted: die laufweite Zahl auf dem Badge (weighted ist die zusammengesetzte Bewertung der Statusleiste). Keine Daten dafür → ein graues n/a. Je Ordner. |
badge.autoUpdate | false | Das Badge nach jedem erfolgreichen Laden stillschweigend neu schreiben (protokolliert als [FUCINI_BADGE]). Je Ordner. |
Anzeige und Analyse
| Einstellung | Standard | Funktion |
|---|---|---|
mcdcGutter.enabled | false | Farbige MC/DC-Randleiste. |
statusBar.enabled | true | Statusleisten-Elemente für den gesamten Lauf und pro Datei anzeigen. |
statusBar.showLauncher | true | Immer verfügbarer Schnellmenü-Starter. |
statusBar.showModeToggle | true | Eine Statusleisten-Schaltfläche, die den Gutter-Modus nennt; ein Klick schaltet um einen weiter. |
codeLens.enabled | true | CodeLens mit Abdeckung je Funktion. |
deadCode.enabled | true | Bei Funktionen ohne Abdeckung warnen. |
staleWarning.enabled | true | Dateien markieren, deren Inhalt nicht mehr zu ihrem Lauf passt. |
explorerBadges.enabled | false | Abdeckungs-Badges und Tooltip neben Dateien im Explorer. |
coverageFile.rememberPicks | true | Jede ausgewählte Datei in coverageFile.paths schreiben. |
coverageFile.sources | [] | Aus welchem geladenen Bericht die Zahlen einer Datei stammen, wenn mehr als einer sie misst: geordnete { "files": glob, "report": glob }-Regeln, von denen die erste passende entscheidet. Mit "combine": "union" (abgedeckt, wo irgendein Bericht eine Zeile ausgeführt hat) oder "agree" (nur, wo jeder Bericht es tat, Abweichungen türkis) werden die passenden Berichte kombiniert. Kostenpflichtige Pläne. Je Ordner. |
coverageFile.mergeStrategy | newest | Für Dateien, über die keine Regel entscheidet: newest (der zuletzt geschriebene Bericht gewinnt) oder order (der spätere Eintrag in coverageFile.paths gewinnt, unabhängig von den Zeiten). Je Ordner. |
sinceLastRun.enabled | true | Gutter-Markierungen auf Zeilen, deren Abdeckung sich seit dem vorherigen Lauf geändert hat. |
dirtyMarks.enabled | true | Grauer Gutter-Punkt auf Zeilen, die seit dem Laden des Laufs bearbeitet wurden. |
editorGutter.mode | off | off | uncovered | coverage | heatmap: nichts über die obigen Befunde hinaus, Balken nur auf nicht abgedeckten (und teilweise abgedeckten) Zeilen, diese plus ein grüner Balken auf jeder abgedeckten Zeile, oder diese plus ein warmer Farbton auf jeder ausgeführten Zeile nach Trefferzahl. Je Ordner. |
lineHighlight | off | off | uncovered | coverage | heatmap: eine durchscheinende Färbung hinter der Zeile selbst, für das, was der Randstreifen markiert. Eine eigene Einstellung, damit der Randstreifen sauber bleiben kann, während die Lücken gefärbt werden, oder umgekehrt. Pro Ordner. |
overviewRuler | follow | follow | uncovered | off: ob nicht abgedeckte Zeilen einen Streifen im Übersichtslineal der Bildlaufleiste erhalten. uncovered zeichnet ihn auch bei ausgeschaltetem Randstreifen — eine Karte der Lücken entlang der Bildlaufleiste und nichts neben dem Code; off behält die Balken und lässt den Streifen weg. Pro Ordner. |
hitCounts.inline | false | ×N hinter jeder Zeile, auf der eine Anweisung beginnt, ×0 eingeschlossen. Je Ordner. |
testCoverage.publish | true | Jeden geladenen Lauf in VS Codes eigene Test-Coverage-Ansicht veröffentlichen (Test-Explorer-Panel, Explorer-Prozentzahlen, Show Inline Coverage). Aus: kein Eintrag Fucini Coverage im Test Explorer; Show in Test Coverage View veröffentlicht weiterhin auf Anfrage. |
coverageView.perspective | folders | Welchen Baum die Coverage-Ansicht zeigt: die Ordner und Dateien des Arbeitsbereichs oder — bei einem .NET-Bericht, der seine Klassen nennt (Cobertura, Coverlet, OpenCover) — Namespaces, Klassen und Methoden, jede mit eigenen Zahlen. Das Dropdown in der Ansicht schreibt dies; es wird nur angeboten, wenn der Lauf Klassennamen trägt. |
coverageView.mergedMarks | true | Bei mehreren geladenen Tracefiles: das Tracefile-Abzeichen jeder Datei umranden, deren Zahlen einen älteren Bericht überstimmt haben, und einen Klick auf eine Tracefile-Zeile die von ihr gemessenen Dateien hervorheben lassen. Aus: schlichte Abzeichen, keine Hervorhebung; die Tracefile-Zeilen zählen weiterhin, was überstimmt wurde. |
excludeComments | true | Kommentar-, Leer- & LCOV_EXCL_*-Zeilen ausschließen, dazu Präprozessor-Direktiven in C, C++, Objective-C, CUDA und C#. |
excluded.includeInTotals | false | Ausgeschlossene Zeilen in den Summen mitzählen. |
Verlauf
| Einstellung | Standard | Funktion |
|---|---|---|
history.enabled | false | Läufe lokal für Trend und Vergleich speichern. |
history.retention | 20 | Maximale Anzahl gespeicherter Läufe. |
Schnellaktionen der Statusleiste
Alle standardmäßig auf false außer den letzten beiden; aktivieren Sie sie, um die entsprechende Aktion zum Schnellmenü hinzuzufügen: quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFolders, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson, exportReport, generateBadge, showTestCoverage, chooseGutterMode, toggleInlineHitCounts.
Telemetrie
| Einstellung | Standard | Funktion |
|---|---|---|
telemetry.enabled | false | Nutzungstelemetrie, standardmäßig aus. Auf der Community-Stufe tauscht Unlock Full Features sie gegen jede Pro-Funktion, MC/DC eingeschlossen, für 30 Tage, einmal pro Gerät; eine bezahlte Lizenz ist davon unberührt. Was gesendet wird, steht in der Datenschutzerklärung. Die tägliche Zusammenfassung und die Entfernungsmeldung hängen zusätzlich von VS Codes eigenem telemetry.telemetryLevel ab; der Installations-Ping und einige kleine Ereignisse nicht. |
Updates
| Einstellung | Standard | Funktion |
|---|---|---|
update.checkForUpdates | true | Regelmäßig fucini.software und den VS Code Marketplace auf eine neuere Version prüfen und die neuere zur Installation anbieten. |
Lizenzierung
| Einstellung | Standard | Funktion |
|---|---|---|
license.key | "" | Aktivierungsschlüssel für die Evaluierungs-Vorabversion (eine FCK1.…-Zeichenfolge). An diesen Rechner/Benutzer gebunden; kann ein Ablaufdatum und Limits je Funktion tragen. Siehe Evaluierung & Aktivierung. |