Автоматическая проверка орфографии локально и в GitHub Actions | Zhbert’s Home
Zhbert's Home
Домашняя страничка Zhbert'а

Автоматическая проверка орфографии локально и в GitHub Actions

Для проверки новой (и существующей) документации на опечатки мы решили прикрутить к сайту спелл-чекер, который бы все это делал автоматически сразу на GitHub в Pull-реквестах.

Решение было найдено случайно, когда я открыл Vim и вспомнил, как настраивал там проверку орфографии.

Как это работает

Подробности можно найти в этом PR.

Суть работы заключается в следующем:

  1. Сам сайт генерируется Jekyll’ом в обычном режиме. Так как некоторая часть генерируется предварительно в других контейнерах и копируется в конечный, это решение позволяет проверять сразу полноценный конечный вариант документации.
  2. Заходим в контейнер и делаем следующее:
    1. Убираем из всех HTML-страниц блоки с кодом (<code></code>);
    2. Очищаем HTML страницы от тегов и получаем plain text;
    3. Немного фиксим ошибки, возникшие в процессе (например, удаляем пустые строки);
    4. Натравливаем hunspell на каждый файл.

В результате получается список терминов, которых нет в словарях (они считаются опечатками).

Для учета слов, которых нет в готовых словарях английского с русского языков (DevOps-термины, например), сгенерен свой словарь терминов, которые постепенно будет наполняться.

Пример выхлопа можно посмотреть тут.

Запускать проверку можно как для всех страниц сразу, так и выборочно для EN или РУ-версии (это отдельные контейнеры).

Updates

  • Добавлена проверка одного конкретного файла, который можно указать в аргументах команды запуска. Подробности в этом PR.
  • Добавлены три команды для выдергивания общего списка опечаток в сортированном виде. Подробности в этом PR.
  • Добавлено управление сборкой через ENV, чтобы образ спеллчекера не собирался при деплое сайта в прод. Подробности в этом PR.
  • Добавлено удаление блоков кода, добавляемых через сниппеты (div с классом snippetcut). Подробности в этом PR.
  • Добавлены (PR):
    • кастомный словарь терминов (заполнен найденными ранее «опечатками», которых нет в базовых словарях), исключая сомнительные термины;
    • добавлена команда для вывода очищенного от HTML-тегов содержимого конкретного файла.
  • Исправлен предыдыдущий: было прибито гвоздями отображение только англ. версии в plain text. PR
  • Небольшой фикс сборки. PR
  • Исправлен порядок сборки: теперь нужные стадии должны кешироваться, а не пересобираться каждый раз. PR
  • Добавлена индикация языка файла для общей проверки. PR
  • Добавлен механизм исключения файлов или каталогов из проверки. PR
  • Добавлена возможность исключать из проверки блоки HTML, выделив их соответствующими коментариями. PR