COUVERTURE NATIVE DANS VS CODE ET VISUAL STUDIO

La couverture qui vit dans votre éditeur

Ingérez des fichiers lcov, llvm-cov JSON, Cobertura, JaCoCo, Istanbul, SimpleCov, Clover, OpenCover, coverage.py, gcov, Go, Coveralls, SonarQube, GNATcoverage, Bullseye, Visual Studio, Xcode, VectorCAST, Testwell CTC++, TRACE32, EMMA, UCIS/UCDB, NCover et dotCover, normalisez-les en un modèle canonique unique, fusionnez les exécutions de façon déterministe et lisez le résultat directement dans les gouttières de l'éditeur — dans VS Code, et dans Visual Studio 2022 et 2026 dans toutes les éditions. Aucun visualiseur séparé pour lequel quitter votre éditeur.

Télécharger le VSIX Lire le guide de l'utilisateur Explorer les fonctionnalités

Gratuit pour commencer. Fucini Coverage Studio est gratuit pendant un essai de 14 jours, avec tout débloqué. Ensuite, l'extension ne vous bloque pas : elle bascule sur le niveau Community gratuit — toutes les fonctionnalités sauf MC/DC, avec de généreux plafonds mensuels sur quelques-unes. Passez à un forfait supérieur quand vous le souhaitez pour l'ensemble sans restriction, ou débloquez tout gratuitement en partageant une télémétrie d'usage détaillée. Voir les forfaits →

À 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.

Covered/uncovered gutters with the Test Coverage panel openScreenshot pending — add assets/img/hero.png (see SCREENSHOTS.md).

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

Une suite de tests générée paraît complète. La couverture dit si elle lʼest.

Un modèle de langage vous écrit une suite de tests en quelques secondes, et elle se lit de façon convaincante. Ce quʼil ne peut pas vous dire, cʼest si ces tests atteignent quoi que ce soit dʼimportant — et la couverture de lignes ne le peut pas davantage, car un test sans la moindre assertion allume malgré tout chaque ligne quʼil touche.

◆ Des décisions, pas seulement des lignes

MC/DC et couverture de branches montrent si chaque décision a réellement été exercée, et pas seulement si la ligne a été atteinte. Les tests générés suivent typiquement le chemin heureux et laissent lʼautre côté de chaque if intact — ce qui se lit comme 100% de lignes et 50% de branches. Cet écart est le résultat.

◆ Des fonctions jamais appelées

La détection de code mort liste les fonctions quʼaucun test nʼa atteintes. Une suite générée les nomme dans ses intitulés et nʼy parvient jamais, ce qui reste invisible dans une exécution verte.

◆ Rattaché à la modification devant vous

La couverture de diff ne mesure que ce qui a changé par rapport à une référence git : « les tests passent » devient « le code que vous venez dʼaccepter est testé ». Cela fonctionne de la même façon, quʼil ait été écrit par une personne ou par un assistant.

Rien de tout cela ne prouve quʼun test est bon — rien ne le peut. Cela vous dit, précisément et ligne par ligne, ce qui nʼa jamais été exécuté : la partie quʼun relecteur ne peut pas garder en tête et quʼun assistant ne signalera pas de lui-même. Fonctionne avec TypeScript et JavaScript via Vitest, Jest ou nyc, et avec C, C++, Java et Ruby via les tracefiles que ces chaînes produisent déjà.

Ce qui nous différencie

Un seul modèle, tous les formats, zéro visualiseur personnalisé

◆ Vingt-cinq formats en entrée

LCOV, llvm-cov JSON, Cobertura, JaCoCo, Istanbul/nyc, SimpleCov, Clover, OpenCover, coverage.py, gcov JSON et texte brut, Go, Coveralls, SonarQube, GNATcoverage, Bullseye, Visual Studio, Xcode, VectorCAST, Testwell CTC++, TRACE32, EMMA, UCIS/UCDB, NCover et dotCover — détectés automatiquement et fusionnés de façon déterministe avec une provenance enregistrée.

◆ Interface native en sortie

Gouttières de ligne, de branche et de fonction, la règle de synthèse, les badges de l'explorateur et la vue Covered Files.

◆ MC/DC & régions

Modified Condition/Decision Coverage, couverture des régions et des instanciations C++ depuis llvm-cov, avec détail par décision au survol.

◆ Score pondéré par la sécurité

Une moyenne harmonique pondérée unique sur toutes les métriques, avec des poids alignés sur les niveaux IEC 61508 / ISO 26262 / DO-178C.

◆ Contrôle de conformité

Verdicts COMPLIANT / NON-COMPLIANT avec seuils par métrique et modes strict, whm, both ou either.

◆ Couverture différentielle

Limitez les décorations aux lignes modifiées par rapport à une référence git de base — parfait pour vérifier exactement ce qu'une PR a couvert ou non.

Opérationnel en 30 secondes

  1. Installez l’extension et ouvrez votre projet.
  2. Lancez vos tests — Palette de commandes → Fucini Coverage: Run Tests with Coverage. La commande reconnaît vitest, jest, pytest, go, cargo, dotnet, maven, gradle, phpunit et ctest, lance vos tests avec la couverture activée et charge ce qu’ils écrivent. Vous avez déjà un fichier de trace ? Fucini Coverage: Pick Coverage File le charge et s’en souvient.
  3. Ouvrez un fichier source — la gouttière montre quelles lignes ont été exécutées, la barre d’état le pourcentage du fichier, un survol le nombre d’exécutions de chaque ligne, et l’exécution apparaît dans la vue Coverage et dans le panneau Test Coverage de VS Code. Ensuite, tout se recharge de lui-même dès que le fichier de trace change.

Nécessite VS Code ≥ 1.88, ou Visual Studio 2022 ou 2026 — Community, Professional ou Enterprise — plus un fichier de trace de couverture que votre projet produit déjà. Dans Visual Studio 2022, la couverture intégrée est réservée à Enterprise ; Coverage Studio pour Visual Studio l'affiche aussi sur Community et Professional, à partir du fichier que votre build écrit déjà.

Comparaison

VS Code lui-même et plusieurs extensions gratuites affichent aussi la couverture. Voici ce que la documentation de chacun dit qu’il fait, en septembre 2026 — là où un README ne mentionne pas quelque chose, le tableau le dit au lieu de deviner.

Fucini Coverage StudioVS Code, intégréCoverage GuttersCode Coverage (markis)Gcov Viewer
D’où vient la couverture25 formats de fichiers de trace, plus les rapports de mutation PIT et Strykerune extension de test qui fournit la couverturefichiers lcov et XMLfichiers lcovfichiers .gcda de GCC, via gcov
Lignes non couvertes dans l’éditeur✓✓✓✓, et dans Problems✓
Couverture des branches, par branche✓si l’extension de test la fournitnon décritnon décritnon décrit
MC/DC✓ (Pro)—non décritnon décritnon décrit
Plusieurs fichiers de trace fusionnés, et lequel a couvert chaque ligne✓—plusieurs fichiers pris en chargenon décritnon décrit
Recharge quand le fichier de trace change✓affiche la dernière exécution des tests✓non décritnon décrit
Couverture des différences, seuils et historique✓couverture affichée dans l’éditeur de différencesnon décritnon décritnon décrit
Rapport HTMLgénéré, auto-hébergé—prévisualise un rapport existantnon décritnon décrit
La couverture pour les agents IA : outils de modèle de langage et serveur MCP✓non décritnon décritnon décritnon décrit
Les tests qui ont exécuté une ligne, et les tests concernés par vos modifications✓couverture par test, quand l’extension de test la rapportenon décritnon décritnon décrit
Résultats des tests de mutation dans l’éditeur✓ (PIT, Stryker)non décritnon décritnon décritnon décrit
Un seuil sur le nouveau code✓non décritnon décritnon décritnon décrit
Les mêmes chiffres dans Visual Studio et en ligne de commande✓—non décritnon décritnon décrit

Ce n’est pas l’un ou l’autre avec la vue de VS Code : chaque chargement est aussi publié dans le panneau natif Test Coverage, filtre par test compris. Quelque chose est dépassé ici ? Dites-le sur la page de contact.

Formats pris en charge

FormatFichier type
LCOVlcov.info, *.info
llvm-cov JSONllvm-cov export --format=json
Cobertura XMLcoverage.xml
JaCoCo XMLjacoco.xml
Istanbul / nyccoverage-final.json
SimpleCov (Ruby).resultset.json, coverage.json
Clover XMLclover.xml
OpenCover XMLcoverage.opencover.xml
coverage.py JSONcoverage.json (coverage json)
gcov / gcovr JSONgcov --json-format --stdout, gcovr --json
Go coverage profilecoverage.out
SonarQube generic<coverage version="1"> XML
GNATcoverage XML (Ada)gnatcov coverage --annotate=xml
BullseyeCoverage XMLcovxml output
Visual Studio.coveragexml (dotnet-coverage convert)
Coveralls JSONcoveralls.json
Xcode xccov JSONxcrun xccov view --report --json
Voir toutes les fonctionnalités Guide de l'utilisateur complet