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.pathspeut être une URLhttps://: l'artefact CI est récupéré de façon conditionnelle (ETag / Last-Modified), avec les en-têtes que vous configurez dansremote.headers, chargé comme un fichier local, et récupéré à nouveau à intervalle régulier avecremote.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.jsonou 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.pathshors de l'espace de travail est interrogée, si bien qu'un fichier qui y apparaît est chargé ; etwatch.reloadAfterTasksnomme 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
pathRemapqui 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.modepeut lister ces fichiers dans la vue Coverage ou compter chacun comme un fichier non couvert, avecthreshold.unmeasuredFilespour 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.
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.modelimite 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×12après chaque ligne où commence une instruction,×0compris ; Toggle Inline Hit Counts l'active ou le désactive. - Entrées Problems par ligne —
problems.perLineplace 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 —
lineHighlightplace une teinte translucide derrière les lignes elles-mêmes plutôt que (ou en plus d’)une marque dans la gouttière, etoverviewRulerdé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
coveragedeeditorGutter.modeet delineHighlightpeint chaque ligne mesurée aux couleurs de l’échelle de couleurs ; le bouton de mode de la barre d’état etAlt+Gpassent 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éfautcoverage-badge.svg), qu'un README intègre avecsans service hébergé ;badge.metricchoisit les lignes, les branches, le MC/DC ou le score composite, la couleur suit les paliers decolorScale.*, etbadge.autoUpdatele réécrit après chaque chargement.
Screenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
Screenshot 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 commande | 25 par jour (les chargements automatiques ne comptent pas) | illimité |
| Comparer des exécutions, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON | 5 par semaine chacun | illimité |
| Annotated Source, en place | 5 par semaine | illimité, plus un volet latéral persistant et Generate Full HTML Report |
| Export Coverage Report | CSV (par fichier, par fonction) | aussi Markdown, LCOV, Cobertura XML, SARIF, badge SVG |
| Un fichier qui ne correspond plus à sa couverture | signalé et estompé | aussi la ligne, la fonction ou la somme de contrôle qui l'a prouvé |
| Mutants survivants | marqués sur la ligne, avec leur nombre | aussi ce que chaque mutant a modifié |
| Tests ayant exécuté une ligne | combien | aussi leurs noms |
| CRAP | Max CRAP de l'exécution, CRAP sur chaque fonction | aussi la liste classée Riskiest Methods |
| Risk hotspots | combien, et le pire score | aussi 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ée | seule sa présence est annoncée | ✓ |
| Un fichier mesuré par plusieurs rapports | le rapport le plus récent | aussi en choisir un par fichier, ou les combiner (agree / union) |
| Télémétrie requise | non — 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 droite | non |
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 Code | Visual 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 langues | une visite guidée | une 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ètre | Par défaut | Rôle |
|---|---|---|
language | auto | Fixe 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ètre | Par défaut | Rô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.enabled | true | Recharger 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.refreshMinutes | 0 | Ré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
| Paramètre | Par défaut | Rôle |
|---|---|---|
colorScale.preset | default | colorblind 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 | #8b1a1a | Extrémité basse du dégradé de couverture. |
colorScale.midColor | #b8860b | Couleur pivot du dégradé. |
colorScale.highColor | #228b22 | Extrémité haute (100 %) du dégradé. |
colorScale.lowThreshold | 80 | % auquel le badge passe de bas à moyen. |
colorScale.highThreshold | 90 | % 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ètre | Par défaut | Rôle |
|---|---|---|
whmWeights.lines | 1 | Poids de la couverture de lignes/instructions. |
whmWeights.functions | 1 | Poids de la couverture de fonctions. |
whmWeights.regions | 1.5 | Poids de la couverture de régions (llvm-cov). |
whmWeights.branches | 2 | Poids de la couverture de branches. |
whmWeights.mcdc | 4 | Poids de la couverture MC/DC. 0 l’exclut. |
whmWeights.instantiations | 0.5 | Poids des instanciations de templates C++ (llvm-cov). |
Seuils & conformité
| Paramètre | Par défaut | Rôle |
|---|---|---|
threshold.profile | standard | standard 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.statement | 80 | % minimal d’instructions. 0 désactive le contrôle. |
threshold.branch | 70 | % minimal de branches. |
threshold.mcdc | 0 | % minimal MC/DC. |
threshold.functions | 80 | % minimal de fonctions. |
threshold.regions | 75 | % minimal de régions (llvm-cov). |
threshold.instantiations | 0 | % minimal d’instanciations (llvm-cov) ; les projets uniquement en C sont ignorés. |
threshold.conditions | 0 | % minimal de conditions. |
threshold.functionCalls | 0 | % minimal d’appels de fonction, lorsque le rapport le fournit. |
threshold.objectCode | 0 | % minimal de code objet, lorsque le rapport le fournit. |
threshold.mutation | 0 | Score de mutation minimal, lorsqu’un rapport de mutation est chargé. |
threshold.weighted | 75 | Score composite minimal. |
compliance.mode | strict | strict | whm | both | either. |
compliance.diagnostics | false | Une erreur dans Problèmes par seuil non atteint, sur le fichier de trace. |
threshold.unmeasuredFiles | -1 | Nombre 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.perLine | off | off | 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ètre | Par défaut | Rô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.generated | true | Laisser 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.perTest | false | Run 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.onSave | false | Enregistrer 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.skipWhenTestsFail | false | Run 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.mode | off | off | 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.crapThreshold | 30 | Une 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.complexityThreshold | 0 | Une fonction aussi complexe ou plus est aussi un hotspot, quelle que soit sa couverture ; 0 le désactive. Par dossier. |
gitDiff.enabled | false | Limiter la couverture aux lignes modifiées par rapport à une référence de base. Par dossier. |
gitDiff.baseRef | origin/master | Ré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.outputPath | coverage-badge.svg | Où 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.metric | lines | lines | 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.autoUpdate | false | Réécrire le badge après chaque chargement réussi, silencieusement (consigné sous [FUCINI_BADGE]). Par dossier. |
Affichage & analyse
| Paramètre | Par défaut | Rôle |
|---|---|---|
mcdcGutter.enabled | false | Gouttière MC/DC colorée dans la marge. |
statusBar.enabled | true | Afficher des éléments de barre d’état pour l’exécution et par fichier. |
statusBar.showLauncher | true | Lanceur de menu rapide toujours disponible. |
statusBar.showModeToggle | true | Un bouton de la barre d’état qui nomme le mode de gouttière ; un clic le fait avancer d’un cran. |
codeLens.enabled | true | CodeLens de couverture par fonction. |
deadCode.enabled | true | Avertir pour les fonctions sans couverture. |
staleWarning.enabled | true | Marquer les fichiers dont le contenu ne correspond plus à leur exécution. |
explorerBadges.enabled | false | Badges de couverture et infobulle à côté des fichiers dans l'Explorateur. |
coverageFile.rememberPicks | true | É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.mergeStrategy | newest | Pour 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.enabled | true | Marques de gouttière sur les lignes dont la couverture a changé depuis l'exécution précédente. |
dirtyMarks.enabled | true | Point gris dans la gouttière sur les lignes modifiées depuis le chargement de l'exécution. |
editorGutter.mode | off | off | 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. |
lineHighlight | off | off | 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. |
overviewRuler | follow | follow | 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.inline | false | ×N après chaque ligne où commence une instruction, ×0 compris. Par dossier. |
testCoverage.publish | true | Publier 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.perspective | folders | Quel 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.mergedMarks | true | Avec 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é. |
excludeComments | true | Exclure les lignes de commentaire, vides & LCOV_EXCL_*, ainsi que les directives du préprocesseur en C, C++, Objective-C, CUDA et C#. |
excluded.includeInTotals | false | Compter les lignes exclues dans les totaux. |
Historique
| Paramètre | Par défaut | Rôle |
|---|---|---|
history.enabled | false | Conserver les exécutions localement pour la tendance et la comparaison. |
history.retention | 20 | Nombre 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ètre | Par défaut | Rôle |
|---|---|---|
telemetry.enabled | false | Té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ètre | Par défaut | Rôle |
|---|---|---|
update.checkForUpdates | true | Vérifier périodiquement fucini.software et la Marketplace VS Code, puis proposer d’installer la version la plus récente. |
Licence
| Paramètre | Par défaut | Rô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. |