Résolution des rapports pology check_rules

Côme Allart come.allart at netc.fr
Dim 30 Aou 18:52:20 BST 2026


Bonjour,

TL;DR : J'aimerais résoudre les rapports de pology règle par règle, par 
nombre d'occurrences décroissant.
La première règle (remplacer les accents graves / guillemets arrières ` 
par des guillemets «») ne me semble pas pertinente car elle me semble 
n'avoir que des faux positifs (1728 rapports dans 203 fichiers).
La seconde remplace « boite » par « boîte », j'aimerais savoir si ça 
vous irait que j'effectue le remplacement dans tous les fichiers (1261 
rapports dans 271 fichiers).

--- Version longue ---

J'ai commencé à regarder les règles pology sur l'ensemble des fichiers 
(commande nushell ci-dessous)

let checks = glob **/*.po | path relative-to ('.' | path expand) | 
par-each {
   { path: $in, result: (python3 ../pology/scripts/posieve.py -b 
check_rules $in | complete) }
}

J'ai un fichier qui a une erreur, je vais donc l'ignorer pour la suite

$checks|whereresult.exit_code!=0orresult.stderr!=""
╭──────────────────path──────────────────┬───────────────────────────────────────result───────────────────────────────────────╮
│ websites-hugo-kde/hugo-kde._static_.po │ 
╭───────────┬────────────────────────────────────────────────────────────────────╮ 
│
│                                        │ │ stdout   │ 
                                                                    │ │
│                                        │ │ stderr   │ posieve.py: 
[error] There are no internal rules for language 'en'. │ │
│                                        │ │           │ 
                                                                    │ │
│                                        │ │ exit_code│ 1 
                                                                  │ │
│                                        │ 
╰───────────┴────────────────────────────────────────────────────────────────────╯ 
│
╰──────────────────path──────────────────┴───────────────────────────────────────result───────────────────────────────────────╯


Je me suis dit qu'il serait intéressant de :

  * regrouper les résultats par règle (group-by rule ci-dessous)
  * regarder en priorité les règles qui produisent le plus de rapports
    (sort-by { $in.items | length })
  * nous mettre d'accord sur l'action à effectuer
  * faire la modification sur l'ensemble des fichiers
  * relire les résultats
  * recommencer avec la règle suivante

Donc j'ai bricolé une commande pour parser la sortie des "checks", 
regrouper par règle et prioriser

$checks | where result.exit_code == 0 and result.stderr == "" | get 
result.stdout
| par-each {
   lines | split list "----------------------------------------" | skip 
| drop
   | each {
     {
       raw: ($in | str join "\n")
       ...($in.0 | parse "{file}:{line}(#{nr})" | get 0 | into int line nr)
       sources: ($in | where $it starts-with "#:" | each {
         split row " " | skip
         | each {
           if $in =~ ':\d+$' {
             let split = $in | split row :
             { file: ($split | drop | str join :), line: ($split | last 
| into int) }
           } else {
             { file: $in }
           }
         }
       } | flatten)
       rule: ($in | last)
     }
   }
} | flatten
| reject raw
| group-by rule --to-table --prune | sort-by { $in.items | length }
| save ../pology.yaml

(Je peux envoyer les résultats au format que vous voulez si vous voulez 
vous plonger un peu dans les données. Je ne les mets pas ici, c'est un 
peu gros.)

La règle qui produit le plus de rapports est :

open../pology.yaml|last|{ rule: $in.rule, reports: ($in.items|length), 
files: ($in.items.file|uniq|length)}
╭─────────┬──────────────────────────────────────────────────────────────────────────────────────────────────╮
│ rule   │ [note] rule [pattern=`] ==> Utiliser de vrais guillemets, au 
lieu d'une apostrophe (homogénéité) │
│ reports│ 1728 
                                                                                             │
│ files  │ 203 
                                                                                              │
╰─────────┴──────────────────────────────────────────────────────────────────────────────────────────────────╯

Cependant, en parcourant les fichiers, je vois beaucoup de 
faux-positifs, parce que les fichiers sources sont en Markdown ou en 
ReStructuredText.
Si je les enlève, il ne reste plus grand chose

open../pology.yaml|last|getitems|where{ getsources.0?.file|path 
parse|getextension|$innot-in[rstmd]}
╭────────────────────file─────────────────────┬─line──┬──nr──┬───────────────────sources───────────────────╮
│ klevernotes/org.kde.klevernotes.metainfo.po │   334 │   53 │ 
╭───────────────file───────────────┬─line─╮ │
│                                             │       │      │ │ 
org.kde.klevernotes.metainfo.xml │  164 │ │
│                                             │       │      │ 
╰───────────────file───────────────┴─line─╯ │
│ klevernotes/org.kde.klevernotes.metainfo.po │   352 │   56 │ 
╭───────────────file───────────────┬─line─╮ │
│                                             │       │      │ │ 
org.kde.klevernotes.metainfo.xml │  173 │ │
│                                             │       │      │ 
╰───────────────file───────────────┴─line─╯ │
│ kile/kile.po                                │  6412 │  948 │ 
╭────────file─────────┬─line─╮              │
│                                             │       │      │ │ 
editorextension.cpp │   60 │              │
│                                             │       │      │ 
╰────────file─────────┴─line─╯              │
│ kile/kile.po                                │  6424 │  950 │ 
╭────────file─────────┬─line─╮              │
│                                             │       │      │ │ 
editorextension.cpp │   62 │              │
│                                             │       │      │ 
╰────────file─────────┴─line─╯              │
│ ghostwriter/ghostwriter_qt.po               │  1158 │  177 │ 
╭────────file────────┬─line─╮               │
│                                             │       │      │ │ 
src/mainwindow.cpp │ 1285 │               │
│                                             │       │      │ 
╰────────file────────┴─line─╯               │
│ ghostwriter/ghostwriter_qt.po               │  1164 │  178 │ 
╭────────file────────┬─line─╮               │
│                                             │       │      │ │ 
src/mainwindow.cpp │ 1286 │               │
│                                             │       │      │ 
╰────────file────────┴─line─╯               │
│ kstars/kstars.po                            │ 55353 │ 6693 │ 
╭────file─────┬─line─╮                      │
│                                             │       │      │ │ 
kstars.kcfg │ 4043 │                      │
│                                             │       │      │ 
╰────file─────┴─line─╯                      │
╰────────────────────file─────────────────────┴─line──┴──nr──┴───────────────────sources───────────────────╯

En regardant les fichiers en question, il me semble qu'encore une fois 
il n'y a que des faux positifs pour cette règle. Devrions-nous la 
supprimer ?

La règle suivante me semble plus pertinente :

open../pology.yaml|drop|last|{ rule: $in.rule, reports: 
($in.items|length), files: ($in.items.file|uniq|length)}
╭─────────┬───────────────────────────────────────────────────────────────────────────────────╮
│ rule   │ [note] rule [pattern=\bboites?\b] ==> boite => boîte (avec un 
accent circonflexe) │
│ reports│ 1261 
                                                                              │
│ files  │ 271 
                                                                               │
╰─────────┴───────────────────────────────────────────────────────────────────────────────────╯

Est-ce que ça vous va si je l'applique dans tous les fichiers ?
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://mail.kde.org/pipermail/kde-francophone/attachments/20260830/5a097e79/attachment-0001.htm>


Plus d'informations sur la liste de diffusion kde-francophone