了解拼字檢查工具
Visual Studio 中的許多功能都是設計來協助您撰寫所需的程式碼,從確定程式碼編譯到協助您設定程式碼樣式。 現在,使用 17.5 版中引進的拼字檢查工具功能,Visual Studio 甚至可以確保您的拼字正確無誤。
拼字檢查工具適用於任何 C#、C++ 或 Markdown 檔案。 拼字檢查工具啟用後,Visual Studio 會將偵測到的任何字組標記為拼錯的字組。 Visual Studio 也會建議替代拼字,並協助更正這些拼錯的字組。 當這些拼錯的字組是識別碼時,此功能甚至會執行內容重新命名,以便您的程式碼仍會編譯。
您可以使用主工具列上的 [切換拼字檢查工具] 按鈕,或從功能表列選取 [編輯]>[進階]>[切換拼字檢查工具] 命令,來關閉或開啟拼字檢查工具。
如何使用拼字檢查工具?
當拼字錯誤上有插入號時,快速動作會提供修正拼字錯誤的解決方案。 您可以使用快速鍵 Ctrl+. 或 Alt+Enter 來啟動快速動作。 當捷徑功能表出現時,Visual Studio 會顯示三個選項來處理拼字問題。
若有任何字典提供拼字建議,Visual Studio 會顯示這些字典。 若多個字典提供建議,Visual Studio 會依字典將其建議分組。 對於字串和註解,選擇其中一個建議會導致單一就地取代。 對於 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 檢查什麼 | 為何會這樣? |
---|---|---|
您好 | Hello、hello | 一律同時檢查適當和常見的名詞 |
HelloWorld | Hello、hello、World、world | 中間大寫用來標記字邊界 |
Hello.World | Hello、hello、World、world | 標點符號用作字邊界 |
_Hello123 | Hello、hello | 前置或後置數字或標點符號會予以去除 |
Hello2World | Hello、hello、World、world | 中間數字 (例如標點符號) 用作字邊界 |
btnWorld | World、world | 忽略三個字元或更少字元的片段 |
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)
注意
確定為您要使用的任何語言安裝語言套件,以防止 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。 任何新增至語言特定排除字典的字詞都會被視為正確拼字。 設定為 false 以忽略 C++ 或 C# 特有的排除字典。
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」,每個字組都會個別檢查。 - 包含 URL 的字串,例如
https://...
或mailto:..
不會對整個字串進行拼字檢查。