Je veux rajouter une vérification orthographique pour la publication de posts du blog. Le but ici est d’avoir des mots bien écrits ( 🙄 ) mais également une étape similaire à un lint pour le code.

Vérification orthographique

Pour cela les critères sont :

  • vérification du français
  • donc sensible à l’UTF-8 (pour les accents)
  • non-interactif
  • possibilité d’ajout de dictionnaire perso (les mots ‘homelab’, ‘LAN’ seront toujours KO en français …)

Sous Ubuntu, j’ai regardé aspell, ispell, spell. Les deux premiers sont interactifs sans mode auto et spell bug sur les accents.

Pour le travail initial, j’ai d’abord utilisé spell afin de sortir tout ce qui est “mauvais”. J’ai ensuite trié tout ce qui sort, pour garder que les mots ‘acceptables’ ( ‘homelab’, ‘LAN’, ‘boilerplate’).

Avec ce contenu je créé blog-dict.fr.pws que j’utilise avec aspell ainsi :

aspell --master fr --personal ./blog-dict.fr.pws check <filename>

Le tri restant ( corrections de français et nouveaux mots à ajouter ) est réalisé de manière interactive, alimentant le dictionnaire personnel au besoin.

On découvre quand même des choses intéressantes. Par exemple, implémentation est un anglicisme spécifique à l’informatique, et unitairement et fonctionnellement sont inconnus !

Les commandes interactives d’ aspell sont assez simples:

  • i pour ignorer
  • a pour ajouter le mot au dictionnaire personnel
  • et le numéro pour remplacer (souvent le 1)

Sur les premiers articles on va trouver de quoi alimenter le dictionnaire perso, mais à terme il faudrait une vérification automatique. De plus un fonctionnement proche du lint nous permettrait d’intégrer cela dans la chaîne de CI/CD, afin de bloquer la publication en cas de faute d’orthographe.

Pour cela, on va arrêter d’ utiliser le mode check pour passer au mode list.

aspell --master fr --personal ./blog-dict.fr.pws list < <filename>

On a en sortie la liste de mots du texte qui sont ‘mauvais’. J’ai juste un souci : la correction est ’trop’ poussée, par exemple pour cette article les mots sh, master, fr, personal, list et filename ressortent. Ils sont tous dans la ligne de commande précédente.

Heureusement pour cela nous pouvons utiliser le filtre Markdown, via --mode=markdown. Ainsi ce qui entre backticks (``) ne sera pas traité.

Fiabilisation

J’écris le script test_spelling.sh pour pouvoir fiabiliser le travail de vérification orthographique.

Ce script sera appelé via deux modes : le mode liste qui affichera les mots qui posent problèmes et le mode check (le mode normal) pour la correction habituelle.

On travaille le code retour de l’execution afin d’avoir un “fail” si des mots apparaissent en mode liste (signifiant qu’il reste des erreurs non vérifiées).

Tests

Le script test_spelling.sh est intégré à la CI/CD du blog. On fera l’appel au test comme étape de la CI.

Le test est logique : on ne veut pas d’un article avec des fautes d’orthographe, tout comme on ne voudrait pas de code avec des fautes de syntaxe.

Pour cela, je modifie le job qui récupère le nouveau .html à tester pour intégrer le nom de fichier .md et pas seulement le .html.

Ensuite via le job check-spelling, on appelle test_spelling.sh en mode liste. Sur une erreur on arrêtera le processus de MR.