スペル チェック機能の詳細

Visual Studio の機能の多くは、コードが確実にコンパイルされるようにすることから、コードのスタイル設定を補助することまで、必要なコードを記述するのに役立つように設計されています。 現在は、バージョン 17.5 で導入されたスペル チェック機能を使って、Visual Studio で確実にスペルが正確になるようにすることもできるようになりました。

スペル チェック機能の動作例のスクリーンショット。

スペル チェック機能は、任意の C#、C++、またはマークダウン ファイルで使用できます。 スペル チェック機能を有効にすると、Visual Studio によってスペルが間違っていると検出されたすべての単語がマークされます。 Visual Studio によって代替スペルが提案され、修正するのも簡単です。 この機能を使用すると、そのようなスペル ミスが識別子である場合にも、コンテキストに応じた名前変更が行われてコードがコンパイルされます。

スペル チェック機能のオンとオフを切り替えるには、メイン ツール バーの [Toggle Spell Checker] (スペル チェック機能を切り替える) ボタンを使用するか、メニュー バーから [編集]>[詳細]>[Toggle Spell Checker] (スペル チェック機能を切り替える) コマンドを選択します。

使用方法

キャレットがスペル ミスの上にあるとき、クイック アクションによって、スペル ミスを修正するための解決方法が表示されます。 クイック アクションは、キーボード ショートカット Ctrl+. キーまたは Alt+Enter キーを使用して表示できます。 コンテキスト メニューが表示されると、Visual Studio でスペルの問題を処理するための 3 つのオプションが表示されます。

いずれかの辞書にスペルの候補が含まれている場合は、Visual Studio に表示されます。 複数の辞書から候補が表示される場合、Visual Studio で候補が辞書ごとにグループ化されます。 文字列とコメントについては、これらの候補のいずれかを選ぶと、1 つのインプレース置換が行われます。 C++ または C# ドキュメント内の識別子については、候補を受け入れると、コードが確実にコンパイルされるように、識別子のすべてのインスタンスを更新するリファクタリングまたは名前変更が行われます。

複数の辞書が表示されているスペル チェック機能のスクリーンショット。

スペルの問題を無視することも選択できます。 問題を無視することを選択すると、Visual Studio によって、ローカル コンピューター上の AppData ディレクトリに exclusion.dic ファイルが作成されます。 ある単語を無視することを選択すると、それは Visual Studio のすべてのインスタンスのスペル チェックで無視されます。

それはどのように機能しますか?

C#、C++、Markdown のすべてでキーワードの言語として英語が使用されるため、通常、Visual Studio でのスペル チェックには "英語 (米国)" または "en-us" の辞書が使用されます。 Windows のインスタンスで使用されている表示言語が Visual Studio で確認され、"en-us" でない場合は、その辞書も使用されます。

Note

また、C# と C++ には、これらの言語のキーワードに対する追加の辞書もあります。これにより、'namespace' や 'alloc' などの単語がスペルが間違っている単語として指摘されるのを防ぐことができます。

この機能の早期ユーザーからのフィードバックにより、開発者が現在作業中のドキュメントのエラーについてのみ知りたいと考えていることがわかりました。 そのフィードバックにお応えして、スペル チェック機能ではエディターでアクティブになっているドキュメントのみをスキャンします。 このフィードバックへの直接応答として、スペル チェック機能を使用すると、開いているドキュメントがスキャンされます。

次の表は、コード ドキュメントをスキャンするときにスペル チェック機能で確認されるヒューリスティックの一部を示しています。

コードの内容 Visual Studio で確認される内容 なぜでしょうか。
こんにちは Hello、hello 固有名詞と一般名詞の両方を常にチェックする
HelloWorld Hello、hello、World、world ワード境界を表すために中間に大文字が使用されている
Hello.World Hello、hello、World、world 句読点がワード境界として使用されている
_Hello123 Hello、hello 先頭または末尾の数字または句読点は削除される
Hello2World Hello、hello、World、world 中間の句読点と同様に数字がワード境界として使用されている
btnWorld World、world 3 文字以下のフラグメントは無視される
helloworld Helloworld、helloworld ワード境界を識別するインジケーターなし

Visual Studio では、使用している任意の辞書でトークンの一致が見つかると、そのトークンは許容可能と見なされ、スキャンは続行されます。 それ以外の場合、そのトークンはスペルが間違っていると見なされ、Visual Studio によってスペルのエラーとして指摘されます。

エラー一覧のスペル ミスの例のスクリーンショット。

スペル チェック機能をカスタマイズする方法

スペル チェックをカスタマイズして、共同作業環境用に最適化することができます。 そのために、Visual Studio では構成に EditorConfig ファイルを使用して、リポジトリ内でスペル チェックの動作を制御できるようになっています。

EditorConfig ファイルを構成することで、すべてのユーザーが従うことが期待されるコーディング標準を確立できます。これにより、他の方法では困難なコーディングの一貫性の維持が可能になります。

EditorConfig ファイルで構成できるスイッチの例とユース ケース シナリオを次に示します。

  • Visual Studio で使用する言語を一覧表示します。 この例では、Visual Studio でスペルの問題をチェックするときに "en-us" 辞書と "fr-fr" 辞書のみを使用します。

    spelling_languages = _language_[,_language_]
    (Example: = en-us,fr-fr)

    Note

    Visual Studio によって単語が誤ってスペル ミスとして指摘されないように、使用している言語の言語パックを必ずインストールしてください。

  • Visual Studio でチェックする内容を制御します。 この例では、Visual Studio で識別子とコメントについてはスペル ミスの単語をチェックしますが、文字列内ではチェックしません。

    spelling_checkable_types = strings,identifiers,comments
    (Example: = identifiers,comments)

  • Visual Studio のエラー一覧でスペル ミスに割り当てる重大度を制御します。 この例では、スペル ミスがエラーとして表示されます。

    spelling_error_severity = error OR warning OR information OR hint
    (Example: = error)

  • 独自の除外辞書を作成して、正しいスペルと見なす単語を指定します。 この例では、ソリューションの任意のファイルに対して初めてスペル チェック機能が実行されたときに、Visual Studio によって .sln ファイルと同じディレクトリ (C# プロジェクトの場合) またはルート ディレクトリ (C++ ディレクトリの場合) にある exclusion.dic ファイルがチェックされます。 exclusion.dic ファイルが存在しない場合は、Visual Studio によって作成されます。 その後、ユーザーが単語を無視することを選択するたびに、それが Visual Studio によってこの exclusion.dic ファイルに追加されます。 この exclusion.dic ファイルに含まれている単語はすべて、Visual Studio で正しいスペルの単語と見なされます。

    spelling_exclusion_path = absolute OR relative path to exclusion dictionary
    (Example: = .\exclusion.dic)

    注意

    Visual Studio では、.editorconfig ファイル内の spelling_exclusion_path スイッチ、またはスイッチが見つからない場合は %localappdata%\Microsoft\VisualStudio\<Version> ディレクトリ内の exclusion.dic ファイルで指定された除外辞書が使用されます。

  • 言語固有の除外辞書を使用するかどうかを制御します。 false に設定すると、C++ または C# に固有の除外辞書で指定された単語は使用されません。 既定値は true です。

    spelling_use_default_exclusion_dictionary = true OR false
    (Example: = spelling_use_default_exclusion_dictionary = false)

特殊なケースの処理

Visual Studio でコードのスペル ミスがチェックされる方法には、記述されたテキスト用に設計された従来のスペル チェック機能とは異なる、いくつかの特別な動作があります。 そのような動作の一部を次に示します。

  • 句読点を含む文字列 (例: 'misc.") では、Visual Studio によって修正が提案されません。識別子の句読点によってコンパイルされないコードが発生する可能性があるためです。
  • 文字列内にバックスラッシュがあると、後続の文字のスペル チェックが省略され、バックスラッシュと後続の文字は単語の区切り記号として扱われます。 たとえば、hello\nworld という文字列の場合、Visual Studio では最初にバックスラッシュが検出されます。 Visual Studio ではこの \n が単語の区切り記号として扱われます。それにより "hello" と "world" が残り、それぞれが個別にチェックされます。
  • https://...mailto:.. などの URL を含む文字列は、文字列全体でスペル チェックされません。