スペル チェッカーについて

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

潜在的なエラーを識別するスペル チェックを示すスクリーンショット。

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

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

スペル チェックのオン/オフを切り替えるには、メイン ツール バーの [ スペル チェックの切り替え ] ボタンを使用するか、メニュー バーの [編集>Advanced>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" 辞書が使用されます。 Visual Studio では、Windows のインスタンスで使用されている表示言語がチェックされ、"en-us" でない場合は、そのディクショナリも使用されます。

C# と C++ には、これらの言語のキーワード用の辞書も追加されています。これにより、'namespace' や 'alloc' などの単語のスペルミスのフラグが付けられなくなります。

この機能の初期のユーザーからのフィードバックから、開発者は現在使用しているドキュメントのエラーについてのみ知りたいという通知が寄せられます。 そのフィードバックに応じて、スペル チェックはエディターでアクティブなドキュメントのみをスキャンします。

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

コードの内容 Visual Studio で確認される内容 なぜでしょうか。
こんにちは こんにちは、こんにちは 常に適切な名詞と一般的な名詞の両方を確認する
HelloWorld こんにちは、こんにちは、世界、世界 単語の境界をマークするために、内側の大文字が使用されます
Hello.World こんにちは、こんにちは、世界、世界 句読点は単語の境界として使用されます
_Hello123 こんにちは、こんにちは 先頭または末尾の番号または句読点が削除される
Hello2World こんにちは、こんにちは、世界、世界 句読点などの内側の数値は、単語の境界として使用されます
btnWorld 世界、世界 3 文字以下のフラグメントは無視されます
helloworld Helloworld、helloworld 単語の境界を識別するインジケーターなし

Visual Studio が、使用している任意のディクショナリ内のトークンの一致を識別した場合、トークンは許容可能と見なされ、スキャンが続行されます。 それ以外の場合、トークンのスペルミスと見なされ、Visual Studio によってスペル ミスとしてフラグが設定されます。

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

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

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

スペル チェックをカスタマイズして、コラボレーション環境向けに最適化することができます。 そのため、Visual Studio では構成に EditorConfig ファイルが使用されるため、リポジトリ内のスペル チェックの動作を制御できます。

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

Important

スペル ミス のオプションはファイル固有です。 適用するファイルのスペル チェック オプションを指定する必要があります。 次の例では、ソリューション内のすべての C# ファイルにスペル チェック オプションが適用されます。

[*.cs]

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

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

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

    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 によって exclusion.dic ファイルがチェックされます。 Visual Studio は、C# プロジェクトの.sln ファイルの同じディレクトリ、または C++ ディレクトリのルート ディレクトリ内でチェックします。 exclusion.dic ファイルが存在しない場合、Visual Studio によって作成されます。 その後、ユーザーが単語を無視することを選択するたびに、Visual Studio によってこの exclusion.dic ファイルに追加されます。 Visual Studio では、この exclusion.dic ファイルに表示されるすべての単語は、正しいスペルの単語と見なされます。

    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 ファイルが使用されます。

  • 既定の言語固有の除外辞書を使用するかどうかを制御します。 このフラグは既定で true に設定されています。 言語固有の除外辞書に追加された単語はすべて、正しいスペルと見なされます。 C++ または C# に固有の除外ディクショナリを無視する場合は false に設定します。

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

完全な例を次に示します。

[*.{cs,vb}]                                         //specify which files the spelling options apply to
spelling_languages = en-us,fr-fr                    //specifies the en-us and fr-fr dictionaries for use in spell checking
spelling_checkable_types = identifiers,comments     //specifies that identifiers and comments are the only checked elements
spelling_error_severity = error                     //sets severity assigned to spelling errors to error in the error list
spelling_exclusion_path = exclusion.dic             //defines a custom exclusion dictionary location and file
spelling_use_default_exclusion_dictionary = false   //ignores the language-specific default exclusion dictionary

特殊なケース処理

Visual Studio には、書き込まれたテキスト用に設計された従来のスペル チェックとは異なるスペル ミスがないかコードをチェックする際に、いくつかの固有の動作があります。 これらの動作の一部を次に示します。

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