【VS Code】cSpell でスペルチェックの例外を設定する方法
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Code Spell Checker
VS Code に Code Spell Checker という拡張機能があります。
これは cSpell を用いてファイル内のスペルミスを検知する機能を提供する拡張機能です。
名前: Code Spell Checker
ID: streetsidesoftware.code-spell-checker
説明: Spelling checker for source code
パブリッシャー: Street Side Software
VS Marketplace リンク: https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker
一般的な英単語や有名な固有名詞などはデフォルトの辞書に含まれており、ドキュメントやコード内の typo を指摘してくれるのですが、デフォルトの辞書に含まれていないワードは、自前で辞書に登録する必要があります。
たとえば Zenn といった固有名詞は指摘されるため、指摘を回避するためには辞書に登録する必要があります。

このとき、settings.json にユーザー辞書が以下のように設定されます。
"cSpell.userWords": [
"Zenn"
]
このように単語をどんどん追加していくことで、スペルチェックの精度を上げていくことができます。
ただ、現実的にはチェック不要なワードにもスペルチェックが動いてしまい、煩わしく感じる場合があると思います。
今回はそのようなケースに遭遇した際に、スペルチェックを行わないように設定する方法を紹介します。
例: Route 53 ホストゾーン ID
たとえば Route 53 のホストゾーン ID ZCMAN24PZ365DEVIO がドキュメント内に記述されているとします。
ホストゾーン ID は先頭が Z から始まり、大文字アルファベットと数字から構成され、最大32文字の文字列と決まっています。
また cSpell は 4文字以上のワードについてチェックするのと、スペース以外にも数字や記号も区切り文字として扱うため、上記の例では1つの ID 内で2箇所も指摘されてしまいます。

それでは、ホストゾーン ID をスペルチェックの対象外にする方法を紹介します。
cSpell には ignoreRegExpList で正規表現を指定して無視するワードを指定できる仕組みが備わっており、Code Spell Checker は設定でその仕組みを使用できます。
以下のように settings.json 内に ignoreRegExpList でホストゾーン ID を表す正規表現を記述することでホストゾーン ID をスペルチェックの対象外にできます。
"cSpell.ignoreRegExpList": [
"/Z[0-9A-Z]{8,32}/g"
]
指摘がなくなり、すっきりしました。

例: ARN
他に ARN もよくドキュメントやコード内に現れることってありますよね。
ARN には自分でつけた名前が含まれるパターン(S3, IAM など)や自動生成のパターン(Config, API Gateway など)があり、自動生成の場合はランダムな文字列が cSpell によって指摘されることがあるでしょう。

以下のように ignoreRegExpList に arn:aws: から始まる任意の長さの文字列を表す正規表現を追加することで ARN をスペルチェックの対象外にできます。
"cSpell.ignoreRegExpList": [
"/arn:aws:*.+/g"
]
ちなみに、cSpell の ignoreRegExpList にはデフォルトのパターンが定義されており、 URL やハッシュや UUID はチェック対象になりません。
ですので、たとえば AWS Certificate Manager の以下の証明書のような ARN は cSpell で指摘されません。
arn:aws:acm:ap-northeast-1:123456789012:certificate/550e8400-e29b-41d4-a716-446655440000
注意点
ignoreRegExpList は正規表現で無視対象を追加できるため、.* のような範囲が広すぎる正規表現を追加してしまうと、すべてのワードがスペルチェックの対象外となってしまい、チェックして欲しい場面でチェックされなくなってしまいますので気をつけましょう。
今回例示したような Route 53 のホストゾーン ID や ARN といった構文が決まっているワードに対し、正規表現を組み立てることでより効果的なスペルチェックを行なってくれるようになります。






