如何:自定义代码分析字典
代码分析使用一个内置字典来检查代码中的标识符是否存在拼写错误、语法错误和 .NET Framework 准则中的其他命名约定错误。 可以通过创建一个自定义字典 Xml 文件,在内置字典中添加、删除或修改术语、缩写词和首字母缩写词。
例如,假定您的代码中包含一个名为 DoorKnokker 的类。 代码分析将名称标识为由两个单词组成的组合词: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 node 节点中的术语适用于以下代码分析规则:
Dictionary/Words/DiscreteExceptions/Term
若要在按复合词的大小写规则检查某个术语时,从代码分析标识为单个离散词的术语列表中排除该术语,请将该术语添加为 Dictionary/Words/DiscreteExceptions/Term 元素的内部文本。 Dictionary/Words/ Deprecated/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 节点中的术语适用于以下代码分析规则:
向项目应用自定义字典
在**“解决方案资源管理器”**中,遵循以下过程之一:
若要向单个项目中添加字典,请右击该项目名称,然后单击**“添加现有项”。 在“添加现有项”**对话框中指定文件。
若要添加在两个或更多项目之间共享的字典,请在**“添加现有项”对话框中找到要共享的文件,单击“添加”按钮上的下箭头,然后单击“添加为链接”**。
在**“解决方案资源管理器”中,右击 CustomDictionary.xml 文件名并单击“属性”**。
从**“生成操作”列表中选择“CodeAnalysisDictionary”**。
从**“复制到输出目录”列表中选择“不复制”**。