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