バフェット・コードのブログ

企業分析やプロダクト開発にまつわる記事を配信中

typosでtypoを見つけよう

こんにちは。バフェットコード開発部のkosappiです。

唐突ですが、コンガとボンゴの区別がつく方はいらっしゃいますか?わかるよ〜!という方も、そうでない方も、ぜひブログをお読みください。(最後に正解があります!)

typosでtypoを見つけよう

typosとは何か

typosはタイポを見つけてくれます。本家では Source code spell checker と書かれています。

crate-ci/typos

人間が書いた成果物には、多かれ少なかれ必ずミスが含まれるものです。typosを使ってタイポを見つけて、大事なブランチにスペルミスがコミットされないようにしましょう。

typosのインストール

ひとまず macOS にインストールしましょう。

brew install typos-cli

なお、Github Actions では下記のように crate-ci/typos@VERSION で実行できます。(便利!)

jobs:
  spelling:
    name: Spell Check with Typos
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v4
    - name: run typos
      uses: crate-ci/typos@v1.33.1

typosの使いかた

動作確認のために下記のような Ruby ファイルを用意しました。

def sample_method
  hash = { anouncement: 'My brother plays tennis very well.' ,
           transfered: 'I have no money.' }
  return hash
end

ここで typos を実行すると、下記のようにスペルミスを指摘してくれます。

$ typos .
error: `anouncement` should be `announcement`
  --> ./typos_sample.rb:2:12
  |
2 |   hash = { anouncement: 'My brother plays tennis very well.' ,
  |            ^^^^^^^^^^^
  |
error: `transfered` should be `transferred`
  --> ./typos_sample.rb:3:12
  |
3 |            transfered: 'I have no money.' }
  |            ^^^^^^^^^^
  |

実行時に修正をするオプションもあります。この場合、特にエラーを出さずに修正します。

$ typos -w

他にもいろいろと便利なオプションがあります。

crate-ci/typos

バフェットコードでの typos の運用

バフェットコードでは typos が各 Pull Request の Github Actions で実行されます。

また、typos に指摘されつつも様々な事情で修正できなかったスペルミスを下記のような感じで _typos.toml に書いています。(こちらはサンプルなので単語は伏せています)これで普段の typos 実行時にはスペルミスを無視してくれるようになります。

[default]
extend-ignore-identifiers-re = [
  # TODO: あとで対応する
  "word1",
  "word2",
  "word3",

  # TODO: DB側の対応が必要
  "word4", 
  "word5",
  "word6",

  # TODO: 外部サービスの修正が必要
  "word7",
]

隙を見つけてこういったTODOを消化しつつ、Github Actions では新しいスペルミスに気付くことができる、といった運用になっています。

最後に

いかがでしたか?

昔から保守してきたソースコードを一度typosに預けてみてはどうでしょう?きっと楽しいと思います。

なお、冒頭のクイズの正解ですが、大きいのがコンガ、小さいのがボンゴ、です。どちらもキューバ生まれなので、ややこしいですね!

宣伝

バフェットコードでは、便利なツールを開発環境に導入して、コードの品質を上げてくれるエンジニアを探しています!

一緒にナイスなサービスを作りましょう💪

career.buffett-code.com