如何:自訂程式碼分析字典
程式碼分析會使用內建的字典來檢查程式碼中的識別項是否有 .NET Framework 方針的拼字、文法案例和其他命名慣例錯誤。您可以建立自訂字典 Xml 檔案來加入、移除或修改內建字典的詞彙、縮寫和縮略字。
例如,假設您的程式碼包含一個名稱為 DoorKnokker 的類別 (Class)。程式碼分析會將此名稱識別為 door 和 knokker 兩個字的複合字,接著引發警告,指出 knokker 的拼寫錯誤。若要強制程式碼分析辨識此拼字,您可以將 knokker 一詞加入至自訂字典。
若要建立自訂字典
建立名為 CustomDictionary.xml 的檔案。
使用下列 XML 結構定義您的自訂單字:
<Dictionary>
<Words>
<Unrecognized>
<Word>knokker</Word>
</Unrecognized>
<Recognized>
<Word></Word>
</Recognized>
<Deprecated>
<Term PreferredAlternate=""></Term>
</Deprecated>
<Compound>
<Term CompoundAlternate=""></Term>
</Compound>
<DiscreteExceptions>
<Term></Term>
</DiscreteExceptions>
</Words>
<Acronyms>
<CasingExceptions>
<Acronym></Acronym>
</CasingExceptions>
</Acronyms>
</Dictionary>
自訂字典項目
您可以加入詞彙當做自訂字典中下列項目的內部文字,藉以修改程式碼分析字典的行為:
Dictionary/Words/Recognized/Word
若要在程式碼分析識別為拼字正確的詞彙清單中加入某個詞彙,請加入該詞彙當做 Dictionary/Words/Recognized/Word 項目的內部文字。Dictionary/Words/Recognized/Word 項目中的詞彙不區分大小寫。
範例
<Dictionary>
<Words>
<Recognized>
<Word>knokker</Word>
...
</Recognized>
...
</Words>
...
</Dictionary>
Dictionary/Words/Recognized 節點中的詞彙將套用至下列程式碼分析規則:
Dictionary/Words/Unrecognized/Word
若要從程式碼分析識別為拼字正確的詞彙清單中排除某個詞彙,請加入要排除的詞彙當做 Dictionary/Words/Unrecognized/Word 項目的內部文字。Dictionary/Words/Unrecognized/Word 項目中的詞彙不區分大小寫。
範例
<Dictionary>
<Words>
<Unrecognized>
<Word>meth</Word>
...
</Unrecognized>
...
</Words>
...
</Dictionary>
Dictionary/Words/Unrecognized 節點中的詞彙將套用至下列程式碼分析規則:
Dictionary/Words/Deprecated/Term[@PreferredAlternate]
若要在程式碼分析識別為已被取代的詞彙清單中加入某個詞彙,請加入該詞彙當做 Dictionary/Words/Deprecated/Term 項目的內部文字。已被取代的詞彙是指拼字正確但不應該使用的字詞。
若要在警告中加入建議的替代詞彙,請在 Term 項目的 PreferredAlternate 屬性中指定替代詞彙。如果您不想要建議替代詞彙,也可以將此屬性值保留空白。
Dictionary/Words/Deprecated/Term 項目中的已被取代詞彙不區分大小寫。
PreferredAlternate 屬性值會區分大小寫。請針對複合替代詞彙使用 Pascal 命名法的大小寫慣例。
範例
<Dictionary>
<Words>
<Deprecated>
<Term PreferredAlternate="LogOn">login</Term>
...
</Deprecated>
...
</Words>
...
</Dictionary>
Dictionary/Words/Deprecated 節點中的詞彙將套用至下列程式碼分析規則:
Dictionary/Words/Compound/Term[@CompoundAlternate]
內建字典會將某些詞彙識別為單一不連續的詞彙而非複合詞彙。若要在程式碼分析識別為複合字的詞彙清單中加入某個詞彙,並且指定該詞彙的正確大小寫,請加入該詞彙當做 Dictionary/Words/Compound/Term 項目的內部文字。在 Term 項目的 CompoundAlternate 屬性中,將個別字詞的第一個字母大寫 (Pascal 命名法的大小寫慣例),藉以指定組成複合詞彙的個別字詞。請注意,在內部文字中指定的詞彙將自動加入至 Dictionary/Words/DiscreteExceptions 清單。
Dictionary/Words/Deprecated/Term 項目中的已被取代詞彙不區分大小寫。
PreferredAlternate 屬性值會區分大小寫。請針對複合替代詞彙使用 Pascal 命名法的大小寫慣例。
範例
<Dictionary>
<Words>
<Compound>
<Term CompoundAlternate="CheckBox">checkbox</Term>
...
</Compound>
...
</Words>
...
</Dictionary>
Dictionary/Words/Compound 節點中的詞彙將套用至下列程式碼分析規則:
Dictionary/Words/DiscreteExceptions/Term
若要在複合字的大小寫規則檢查詞彙時,從程式碼分析識別為單一不連續字詞的詞彙清單中排除某個詞彙,請加入該詞彙當做 Dictionary/Words/DiscreteExceptions/Term 項目的內部文字。Dictionary/Words/DiscreteExceptions/Term 項目中的詞彙不區分大小寫。
範例
<Dictionary>
<Words>
<DiscreteExceptions>
<Term>checkbox</Term>
...
</DiscreteExceptions>
...
</Words>
...
</Dictionary>
Dictionary/Words/DiscreteExceptions 節點中的詞彙將套用至下列程式碼分析規則:
Dictionary/Acronyms/CasingExceptions/Acronym
若要在複合字的大小寫規則檢查詞彙時,在程式碼分析識別為拼字正確的詞彙清單中加入某個縮略字並指出縮略字的大小寫,請加入該詞彙當做 Dictionary/Acronyms/CasingExceptions/Acronym 項目的內部文字。Dictionary/Acronyms/CasingExceptions/Acronym 項目中的縮略字會區分大小寫。
範例
<Dictionary>
<Acronyms>
<CasingExceptions>
<Acronym>NESW</Acronym> <!-- North East South West -->
...
</CasingExceptions>
...
</Acronyms>
...
</Dictionary>
Dictionary/Acronyms/CasingExceptions 節點中的詞彙將套用至下列程式碼分析規則:
- CA1709: Identifiers should be cased correctly
若要將自訂字典套用至專案
在 [方案總管] 中使用下列其中一個程序:
若要將字典加入至單一專案,請以滑鼠右鍵按一下專案名稱,然後按一下 [加入現有項目]。在 [加入現有項目] 對話方塊中,指定檔案。
若要加入兩個以上專案共用的字典,請在 [加入現有項目] 對話方塊中找到要共用的檔案,按一下 [加入] 按鈕上的向下鍵,然後按一下 [加入做為連結]。
在 [方案總管] 中,以滑鼠右鍵按一下 CustomDictionary.xml 檔案名稱,然後按一下 [屬性]。
從 [建置動作] 清單中選取 [CodeAnalysisDictionary]。
從 [複製到輸出目錄] 清單中選取 [不要複製]。