Rendre le coût en fichiers visible, et le réduire sans rien retirer par défaut - #47
Merged
Merged
Conversation
…ar défaut Le compte de fichiers décidait déjà de ce qu'une campagne coûte là où un filtre inspecte chaque ouverture, et il n'était visible nulle part : pour le connaître il fallait aller compter à la main, sur la machine où compter est justement lent — donc jamais. Un réglage existait, documenté, et rien dans la sortie de l'outil n'y menait. Il est maintenant dit passé un seuil, avec le répertoire à exclure, et le diagnostic le porte exécution par exécution. Le modèle de coût a été mesuré avant qu'on en tire quoi que ce soit : une latence fixe injectée sur chaque ouverture sous la sortie donne un total qui suit une ouverture par fichier écrit. Deux conséquences, toutes deux sans contrepartie, donc actives par défaut. Les deux sites d'une exécution sont rendus en même temps — la passe de données doit précéder, puisque le rapport ciblé apprend du XML quelles classes ont tourné, et elle emportait jusqu'ici le site complet, ce qui sérialisait tout : sur l'étape de rendu seule, -27 % à 5 ms par ouverture, -42 % à 20 ms, et rien du tout sans filtre, le démarrage supplémentaire étant exactement payé par le recouvrement. Et le rapport ciblé n'est plus écrit quand toutes les classes analysées ont tourné : il énumérerait alors exactement le complet. Le test est strict et fait sur la couverture seule — une classe jamais entrée, ou un paquet masqué que le CLI ignore et met dans le complet, le désactivent. Ce qui restreint, en revanche, reste hors défaut et porte son prix là où il se propose : la section d'aide sur les machines filtrées commence par l'exclusion, qui ne coûte rien, puis liste chaque réglage avec ce qu'il abandonne. JACOCO_REPORTS gagne minimal, qui lâche aussi le rendu fusionné en gardant son XML et son CSV ; ARCHIVE rassemble runs/ en une archive, et ne remplace l'arborescence qu'après l'avoir vérifiée. Un test tient la section : une valeur ajoutée et oubliée là casse la construction. Le gabarit déclarait lang="fr" en portant de l'anglais depuis l'inversion. Le script le corrigeait au chargement, donc rien ne se voyait — mais le fichier tel qu'il est sur le disque annonçait le français à un lecteur d'écran et au premier rendu. Compter n'est pas gratuit non plus : un parcours ouvre chaque répertoire, 0,63 s sous un filtre à 20 ms. D'où le total pris une seule fois, à la fin, et le diagnostic qui somme les exécutions qu'il vient de compter au lieu de repasser dessus. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J956wjynbd7fkZx4HpjHzP
Beennnn
marked this pull request as ready for review
August 29, 2026 10:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pourquoi
Le nombre de fichiers décide de ce qu'une campagne coûte là où un filtre de sécurité inspecte chaque ouverture — et il n'était visible nulle part. Pour le connaître il fallait aller compter à la main, sur la machine où compter est justement lent : donc jamais. Un réglage qui le réduit existait, documenté, et rien dans la sortie de l'outil n'y menait.
Le modèle de coût a été mesuré avant qu'on en tire quoi que ce soit : une latence fixe injectée sur chaque ouverture sous le répertoire de sortie donne un total qui suit une ouverture par fichier écrit. Le temps payé est donc le nombre de fichiers multiplié par la latence du filtre, et rien d'autre.
Ce qui est fait sans être demandé — parce que ça ne retire rien
diagnostic.jsonle porte exécution par exécution.Mesures, sur l'étape de rendu
Sur l'outil lui-même, lu aux horodatages des fichiers, la phase passe de 4,26 s à 2,45 s à 20 ms (−42 %). Rapporté à une exécution entière : 7,84 s → 7,22 s — le reste d'une exécution paie l'application, les composants et l'assemblage, que rien de ceci ne touche.
Ce qui restreint reste hors défaut, et porte son prix là où il se propose
Une section d'aide dédiée aux machines filtrées commence par l'exclusion de
runs/, qui ne coûte rien, puis liste chaque réglage avec ce qu'il abandonne.FileCostTestla tient : une valeur ajoutée àJACOCO_REPORTSet oubliée là casse la construction.JACOCO_REPORTS=minimal— lâche aussi le rendu fusionné de la campagne, en gardant son XML et son CSV : la figure survit à son rendu.ARCHIVE=keep|replace— rassembleruns/en une archive ;replacene remplace l'arborescence qu'après avoir compté les entrées écrites contre les fichiers parcourus. Ce quereplaceretire est écrit noir sur blanc : les liens de la page vers les sites JaCoCo cessent de résoudre,--report-onlyet--serven'ont plus de quoi reconstruire.Un défaut trouvé en chemin
Le gabarit déclarait
lang="fr"en portant de l'anglais depuis l'inversion. Le script le corrigeait au chargement, donc rien ne se voyait — mais le fichier tel qu'il est sur le disque annonçait le français à un lecteur d'écran et au premier rendu. Corrigé, avec le test qui le garde.Vérifications
minimalpar exécution,minimalsur la fusion,--archive,--archive replace.full,detailed,dataetminimal; 186 → 101 → 9 fichiers par exécution sur l'application d'exemple.🤖 Generated with Claude Code
https://claude.ai/code/session_01J956wjynbd7fkZx4HpjHzP
Generated by Claude Code