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.
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.
Screenshot pending — add assets/img/hero.png (see SCREENSHOTS.md).Quand cʼest une IA qui a écrit les tests
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.
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.
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.
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
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.
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.
Modified Condition/Decision Coverage, couverture des régions et des instanciations C++ depuis llvm-cov, avec détail par décision au survol.
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.
Verdicts COMPLIANT / NON-COMPLIANT avec seuils par métrique et modes strict, whm, both ou either.
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.
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.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à.
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 Studio | VS Code, intégré | Coverage Gutters | Code Coverage (markis) | Gcov Viewer | |
|---|---|---|---|---|---|
| D’où vient la couverture | 25 formats de fichiers de trace, plus les rapports de mutation PIT et Stryker | une extension de test qui fournit la couverture | fichiers lcov et XML | fichiers lcov | fichiers .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 fournit | non décrit | non décrit | non décrit |
| MC/DC | ✓ (Pro) | — | non décrit | non décrit | non décrit |
| Plusieurs fichiers de trace fusionnés, et lequel a couvert chaque ligne | ✓ | — | plusieurs fichiers pris en charge | non décrit | non décrit |
| Recharge quand le fichier de trace change | ✓ | affiche la dernière exécution des tests | ✓ | non décrit | non décrit |
| Couverture des différences, seuils et historique | ✓ | couverture affichée dans l’éditeur de différences | non décrit | non décrit | non décrit |
| Rapport HTML | généré, auto-hébergé | — | prévisualise un rapport existant | non décrit | non décrit |
| La couverture pour les agents IA : outils de modèle de langage et serveur MCP | ✓ | non décrit | non décrit | non décrit | non 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 rapporte | non décrit | non décrit | non décrit |
| Résultats des tests de mutation dans l’éditeur | ✓ (PIT, Stryker) | non décrit | non décrit | non décrit | non décrit |
| Un seuil sur le nouveau code | ✓ | non décrit | non décrit | non décrit | non décrit |
| Les mêmes chiffres dans Visual Studio et en ligne de commande | ✓ | — | non décrit | non décrit | non 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.
| Format | Fichier type |
|---|---|
| LCOV | lcov.info, *.info |
| llvm-cov JSON | llvm-cov export --format=json |
| Cobertura XML | coverage.xml |
| JaCoCo XML | jacoco.xml |
| Istanbul / nyc | coverage-final.json |
| SimpleCov (Ruby) | .resultset.json, coverage.json |
| Clover XML | clover.xml |
| OpenCover XML | coverage.opencover.xml |
| coverage.py JSON | coverage.json (coverage json) |
| gcov / gcovr JSON | gcov --json-format --stdout, gcovr --json |
| Go coverage profile | coverage.out |
| SonarQube generic | <coverage version="1"> XML |
| GNATcoverage XML (Ada) | gnatcov coverage --annotate=xml |
| BullseyeCoverage XML | covxml output |
| Visual Studio | .coveragexml (dotnet-coverage convert) |
| Coveralls JSON | coveralls.json |
| Xcode xccov JSON | xcrun xccov view --report --json |