FONCTIONNALITÉS & PARAMÈTRES

Tout ce qu'il fait, tout ce que vous pouvez régler

Un tour complet de l'ensemble des fonctionnalités et la référence de configuration complète — chaque paramètre avec sa valeur par défaut.

Télécharger le VSIX

Version d'évaluation. Toutes les fonctionnalités ci-dessous sont disponibles pendant l'essai gratuit de 14 jours. Après l'essai, une clé de licence est disponible sur demande, émise automatiquement, et une clé peut activer ou limiter des fonctionnalités individuelles par utilisateur. Demander une licence →

Quand cʼest une IA qui a écrit les tests

La couverture face à une suite de tests générée

L'aperçu pose l'argument général. Le voici confronté à la liste des fonctionnalités elle-même, car une suite générée échoue selon une forme caractéristique — chaque ligne touchée, la moitié des décisions jamais prises, et quelques fonctions nommées dans les titres de tests mais jamais réellement appelées — et cinq des éléments ci-dessous sont précisément ce qui rend cette forme visible.

  • La couverture des branches et MC/DC, avec le survol par arc et par décision, sépare la ligne s'est exécutée de la décision a été exercée. Une suite qui ne suit que le chemin heureux affiche près de 100% sur les lignes et près de 50% sur les branches, et c'est cet écart qui constitue le résultat. Une exécution de tests au vert n'en montre rien.
  • Le score composite est une moyenne harmonique, si bien qu'une métrique forte ne peut pas masquer une métrique faible — exactement l'arithmétique qu'il faut appliquer à une suite générée. Faire la moyenne du chiffre des lignes et de celui des branches enterrerait le seul chiffre qui compte.
  • Les avertissements de code mort ajoutent une entrée dans le panneau Problems pour toute fonction ayant des lignes mesurables et une couverture nulle. Une suite qui nomme une fonction dans un titre de test sans jamais l'atteindre n'échoue nulle part ailleurs.
  • La couverture de diff par rapport à une référence git de base restreint tout ce qui précède aux lignes qui viennent de changer — le code que vous avez accepté cet après-midi, plutôt que la moyenne de toute la vie du dépôt, avec laquelle une grande suite existante continuera allègrement de paraître en bonne santé.
  • Copy Uncovered Lines produit exactement ce qui n'a jamais été exécuté, en Markdown — de quoi le recoller directement à l'assistant qui a écrit la suite en premier lieu.

Rien de tout cela ne lit un test pour le juger, et rien ici ne doit être compris comme une telle prétention : un test sans la moindre assertion couvre toujours chaque ligne qu'il touche. Ce que ces mesures donnent, c'est la part qu'un relecteur ne peut pas garder en tête — quel code n'a jamais été exécuté.

Unique à cette extension

Votre couverture de lignes indique 100%. 312 octets de votre binaire n'ont jamais tourné.

Toutes les autres métriques ici se mesurent à la source : instrumenter le code, exécuter la build instrumentée, compter ce qui s'est déclenché. La couverture du code objet mesure ce qu'aucun outil basé sur la source ne peut atteindre — quelle part du binaire construit s'est réellement exécutée, en octets d'instructions, en observant le flux d'instructions. Un compilateur produit du code dont aucune ligne de votre source ne rend compte : vérifications de bornes de tableaux, tables de saut de switch, sauvegardes de registres, routines d'exécution pour la division ou le flottant. Rien de tout cela n'apparaît dans votre source, donc aucun outil basé sur la source — y compris cette extension, pour toute autre métrique qu'elle lit — ne peut dire si cela a tourné. C'est aussi la seule métrique ici qui réponde à cela couvre-t-il l'assembleur ?, l'assembleur écrit à la main n'étant jamais instrumenté.

DO-178C le nomme explicitement : au niveau A, il est exigé en plus de MC/DC. Aucune autre extension VS Code ne le lit. Comment l'obtenir depuis une cible embarquée →

Capacités

Fonctionnalités de base

  • Une vue Coverage de chaque fichier mesuré, la règle d'aperçu et Annotated Source ; dans la gouttière propre à l'éditeur, par défaut, seulement ce qui mérite une marque — barres MC/DC, triangles « depuis la dernière exécution », points des lignes modifiées — avec des barres sur les seules lignes non couvertes ou une carte de chaleur des passages à un réglage près.
  • Couverture par ligne des instructions, branches, fonctions, régions, MC/DC et instanciations C++, selon ce que fournit le fichier de trace.
  • Ingestion multi-format et fusion déterministe de plusieurs exécutions avec provenance enregistrée.
  • Remappage de chemins — chemins de la machine de build CI → votre espace de travail local.
  • Couverture différentielle — ne décore que les lignes modifiées par rapport à une référence git de base.
  • Badges Explorer et un élément barre d'état global, coloré selon le score composite.
  • Mode watch — rechargement automatique lorsqu'un fichier de trace change.
  • Run Tests with Coverage — reconnaît le lanceur de tests à la racine de l'espace de travail et l'exécute avec la couverture activée, en chargeant ce qu'il écrit.
  • Fichiers de trace distants — une entrée de coverageFile.paths peut être une URL https:// : l'artefact CI est récupéré de façon conditionnelle (ETag / Last-Modified), avec les en-têtes que vous configurez dans remote.headers, chargé comme un fichier local, et récupéré à nouveau à intervalle régulier avec remote.refreshMinutes ; quand une récupération échoue, la dernière copie téléchargée est chargée à la place.
  • Variables dans les chemins — ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id} et ${config:section.key} dans chaque réglage de chemin ; une variable inconnue est laissée telle quelle, si bien qu'une faute de frappe apparaît dans le journal de détection au lieu de disparaître.
  • Espaces de travail multi-racines — chaque dossier est détecté depuis ses propres réglages (son .vscode/settings.json ou son entrée dans le .code-workspace), ses fichiers de trace fusionnent en une seule exécution, la vue Coverage regroupe les fichiers par dossier, et un dossier ajouté ou retiré recharge la couverture de lui-même.
  • Deux déclencheurs de rechargement de plus — une entrée absolue de coverageFile.paths hors de l'espace de travail est interrogée, si bien qu'un fichier qui y apparaît est chargé ; et watch.reloadAfterTasks nomme des tâches (npm: test) dont la fin recharge la couverture, que le mode watch soit activé ou non.
  • Une progression que l'on peut annuler — un chargement de dix fichiers de trace ou plus, ou de 8 Mo ou plus, et chaque Generate Full HTML Report s'exécutent sous une notification de progression munie d'un bouton Annuler ; annuler laisse l'exécution précédente chargée.
  • La vue Test Coverage propre à VS Code — chaque chargement est aussi publié via l'API Test Coverage de l'éditeur (testCoverage.publish), si bien que le panneau de couverture du Test Explorer, les pourcentages par fichier de l'Explorateur et la bascule Show Inline Coverage de l'éditeur affichent les mêmes chiffres ; Show in Test Coverage View publie à la demande et ouvre le panneau. Avec des tests nommés (TN: dans lcov), la vue filtre la couverture d’un fichier par test.
  • Règle de remappage suggérée — quand un chargement laisse des fichiers sans correspondance (chemins de conteneur ou de CI face à une copie de travail locale), l'extension infère la règle pathRemap qui en explique le plus grand nombre, propose Apply Suggested Remap sur le résultat du chargement et Suggest Path Remap Rule dans la palette ; rien n'est écrit sans le clic.
  • Motifs d'exclusion — fuciniCoverage.ignore (vendor/**, **/*.generated.ts) écarte des fichiers entiers de l'exécution au chargement, si bien que chaque vue, chaque garde-fou et chaque export compte sans eux ; le résultat du chargement dit combien et la sortie nomme chacun.
  • Non mesuré et non couvert — un fichier qu'aucun test n'a chargé n'est pas noté 0 % dans votre dos ; la barre d'état dit not measured pour un tel fichier, et unmeasured.mode peut lister ces fichiers dans la vue Coverage ou compter chacun comme un fichier non couvert, avec threshold.unmeasuredFiles pour poser un garde-fou sur leur nombre.
  • Ce que la fusion a fait, visible — avec plusieurs tracefiles chargés, chaque ligne de fichier nomme le rapport dont viennent ses chiffres, le badge est entouré là où ces chiffres ont supplanté un rapport plus ancien, chaque ligne de tracefile compte combien de ses fichiers ont été supplantés ou en ont supplanté d’autres, et un clic sur une ligne de tracefile met ses fichiers en évidence dans l’arbre (coverageView.mergedMarks).

Score composite & conformité

Une seule moyenne harmonique pondérée sur les lignes, branches, fonctions, régions, MC/DC et instanciations. Comme il s'agit d'une moyenne harmonique, une métrique faible ne peut pas être masquée par une parfaite. Les poids sont par défaut alignés sur les niveaux IEC 61508 / ISO 26262 / DO-178C, et le verdict COMPLIANT / NON-COMPLIANT est déterminé par des seuils par métrique ainsi qu'un mode configurable.

The status-bar hover card: NON-COMPLIANT, 3 of 5 gates below threshold — functions and regions pass, lines and branches miss narrowly (amber), MC/DC misses outright (red)Screenshot pending — add assets/img/statusbar.png (see SCREENSHOTS.md).

Analyse dans l'éditeur

  • CodeLens de fonction — % de couverture par fonction, cliquez pour sauter à sa première ligne non couverte.
  • Survol de branche & MC/DC — comptes pris/non pris par branche et détails condition/vecteur par décision ; gouttière de marge MC/DC colorée optionnelle.
  • Avertissements de code mort — avertissement dans le panneau Problems pour les fonctions avec des lignes mesurables et une couverture nulle.
  • Navigation Next/Previous Uncovered.
  • Avertissement de non-concordance quand le contenu d'un fichier ne correspond plus à son exécution — tenu à jour à chaque enregistrement ou modification sur le disque, avec la différence exacte au survol.
  • Depuis la dernière exécution — un triangle rouge sur chaque ligne exécutée lors de l'exécution précédente et pas dans celle-ci, un vert pour l'inverse, avec la règle d'aperçu et les nombres de passages au survol.
  • Tampons modifiés — chaque marque, survol et CodeLens suit le texte pendant l'édition et se retire d'une ligne réécrite, où un point gris dit pourquoi.
  • Modes de gouttière de l'éditeur — editorGutter.mode limite la gouttière aux constats (off), place une barre sur chaque ligne jamais exécutée et une barre ambre là où l'une des branches n'a jamais été prise (uncovered), ou ajoute une teinte chaude sur chaque ligne exécutée, d'autant plus vive qu'elle a tourné souvent (heatmap) ; Choose Editor Gutter Mode... bascule depuis la palette ou le menu de la barre d'état.
  • Compteurs de passages en ligne — hitCounts.inline écrit ×12 après chaque ligne où commence une instruction, ×0 compris ; Toggle Inline Hit Counts l'active ou le désactive.
  • Entrées Problems par ligne — problems.perLine place un diagnostic Information sur chaque bloc de lignes jamais exécutées d'un document ouvert (une fonction morte est une entrée, pas quarante), et éventuellement sur chaque ligne dont l'une des branches n'a jamais été prise ; les entrées suivent leurs lignes pendant l'édition.
  • Teinte de ligne et carte dans la barre de défilement — lineHighlight place une teinte translucide derrière les lignes elles-mêmes plutôt que (ou en plus d’)une marque dans la gouttière, et overviewRuler décide seul de la bande dans la barre de défilement : gouttière désactivée, c’est une carte des manques du fichier et rien à côté du code.
  • Quel fichier de trace a couvert cette ligne — avec plusieurs rapports fusionnés, l’info-bulle du nombre d’exécutions nomme chacun de ceux qui ont couvert la ligne (nom de suite issu du TN: de lcov compris), et un clic sur une ligne de fichier de trace dans la vue Coverage éclaire les lignes qu’il a apportées.
  • Rouge, ambre et vert — le mode coverage de editorGutter.mode et de lineHighlight peint chaque ligne mesurée aux couleurs de l’échelle de couleurs ; le bouton de mode de la barre d’état et Alt+G passent d’un mode au suivant.
  • Vos couleurs, en aperçu — l’échelle de couleurs et les teintes de la carte de chaleur (heatmap.colors, heatmap.colorsDark) sont des réglages, et la page des réglages les prévisualise sur un éditeur clair et un éditeur sombre au moment où elles sont choisies.
  • De quel rapport vient un fichier — quand deux rapports mesurent le même code, des règles coverageFile.sources, ou Choose Coverage Source for This File..., décident lequel chaque fichier affiche, au lieu que le plus récent l’emporte.

Rapports & historique

  • Generate Full HTML Report — un rapport multi-pages auto-généré, par répertoire ; Open Annotated Source pour un seul fichier.
  • Historique local optionnel des exécutions avec une tendance de couverture (▲/▼), ainsi que Compare Two History Runs et Compare with Last Run.
  • Show Worst-Covered Files / Functions et Copy Uncovered Lines (Markdown).
  • Export Fucini JSON — le modèle normalisé complet.
  • Export Coverage Report... — la même exécution en CSV (par fichier ou par fonction), en résumé Markdown, en fichier de trace LCOV, en XML Cobertura, en SARIF, ou en badge SVG autonome. Avec vingt-cinq lecteurs et ces écrivains, l'extension convertit entre formats : chargez JaCoCo ou llvm-cov JSON et produisez le LCOV que lisent Codecov, Coveralls et SonarQube, ou le XML Cobertura qu'ingèrent Jenkins, GitLab et Azure DevOps.
  • Generate Coverage Badge — un SVG de style shields écrit directement dans l'espace de travail (badge.outputPath, par défaut coverage-badge.svg), qu'un README intègre avec ![coverage](coverage-badge.svg) sans service hébergé ; badge.metric choisit les lignes, les branches, le MC/DC ou le score composite, la couleur suit les paliers de colorScale.*, et badge.autoUpdate le réécrit après chaque chargement.
Generated multi-page HTML coverage reportScreenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
The report’s annotated page for src/calc.c: per-line hit counts, a fully covered function, an uncovered else branch, a 1/2 partial branch, an MC/DC expansion and a never-called functionScreenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).

Community et Pro, fonctionnalité par fonctionnalité

Deux fiches, un seul code. Community est l'édition gratuite pour toujours, et celle où retombe la fiche Pro après son essai de 14 jours ; Pro et l'essai, c'est tout, sans plafond. La limite est tracée pour que l'édition gratuite voie toujours chaque constat et ne paie que le confort, la preuve et l'échelle — dans VS Code, Fucini Coverage: What Community Includes montre la même liste avec les compteurs du jour pour chaque plafond.

CapacitéCommunity (gratuit)Pro, et l'essai
Les 25 formats, fusion de plusieurs fichiers, remappage des chemins✓✓
Gouttières, règle d'aperçu, badges de l'Explorateur, vue Couverture, CodeLens, survols✓✓
Mode surveillance avec rechargement automatique ; Run Tests with Coverage✓✓
Couverture du diff, historique et tendance, marques « depuis la dernière exécution »✓✓
Chargement de la couverture par commande25 par jour (les chargements automatiques ne comptent pas)illimité
Comparer des exécutions, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON5 par semaine chacunillimité
Annotated Source, en place5 par semaineillimité, plus un volet latéral persistant et Generate Full HTML Report
Export Coverage ReportCSV (par fichier, par fonction)aussi Markdown, LCOV, Cobertura XML, SARIF, badge SVG
Un fichier qui ne correspond plus à sa couverturesignalé et estompéaussi la ligne, la fonction ou la somme de contrôle qui l'a prouvé
Mutants survivantsmarqués sur la ligne, avec leur nombreaussi ce que chaque mutant a modifié
Tests ayant exécuté une lignecombienaussi leurs noms
CRAPMax CRAP de l'exécution, CRAP sur chaque fonctionaussi la liste classée Riskiest Methods
Risk hotspotscombien, et le pire scoreaussi la liste classée, chacun ouvrant sa fonction
Couverture MC/DC, barres de gouttière et survol—✓
Couverture du code objet notée et contrôléeseule sa présence est annoncée✓
Un fichier mesuré par plusieurs rapportsle rapport le plus récentaussi en choisir un par fichier, ou les combiner (agree / union)
Télémétrie requisenon — en option, et une fois par machine, Unlock Full Features échange une télémétrie d'usage détaillée contre 30 jours de tout ce qui figure dans la colonne de droitenon

Une semaine dure sept jours à compter de la première utilisation qui l'a ouverte, et rien de ce qui ne fait que lire la couverture n'est compté. Pas prêt pour un abonnement ? Un pass 7 jours, c'est tout ce que contient la colonne de droite pendant une semaine, payé une seule fois, sans rien à résilier.

VS Code et Visual Studio côte à côte

Un produit, deux éditeurs, un lecteur : le même rapport donne les mêmes chiffres, au chiffre près, dans les deux. Coverage Studio pour Visual Studio fonctionne sur Visual Studio 2022 et 2026 — Community, Professional et Enterprise et n'utilise pas la couverture de code propre à Visual Studio, réservée à Enterprise en 2022 ; il est inclus dans chaque forfait payant, et un appareil avec les deux éditeurs compte pour un siège. Tout ce qui est au-dessus de la ligne existe dans les deux ; en dessous, ce pour quoi Visual Studio n'a pas d'équivalent, et ce qui y est encore à venir.

CapacitéVS CodeVisual Studio
Les 25 formats, fusion multi-fichiers, remappage des chemins, les mêmes réglages fuciniCoverage.* et .vscode/settings.json✓✓
Gouttières, règle d'aperçu, compteurs de passages, lentille par fonction, infobulles, la vue Coverage, la barre d'état et ses cartes✓✓
Mode veille avec rechargement automatique ; Next Uncovered, Next Partly-Tested Decision ; copie en Markdown✓✓
Score composite, seuils et verdict COMPLIANT ; MC/DC ; CRAP✓✓
Getting Started, en 18 languesune visite guidéeune page sous Tools → Coverage Studio
Run Tests with Coverage, Run This Test with Coverage, couverture après chaque enregistrement ; le panneau Test Coverage propre à l'éditeur✓✓, et Collect Coverage in Test Explorer… — le panneau Test Coverage est une API VS Code
Badges de l'Explorateur✓— (l'Explorateur de solutions ne peut pas décorer les fichiers)
Annotated Source, rapport HTML, exports, Check Thresholds, Error List, historique et tendance, couverture des diffs✓✓
Quels tests ont exécuté une ligne, exclusion depuis l'arborescence et depuis l'éditeur, la perspective par espace de noms et la zone de recherche, les sessions de couverture, le graphique de tendance, la référence CI✓✓, plus Run Native Project with Coverage pour un projet C++
Niveau gratuit, essai, paiement✓— (un forfait payant ; la clé est trouvée sur une machine où VS Code est activé)

À venir : toute cette couverture dans Azure DevOps, dans une extension gratuite. Azure DevOps n'affiche la couverture d'un build que dans les limites de son propre format — les lignes, et les branches en pourcentage. Fucini DevOps Studio affichera tout ce que Coverage Studio lit : chacun de ces 25 formats, pour chaque langage, avec MC/DC, les conditions, le score composite et les seuils, sous forme d'onglet Coverage sur le pipeline qui l'a produit. Suivez les actualités pour la première version.

Référence des paramètres

Configurez dans l'interface des paramètres (recherchez Fucini Coverage) ou dans 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.

Une ligne se terminant par Par dossier. accepte une valeur au niveau du dossier dans un espace de travail multi-racines : chaque dossier est détecté avec son propre .vscode/settings.json ou sa propre entrée dans le .code-workspace, et ${workspaceFolder} y désigne ce dossier.

Localisation

ParamètrePar défautRôle
languageautoFixe l'interface d'exécution propre à cette extension (barre d'état, notifications, infobulles, webviews de licence et de rapport) à une langue donnée, indépendamment de la langue d'affichage de VS Code. auto suit VS Code. L'une de auto, en, uk, nl, de, fr, es, hr, pl, it, pt, ru, tr, he, ja, zh, hi, ko, ar. Ne change pas les entrées de la palette de commandes ni les libellés/descriptions de l'interface des paramètres — VS Code les résout depuis sa langue d'affichage.

Découverte & chargement

ParamètrePar défautRôle
coverageFile.defaultLocation""Dossier de base pour la découverte et les boîtes de dialogue de sélection. Variables : ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id}, ${config:section.key}. Par dossier.
coverageFile.paths[]Fichier(s) de trace à charger et fusionner, relatifs au dossier de base, absolus (mêmes variables que ci-dessus), ou une URL http(s):// récupérée à chaque chargement — ajoutez #lcov.info (ou un autre nom de fichier) en fragment d’URL quand l’URL elle-même n’a pas d’extension. Un glob * relatif est récursif sous le dossier de base ; une entrée absolue peut elle aussi contenir un joker (${workspaceFolder}/build/coverage-merged/*.lcov.info, ** pour n’importe quelle profondeur), recherché sous les dossiers qui le précèdent. Par dossier.
watch.enabledtrueRecharger la couverture quand un fichier de trace change — ou apparaît, pour une entrée absolue hors de l’espace de travail. Par dossier.
watch.reloadAfterTasks[]Noms de tâches (label, ou source: name comme npm: test) dont la fin recharge la couverture, que watch.enabled soit activé ou non. Par dossier.
remote.headers[]En-têtes Name: value envoyés avec chaque récupération d’URL ; les variables sont développées, si bien que Authorization: Bearer ${env:CI_TOKEN} garde le jeton hors de settings.json. Par dossier.
remote.refreshMinutes0Récupérer à nouveau les entrées URL toutes les N minutes (GET conditionnel ; 0 = uniquement au chargement). Par dossier.
baseline.report""Le rapport auquel comparer chaque exécution chargée — celui de la branche main, tel que le serveur de build le publie : une URL, récupérée avec remote.headers et mise en cache comme l’est une URL de coverageFile.paths, ou le chemin d’un artefact téléchargé, absolu ou relatif au dossier. La carte de la barre d’état dit alors où se situe cette exécution par rapport à lui, et Compare with CI Baseline liste les fichiers qui ont bougé. Vide : pas de référence. Par dossier.

Échelle de couleurs et badges

coverage: 83%

ParamètrePar défautRôle
colorScale.presetdefaultcolorblind remplace le rouge, l'ambre et le vert par du vermillon, de l'orange et du bleu (Okabe–Ito) partout où la couverture est colorée ; les couleurs modifiées ci-dessous restent prioritaires.
colorScale.lowColor#8b1a1aExtrémité basse du dégradé de couverture.
colorScale.midColor#b8860bCouleur pivot du dégradé.
colorScale.highColor#228b22Extrémité haute (100 %) du dégradé.
colorScale.lowThreshold80% auquel le badge passe de bas à moyen.
colorScale.highThreshold90% auquel le badge passe de moyen à haut (et pivot du dégradé).
heatmap.colors["#fff1a8", …, "#a63603"]Les cinq teintes de la carte de chaleur sur un thème clair, de la ligne exécutée le moins souvent à celle exécutée le plus souvent.
heatmap.colorsDark["#6e5f22", …, "#ff6a00"]La même chose pour un thème sombre, où plus clair signifie davantage.

Score composite (moyenne harmonique pondérée)

ParamètrePar défautRôle
whmWeights.lines1Poids de la couverture de lignes/instructions.
whmWeights.functions1Poids de la couverture de fonctions.
whmWeights.regions1.5Poids de la couverture de régions (llvm-cov).
whmWeights.branches2Poids de la couverture de branches.
whmWeights.mcdc4Poids de la couverture MC/DC. 0 l’exclut.
whmWeights.instantiations0.5Poids des instanciations de templates C++ (llvm-cov).

Seuils & conformité

ParamètrePar défautRôle
threshold.profilestandardstandard applique les valeurs par défaut ci-dessous ; safety place chaque garde-fou à 100, sauf le score de mutation ; custom laisse ce que vous avez défini. Dans le profil par défaut, les métriques de sécurité sont sans garde-fou — un projet qui ne mesure pas MC/DC n’est pas mis en échec pour autant.
threshold.statement80% minimal d’instructions. 0 désactive le contrôle.
threshold.branch70% minimal de branches.
threshold.mcdc0% minimal MC/DC.
threshold.functions80% minimal de fonctions.
threshold.regions75% minimal de régions (llvm-cov).
threshold.instantiations0% minimal d’instanciations (llvm-cov) ; les projets uniquement en C sont ignorés.
threshold.conditions0% minimal de conditions.
threshold.functionCalls0% minimal d’appels de fonction, lorsque le rapport le fournit.
threshold.objectCode0% minimal de code objet, lorsque le rapport le fournit.
threshold.mutation0Score de mutation minimal, lorsqu’un rapport de mutation est chargé.
threshold.weighted75Score composite minimal.
compliance.modestrictstrict | whm | both | either.
compliance.diagnosticsfalseUne erreur dans Problèmes par seuil non atteint, sur le fichier de trace.
threshold.unmeasuredFiles-1Nombre maximal de fichiers non mesurés (nécessite unmeasured.mode réglé sur list ou count). -1 ne contrôle pas ; 0 échoue dès le premier fichier qu’aucun test n’a chargé.
problems.perLineoffoff | uncovered | uncoveredAndPartial : une entrée Information (un soulignement ondulé dans l’éditeur) par bloc de lignes non couvertes consécutives dans chaque document ouvert, éventuellement plus une par ligne dont l’une des branches n’a jamais été prise. Indépendant de problems.enabled. Par dossier.

Diff, remappage & rapports

ParamètrePar défautRôle
pathRemap[]Réécritures de chemins {from,to}, dans l’ordre ; to peut utiliser ${workspaceRoot}, qui essaie d’abord le dossier du fichier de trace, puis chaque autre dossier de l’espace de travail. Quand un chargement laisse des fichiers sans correspondance, le résultat du chargement propose Apply Suggested Remap avec la règle inférée des chemins sans correspondance (ainsi que Suggest Path Remap Rule dans la palette) ; rien n’est écrit tant que vous ne cliquez pas. Par dossier.
ignore[]Motifs glob de fichiers entiers à laisser hors de l’exécution (vendor/**, **/*.generated.ts, build/**) — écartés au chargement, si bien que chaque vue, chaque garde-fou et chaque export compte sans eux. Comparés au chemin relatif à l’espace de travail et au chemin absolu ; un motif sans / correspond à un nom à n’importe quelle profondeur, comme .gitignore. Par dossier.
ignore.generatedtrueLaisser les fichiers .NET générés hors de chaque total, page et export — *.Designer.cs, *.g.cs, *.g.i.cs, *.generated.cs, *.razor.g.cs, *.AssemblyInfo.cs, GlobalUsings.g.cs, Migrations/** et obj/** — avant que ignore ne s'applique. Désactivé pour un projet qui teste ses migrations. Par dossier.
ignore.namespaces[]Espaces de noms à laisser hors de chaque total et de chaque page, pour les sources .NET : un fichier dont la déclaration d’espace de noms correspond à l’un d’eux n’est pas compté. Un préfixe avec * comme joker — Acme.Generated, Acme.*.Migrations, *Tests. Par dossier.
ignore.attributes["ExcludeFromCodeCoverage"]Attributs qui retirent du compte une classe, une méthode ou une propriété .NET, lus dans le source : le membre placé sous l’un d’eux est exclu comme LCOV_EXCL_START/STOP l’exclurait, quel que soit l’outil qui a écrit le rapport. Les noms avec ou sans le suffixe Attribute, avec ou sans espace de noms ; ajoutez GeneratedCode, Obsolete ou les vôtres. Par dossier.
testRun.perTestfalseRun Tests with Coverage exécute une recette dotnet test une classe de test à la fois et étiquette chaque rapport de sa classe, si bien que le survol, le CodeLens et Show Tests That Ran This Line peuvent dire quels tests ont exécuté une ligne — plus lent, et seulement pour .NET, dont le rapport Cobertura ne sait pas le dire par lui-même. Par dossier.
testRun.onSavefalseEnregistrer un source lance les tests qui le couvrent, avec la couverture, un instant après l’enregistrement : pour une solution .NET, seuls les projets de test qui référencent le projet du fichier enregistré, un dotnet test chacun ; tout autre lanceur, sa recette entière. Plusieurs enregistrements font une seule exécution ; une exécution déjà en cours n’est pas interrompue. Par dossier.
testRun.skipWhenTestsFailfalseRun Tests with Coverage laisse la couverture à l'écran telle qu'elle était quand le lanceur se termine sur un échec, et le dit dans le volet Output — une exécution au rouge ne peint pas en rouge un fichier vert. Par dossier.
unmeasured.modeoffoff | list | count : que faire des fichiers de l’espace de travail du type de l’exécution qu’aucun test n’a chargés (voir Non mesuré et non couvert). list les nomme dans la vue Coverage et le résultat du chargement ; count note en plus chacun comme un fichier non couvert de ses lignes de code. Le modifier recharge.
unmeasured.exclude["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"]Fichiers jamais dits non mesurés, dans la syntaxe glob d’ignore — par défaut, les fichiers d’en-tête seuls et de déclarations seules. Par dossier.
hotspots.crapThreshold30Une fonction avec ce score CRAP ou plus est un risk hotspot, listé sous l'arbre de la vue Coverage, le pire en premier — 30 est le chiffre proposé par les auteurs de la métrique. Seuls les rapports qui portent la complexité cyclomatique en ont. Par dossier.
hotspots.complexityThreshold0Une fonction aussi complexe ou plus est aussi un hotspot, quelle que soit sa couverture ; 0 le désactive. Par dossier.
gitDiff.enabledfalseLimiter la couverture aux lignes modifiées par rapport à une référence de base. Par dossier.
gitDiff.baseReforigin/masterRéférence Git de base pour la couverture du diff. Par dossier.
externalHtmlReport.dir""Lire un répertoire HTML llvm-cov show déjà généré pour Annotated Source. Par dossier.
htmlReport.outputDir""Répertoire de sortie pour Generate Full HTML Report. Par dossier.
badge.outputPathcoverage-badge.svgOù Generate Coverage Badge écrit le SVG — relatif au dossier de l’espace de travail ou absolu, mêmes variables que coverageFile.defaultLocation ; les dossiers parents sont créés. Par dossier.
badge.metriclineslines | branches | mcdc | weighted : le chiffre global de l’exécution affiché sur le badge (weighted est le score composite de la barre d’état). Aucune donnée pour lui → un n/a gris. Par dossier.
badge.autoUpdatefalseRéécrire le badge après chaque chargement réussi, silencieusement (consigné sous [FUCINI_BADGE]). Par dossier.

Affichage & analyse

ParamètrePar défautRôle
mcdcGutter.enabledfalseGouttière MC/DC colorée dans la marge.
statusBar.enabledtrueAfficher des éléments de barre d’état pour l’exécution et par fichier.
statusBar.showLaunchertrueLanceur de menu rapide toujours disponible.
statusBar.showModeToggletrueUn bouton de la barre d’état qui nomme le mode de gouttière ; un clic le fait avancer d’un cran.
codeLens.enabledtrueCodeLens de couverture par fonction.
deadCode.enabledtrueAvertir pour les fonctions sans couverture.
staleWarning.enabledtrueMarquer les fichiers dont le contenu ne correspond plus à leur exécution.
explorerBadges.enabledfalseBadges de couverture et infobulle à côté des fichiers dans l'Explorateur.
coverageFile.rememberPickstrueÉcrire chaque fichier choisi dans coverageFile.paths.
coverageFile.sources[]De quel rapport chargé viennent les chiffres d’un fichier quand plusieurs le mesurent : des règles ordonnées { "files": glob, "report": glob }, la première qui correspond tranchant. Avec "combine": "union" (couvert là où un rapport quelconque a exécuté une ligne) ou "agree" (seulement là où chaque rapport l’a fait, les divergences en bleu sarcelle), les rapports correspondants sont combinés. Offres payantes. Par dossier.
coverageFile.mergeStrategynewestPour les fichiers qu’aucune règle ne tranche : newest (le rapport écrit en dernier l’emporte) ou order (l’entrée la plus tardive dans coverageFile.paths l’emporte, quelles que soient les dates). Par dossier.
sinceLastRun.enabledtrueMarques de gouttière sur les lignes dont la couverture a changé depuis l'exécution précédente.
dirtyMarks.enabledtruePoint gris dans la gouttière sur les lignes modifiées depuis le chargement de l'exécution.
editorGutter.modeoffoff | uncovered | coverage | heatmap : rien au-delà des constats ci-dessus, des barres sur les seules lignes non couvertes (et partiellement couvertes), celles-ci plus une barre verte sur chaque ligne couverte, ou celles-ci plus une teinte chaude sur chaque ligne exécutée selon son nombre de passages. Par dossier.
lineHighlightoffoff | uncovered | coverage | heatmap : une teinte translucide derrière la ligne elle-même, pour ce que la gouttière marque. Un réglage à part, pour que la gouttière puisse rester nette pendant que les manques sont teintés, ou l’inverse. Par dossier.
overviewRulerfollowfollow | uncovered | off : si les lignes non couvertes reçoivent une bande dans la règle d’aperçu de la barre de défilement. uncovered la trace même gouttière désactivée — une carte des manques du fichier le long de la barre de défilement et rien à côté du code ; off conserve les barres et supprime la bande. Par dossier.
hitCounts.inlinefalse×N après chaque ligne où commence une instruction, ×0 compris. Par dossier.
testCoverage.publishtruePublier chaque exécution chargée dans la vue Test Coverage propre à VS Code (panneau Test Explorer, pourcentages de l’Explorateur, Show Inline Coverage). Désactivé : aucune entrée Fucini Coverage dans le Test Explorer ; Show in Test Coverage View publie toujours à la demande.
coverageView.perspectivefoldersQuel arbre la vue Coverage affiche : les dossiers et fichiers de l’espace de travail, ou — pour un rapport .NET qui nomme ses classes (Cobertura, Coverlet, OpenCover) — les espaces de noms, classes et méthodes, chacun avec ses propres chiffres. La liste déroulante de la vue l’écrit ; elle n’est proposée que lorsque l’exécution porte des noms de classes.
coverageView.mergedMarkstrueAvec plusieurs tracefiles chargés : entourer le badge de tracefile de chaque fichier dont les chiffres ont supplanté un rapport plus ancien, et laisser un clic sur une ligne de tracefile mettre en évidence les fichiers qu’elle a mesurés. Désactivé : badges simples, aucune mise en évidence ; les lignes de tracefile comptent toujours ce qui a été supplanté.
excludeCommentstrueExclure les lignes de commentaire, vides & LCOV_EXCL_*, ainsi que les directives du préprocesseur en C, C++, Objective-C, CUDA et C#.
excluded.includeInTotalsfalseCompter les lignes exclues dans les totaux.

Historique

ParamètrePar défautRôle
history.enabledfalseConserver les exécutions localement pour la tendance et la comparaison.
history.retention20Nombre maximal d’exécutions conservées.

Actions rapides de la barre d'état

Tous désactivés (false) par défaut, sauf les deux derniers ; activez pour ajouter l'action correspondante au menu rapide : quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFolders, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson, exportReport, generateBadge, showTestCoverage, chooseGutterMode, toggleInlineHitCounts.

Télémétrie

ParamètrePar défautRôle
telemetry.enabledfalseTélémétrie d'utilisation, désactivée par défaut. Sur le niveau Community, Unlock Full Features l'échange contre toutes les fonctionnalités Pro, MC/DC comprise, pendant 30 jours, une fois par machine ; une licence payante n'en est pas affectée. Consultez la politique de confidentialité pour savoir ce qui est envoyé. Le récapitulatif quotidien et l'avis de suppression dépendent aussi du paramètre telemetry.telemetryLevel propre à VS Code ; le ping d'installation et quelques petits événements, non.

Mises à jour

ParamètrePar défautRôle
update.checkForUpdatestrueVérifier périodiquement fucini.software et la Marketplace VS Code, puis proposer d’installer la version la plus récente.

Licence

ParamètrePar défautRôle
license.key""Clé d’activation de la préversion d’évaluation (une chaîne FCK1.…). Liée à cette machine/cet utilisateur ; elle peut comporter une expiration et des limites par fonctionnalité. Voir Évaluation et activation.