「misspell」は,Go で実装された typo 検出ライブラリで,手軽に実行できるので,英語のドキュメントに対してよく使っている.例えば,以下のようにワンライナーで "World" の typo を検知することができる.
$ echo 'Hello Worls!' | misspell stdin:1:6: "Worls" is a misspelling of "World"
機能は他にもいろいろある.ディレクトリに対して実行することができたり,オートコレクトができたり,検知した結果を CSV 形式で出力することもできる.また,実際に使うときに必要になる除外リストの指定もできる.もし Go の lint で gometalinter を使っている場合,gometalinter から misspell を呼び出すこともできる.
CircleCI + misspell
今回紹介したいのは,CircleCI と misspell の組み合わせで,GitHub のリポジトリに対して misspell を実行することで,ドキュメントとコードの typo 検出を CI することができる.すごく便利で,個人的なリポジトリで使っている.既に Docker Hub にイメージが公開されているので,CircleCI の設定 .circleci/config.yml
も簡単で,以下のように書ける.ポイントは -error
オプションで,これを付けないと,エラーが出てもリターンコードが 0 になってしまう.
version: 2 jobs: misspell: docker: - image: nickg/misspell steps: - checkout - run: misspell -error . workflows: version: 2 ci: jobs: - misspell
以下に,サンプルでリポジトリを作った.README.md
と main.go
にある "World" の typo を検知している.
README.md:3:6: "Worls" is a misspelling of "World" main.go:6:19: "worls" is a misspelling of "world" Exited with code 2
まとめ
CircleCI + misspell の組み合わせを活用して,自動的に検知できる typo は減らしていきましょ!