スペル チェック機能の詳細
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 ファイルを構成することで、すべてのユーザーが従うことが期待されるコーディング標準を確立できます。これにより、他の方法では困難なコーディングの一貫性の維持が可能になります。
重要
スペル ミス のオプションはファイル固有です。 適用するファイルのスペル チェック オプションを指定する必要があります。 次の例では、ソリューション内のすべての C# ファイルにスペル チェック オプションが適用されます。
[*.cs]
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 によって exclusion.dic ファイルがチェックされます。 Visual Studio は、C# プロジェクトの.sln ファイルの同じディレクトリ、または C++ ディレクトリのルート ディレクトリ内でチェックします。 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 ファイルで指定された除外辞書が使用されます。既定の言語固有の除外辞書を使用するかどうかを制御します。 このフラグは既定で 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 を含む文字列は、文字列全体でスペル チェックされません。