Bibliothèque / SDK
coveragepy/coveragepy avatar
coveragepy/coveragepy

Coverage.py : l'outil de mesure de couverture historique de Python

L'outil de couverture de code pour Python. Il utilise les outils d'analyse de code et les hooks de traçage fournis dans la bibliothèque standard Python pour déterminer quelles lignes sont exécutables et lesquelles ont été exécutées.

3 412 étoiles523 forksPythonApache-2.0

En bref

De quoi s’agit-il ?
Outil de référence Apache 2.0 qui s'appuie sur les hooks de traçage de la bibliothèque standard pour dire quelles lignes s'exécutent ; Python 3.10 à 3.15, free-threading et PyPy3 compris, avec un sillon entreprise Tidelift.
À qui s’adresse-t-il ?
Coverage.py concerne tout projet Python qui veut savoir quelles lignes ses tests touchent, du script isolé au monorepo avec intégration continue ; le sillon Tidelift vise les organisations qui veulent un contact de sécurité coordonné. Il ne concerne ni les autres langages, ni qui cherche un outil de mutation ou de vérification sémantique des tests : la couverture de lignes ne prouve pas la qualité des assertions.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Dire quelles lignes s'exécutent, avec la bibliothèque standard

Coverage.py se décrit simplement : un outil de mesure de couverture de code pour Python, typiquement pendant l'exécution des tests. Sa particularité d'architecture tient en une phrase du README : il utilise les outils d'analyse de code et les hooks de traçage fournis par la bibliothèque standard pour déterminer quelles lignes sont exécutables et lesquelles ont été exécutées. Pas de réécriture du bytecode à la manière d'un instrumenteur externe, donc, mais un appui sur les mécanismes officiels de l'interpréteur. Le projet vit sous Apache 2.0, les détails de mention revenant au fichier NOTICE.txt du dépôt, et s'installe depuis PyPI sous le nom de paquet coverage. Avec 3 406 étoiles et 519 forks, il fait figure d'institution discrète, le genre d'outil que la moitié de l'écosystème Python emploie sans jamais l'ouvrir.

Python 3.10 à 3.15 rc1, free-threading et PyPy3 compris

La matrice de support annonce Python 3.10 à 3.15 rc1, free-threading inclus, ainsi que PyPy3 versions 3.10 et 3.11. La mention du free-threading mérite qu'on s'y arrête : les builds de Python sans GIL changent profondément le comportement des hooks de traçage, et un outil de couverture qui déclare ce support en clair épargne aux équipes migratrices une inconnue de taille. Le support de PyPy distingue aussi l'outil des mesureurs liés à CPython. Pour une équipe qui gère un parc hétérogène, ces deux lignes du README tranchent une question d'adoption que beaucoup d'outils laissent dans le flou, à savoir sur quels interpréteurs la mesure reste fidèle.

Metacov : l'outil qui se mesure avec ses propres instruments

Le dépôt porte un badge metacov qui pointe vers coveragepy.github.io/metacov-reports/latest.html, les rapports de couverture du projet lui-même. La démarche a une valeur d'argument : un mesureur de couverture qui publie sa propre méta-couverture expose la qualité de sa suite de tests sans passer par des déclarations. Le dépôt affiche en outre deux workflows GitHub, testsuite.yml pour la suite de tests et quality.yml pour les vérifications de qualité, dont les badges ornent le README. Cette transparence outillée rejoint la page d'historique des changements tenue dans la documentation, où chaque version liste ses évolutions, pratique précieuse pour anticiper l'effet d'une montée de version dans une chaîne d'intégration.

Un rythme de maintenance soutenu en août 2026

Les releases récentes donnent la mesure de l'activité : 7.15.3 le 2 août 2026, 7.15.4 le 6 août, puis 7.16.0 le 28 août, trois parutions en moins d'un mois qui mêlent correctifs et montée de version mineure. Le suivi tient aussi par ailleurs : dépôt poussé le jour de la dernière release, 307 tickets ouverts qui dessinent un flux de retours constant, documentation sur Read the Docs, code et suivi des incidents sur GitHub. Le projet adhère au code de conduite de la communauté Python, détail qui renseigne sur la gouvernance. Pour un outil aussi central dans les chaînes de qualité, cette régularité pèse davantage que les étoiles : la question n'est pas de savoir si le projet vit, mais à quel rythme ses interfaces bougent.

Le sillon entreprise de Tidelift, sécurité comprise

Le README consacre une section aux organisations : coverage.py fait partie de l'abonnement Tidelift, qui regroupe des milliers de paquets open source sous un contrat unique à vocation entreprise. Le même canal porte le volet sécurité, les vulnérabilités se signalant par le contact de sécurité Tidelift, qui coordonne la correction et la divulgation. Ce dispositif répond à une question que la licence Apache 2.0 ne règle pas : qui intervient quand une faille touche un maillon de la chaîne de build. Une équipe open source classique continuera de passer par le traqueur GitHub ; une organisation soumise à des obligations de conformité y trouvera un interlocuteur identifié et un calendrier de support contractuel.

Le README renvoie à la doc, et il a raison

Particularité remarquable, ce README ne contient aucune commande d'installation ni d'exemple d'appel : il renvoie à la section Quick Start de la documentation Read the Docs pour qui veut lancer coverage sur sa suite de tests, et à une section Contributing dédiée pour les contributions. Le choix tranche avec la mode des README encyclopédiques : le dépôt tient la vitrine, la documentation vivante porte l'usage. Pour évaluer l'outil, le parcours correct consiste donc à ouvrir coverage.readthedocs.io plutôt que le code source, la page d'historique des changements donnant la chronologie fine des versions. Le badge PyPI confirme au passage que le paquet publié s'appelle bien coverage, détail qui égare parfois les nouveaux venus qui cherchent un paquet nommé coveragepy.

Conclusion éditoriale

Coverage.py concerne tout projet Python qui veut savoir quelles lignes ses tests touchent, du script isolé au monorepo avec intégration continue ; le sillon Tidelift vise les organisations qui veulent un contact de sécurité coordonné. Il ne concerne ni les autres langages, ni qui cherche un outil de mutation ou de vérification sémantique des tests : la couverture de lignes ne prouve pas la qualité des assertions. Avant de l'intégrer, installez le paquet coverage depuis PyPI dans un environnement isolé, appliquez la section Quick Start de coverage.readthedocs.io à votre suite de tests, puis comparez le rapport obtenu avec les rapports metacov publiés par le projet lui-même pour situer votre usage.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté