Codespell, de Lucas De Marchi, est un de ces petits utilitaires qui ne paie pas de mine, mais ô combien pratique ! Il vérifie les fautes d'orthographe courantes dans le code et les fichiers en relation (genre un README ou un CHANGELOG). Il n'a rien d'extraordinaire en soi, mais il permet de faire les choses correctement.

codespell

Dans les exemples ci-dessus, vous pouvez voir que qu'il y trois erreurs le module MSS... Mais aussi qu'il y a des erreurs dans le code officiel de Python 2.7.5 (personne n'est parfait) ! D'ailleurs, pour ceux et celles qui souhaitent participer à un projet open-source, c'est un excellent moyen pour se mettre dans le bain : proposer des patches qui corrigent les fautes d'orthographe.


Les options

Si les couleurs vous dérangent, passez l'option --disable-colors. Et si les statistiques vous bottent, l'option --summary permet de savoir combien de corrections ont été appliquées.

Pour ne pas faire de recherches dans certains fichiers, utiisez l'option -S SKIP, dont les valeurs sont séparées par une virgule :

$ codespell -S .pyc,.txt

# Avec joker
$ codespell -S "*.pyc,.git,*backup*"

Bien évidemment, il est possible d'utiliser son propre dictionnaire à l'aide de l'option -D FICHIER, dont chaque ligne devra être telle que :

# mot erroné -> mot correct
aberation -> aberration

# mot erroné -> mot_correct, autre mot possible,
coorperation -> cooperation, corporation,

# mot erroné -> mot correct, explication
# Ceci aura pour effet de ne pas appliquer automatiquement les changements.
# Pratique pour les mots à double sens, réservés ou à tendance "faux positif".
cmo -> com, disabled due to lots of false positives

Il existe même un mode intéractif ! C'est l'option -I VALEUR qui s'en charge. Elle n'est utilisable qu'avec l'option --write-changes, qui applique directement les changements sur les fichiers. Les valeurs possibles sont :

0 : aucune intéractivité, le comportement par défaut
1 : demander une confirmation avant chaque modification
2 : permet de choisir un mot parmis la liste, si choix il y a
3 : options 1 et 2

Enfin, pour gérer facilement les messages en sortie, l'option -q NIVEAU permet d'affiner tout ça :

 0 : tout est affiché, valeur par défaut
 1 : pas d'averto en cas d'erreur d'encodage
 2 : pas d'averto pour les fichiers binaires
 4 : pas d'averto lors de non modification (explication dans le dictionnaire)
 8 : ne rien afficher en mode non-automatique
16 : ne pas afficher les fichiers corrigés

Bonus : un alias qui va bien pour votre .bashrc (ou mieux, .zshrc) :

alias codespell='/opt/codespell/codespell.py'

3615 ma vie

Pour la petite histoire, j'ai découvert cet outil grâce à la dépêche Noyau : Sortie de Linux 3.12 sur LinuxFr.org. De fil en aiguille, j'en suis arrivé à décortiquer un pull-request de Ted Ts'o dans lequel j'ai pu lire :

ext4: Fix misspellings using 'codespell' tool

Du coup, je vous le donne en mille : le commit pour MSS, super original...