Couverture de lignes — la mesure de référence
La « couverture de lignes de ~95 % » du badge du README, du tableau CI (intégration continue) du README, des pages d'accueil de crates.io et de PyPI (Python Package Index), de la page de couverture de lignes de kshana.dev et du rapport technique est cette mesure, arrondie au pourcentage entier le plus proche. tests/coverage_figure_doc_sync.rs échoue si l'une de ces six surfaces indique un chiffre différent de celui enregistré ci-dessous, de sorte que la prochaine nouvelle mesure les déplace toutes ensemble ou aucune.
| Mesuré | 95.35 % — 55 970 lignes sur 58 697 |
| Commit | db796dd (moteur 0.29.0, l'étiquette v0.29.0) |
| Exécuter | GitHub Actions, ci.yml job coverage, exécution 36809850252, 2026-10-01 |
| Outil | cargo tarpaulin --engine llvm (instrumentation LLVM fondée sur le code source) |
| Portée | src/, à l'exclusion des tables de données générées src/*_data.rs et du point d'entrée mince de l'interface en ligne de commande (CLI) src/main.rs ; tests/ et web/ ne sont pas mesurés |
| Artefact | coverage-lcov (lcov.info, 290 fichiers sources) joint à cette exécution |
| Plancher | le même job échoue en dessous de 85 % (--fail-under 85) — le plancher est appliqué à chaque push ; le chiffre ci-dessus est un relevé, non une barrière |
La commande, telle quelle dans .github/workflows/ci.yml :
cargo tarpaulin --engine llvm --out Lcov --output-dir coverage \
--exclude-files 'src/*_data.rs' --exclude-files 'src/main.rs' \
--exclude-files 'tests/*' --exclude-files 'web/*' \
--timeout 3600 --fail-under 85
Re-measuring#
Chaque push vers main relance le job et joint un nouveau lcov.info. Pour faire évoluer le chiffre publié, téléchargez l'artefact d'une exécution réussie et additionnez-le :
gh run download <run-id> -n coverage-lcov -D /tmp/cov
awk -F: '/^LF:/{f+=$2} /^LH:/{h+=$2} END{printf "%.2f%% (%d/%d)\n", 100*h/f, h, f}' /tmp/cov/lcov.info
puis mettez à jour le tableau ci-dessus et les six surfaces dans le même commit ; le test de synchronisation de la documentation nomme celles que vous oubliez.
Historique#
Le chiffre a été remesuré, non retapé : 95,63 % sur le commit b1d350d (moteur 0.27.2 + non publié, exécution 35934579709, 2026-09-24, 37 697 lignes sur 39 419, publié comme ~96 %), révisé à 95,35 % sur 0.29.0 (ci-dessus), qui s'arrondit à ~95 % : le code a grossi de 19 278 lignes mesurées et les nouvelles lignes sont un peu moins couvertes que les anciennes ; 95,85 % à v0.17.0 (commit 1daa012, 2026-06-14, publié comme ~96 %), et ~97 % dans deux notes de version antérieures (CHANGELOG.md, laissées comme historique). paper/kshana-technical-report.md disait « près de 97 % » jusqu'à ce qu'il soit aligné sur ce relevé ; c'est désormais la sixième surface que le test fige.