kakakakakku blog

Weekly Tech Blog: Keep on Learning!

CircleCI + misspell で typo の検出を CI する

「misspell」は,Go で実装された typo 検出ライブラリで,手軽に実行できるので,英語のドキュメントに対してよく使っている.例えば,以下のようにワンライナーで "World" の typo を検知することができる.

$ echo 'Hello Worls!' | misspell
stdin:1:6: "Worls" is a misspelling of "World"

機能は他にもいろいろある.ディレクトリに対して実行することができたり,オートコレクトができたり,検知した結果を CSV 形式で出力することもできる.また,実際に使うときに必要になる除外リストの指定もできる.もし Go の lint で gometalinter を使っている場合,gometalinter から misspell を呼び出すこともできる.

github.com

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.mdmain.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

github.com

f:id:kakku22:20180803085334p:plain

まとめ

CircleCI + misspell の組み合わせを活用して,自動的に検知できる typo は減らしていきましょ!