さて、ひとめで以下のおかしな点がわかるでしょうか?
Fix a false positive for
Layout/ClosingParenthesisIndentation
when using keyword arguemnts.
正解例を少し先送りして、これは typo が含まれているテキストでした。私自身の typo 実例からでしたが、世の中には typo が溢れており、普段開発している膨大な量のテキストからひとつひとつの typo を見つけるのはそれなりに困難です。
それでは、正解例を見てみるのにツールを使ってみましょう。
% misspell a.txt a.txt:1:83: "arguemnts" is a misspelling of "arguments"
このように typo 検出に役立つツールとしてスペルチェッカーがあります。私がリポジトリに対して度々使うスペルチェッカーはふたつあります。
ひとつめは正解例で使った Go 製の misspell です。Go のインストールが必要です。
そしてふたつめは Python 製の codespell です。Python のインストールが必要です。
こちらの codespell を使うと以下のような結果になります。
% codespell a.txt a.txt:1: arguemnts ==> arguments
詳しくはそれぞれの公式サイトを参照となるのですが、テキスト規模が大きくなると検出できる対象が違ったりするので、重ね掛けをして typo のあぶり出しをすることでより効果的な typo 検出をすることができます。
Rails アプリケーションでの例を挙げると、スペルチェッカーの実行で以下の typo 起因のバグが検出されて、before_action
が実行されていないアクションがあったことが判明したケースがあります。
-before_action :do_something, only: %i(edit confirm updae) +before_action :do_something, only: %i(edit confirm update)
静的解析で見つけられれば良いですが、そのような検出機構がない場合にスペルチェッカーの方で検出できたという興味深い (?) ケースでした。
スペルチェッカーの良いところは、個人の開発環境から導入を開始することができる点にもあります。その先のアドバンスドとしては、Rails が GitHub Actions で行っているように CI での typo 検出をしておくと、リポジトリの master (main) ブランチに含まれる前に typo 検出をすることができるのでチーム開発としても便利です。
そのほかにも Git Hooks に引っ掛けたりと、コマンドラインツールということで自動化に向けたいろいろな応用が効くでしょう。
今回取り上げたスペルチェッカーは英文に対するチェックになりますが、仮にお仕事の開発が日本語でのコミュニケーションだとしても、プログラムの変数名やメソッド名などは英単語主体になります。実プロジェクトの開発に組み込むことで、きっと typo を減らせるきっかけになるでしょう。
今日はここまでです。では、Happy Hacking!
「情報化技術を通じて社会と共生する」株式会社永和システムマネジメント アジャイル事業部では、エンジニアを絶賛募集しています。応募エントリお待ちしております!