🔡

Typo(スペルミス)を自動で検知する

2023/06/21に公開

転職するたびにSpell Checkの仕組みを導入しています。
今回は最新版を紹介します。

エディタの拡張機能による開発時のチェック、Git HooksによるCommit時のチェック、GitHub ActionsによるPush時(PR上)のチェックと抜かりないようにしています。

過去の記事

第1弾

https://qiita.com/naro143/items/009af8897643fe990db8

第2弾

https://tech.youtrust.co.jp/entry/fix-typo

導入方法

開発時のチェック

Visual Studio Codeの拡張機能「Code Spell Checker」をインストールして完了です。

https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker

デモ

Commit時のチェック

pre-commit フレームワークを利用しています。
https://pre-commit.com/

pre-commit をインストールします。

brew install pre-commit

プロジェクトのルートに.pre-commit-config.yamlを配置します。

.pre-commit-config.yaml
repos:
  - repo: https://github.com/streetsidesoftware/cspell-cli
    rev: v6.31.0
    hooks:
      - id: cspell

git hook scriptをインストールして完了です。

pre-commit install

デモ

Push時のチェック

プロジェクトの.github/workflowsspell-check.yamlを配置して完了です。
CIがFailになるため、Mergeを防ぐこともできます。

spell-check.yaml
name: Spell Check
on:
  push:

jobs:
  spell-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: streetsidesoftware/cspell-action@v2

デモ

設定

プロジェクトのルートにcspell.config.yamlを配置します。

cspell.config.yaml
$schema: https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json
version: "0.2"
language: en
dictionaryDefinitions:
  - name: project-words
    path: ./project-words.txt
    addWords: true
dictionaries:
  - bash
  - filetypes
  - markdown
  - softwareTerms
  - networking-terms
  - project-words
ignorePaths:
  - .gitignore
  - .vscode
  - log
  - project-words.txt

dictionariesの一覧はここから見れます。
https://cspell.org/docs/dictionaries/

White List

プロジェクトのルートにproject-words.txtを配置します。
記載した単語は検知されなくなります。
コメントも記載できます。

project-words.txt
hoge # TODO:
fuga # FIXME:

ポイント

エディタの拡張機能による開発時のチェック、Git HooksによるCommit時のチェック、GitHub ActionsによるPush時(PR上)のチェックの全てをCSpellで統一しているので、共通の設定が利用でき、同じ検知内容となります。

また、導入が楽になるようにしました。
(今までは出力の丁寧さからRust製のtyposを利用していましたが、Rustのインストールが必要など導入に一手間が必要でした。)

おわりに

正しい英語を利用することは、高いソフトウェア品質の第一歩だと考えています。
仕組みで解決できるので、ぜひ導入してみてください🙌

Discussion