public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
当我运行代码分析时,我得到一个错误,因为微软不识别"Multi"这个词(去想他们在IMultiValueConverter
中使用它)。因此,为了纠正这个问题,我添加了一个CodeAnalysisDictionary.xml文件,并按照这里提供的步骤进行操作。然而,这似乎并没有解决问题,我仍然得到一个代码分析警告消息。
为了确保这不是识别词部分的错误,我添加了另一个类和另一个异常。
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
public class MutiiSomething { } //NO WARNING
<Dictionary>
<Words>
<Recognized>
<Word>Multi</Word> <-- This seems to not do anything... -->
<Word>Mutii</Word> <-- This actually does something... -->
</Recognized>
</Words>
</Dictionary>
修复它的另一种选择是使用SuppressMessage,尽管如果我计划在所有地方使用这个词,这不是一个很合适的解决方案。
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multi")]
public class MultiSomething { } //NO WARNING (Suppressed)
微软真的阻止了"Multi"被添加到可识别的单词中吗?
您可以参考此反馈单。这显然是有意为之。
您所看到的行为是因为Code Analysis附带了一个预定义的自定义字典,当存在冲突时,它总是覆盖任何其他自定义字典。在这种情况下,"multi"被列为<无法识别的>无法识别的>
在默认的FXCop字典中。要解决此问题,请打开默认字典%VS安装目录%Team ToolsStatic Analysis ToolsFxCopCustomDictionary.xml,并注释掉或从
文字部分;"multi"将不再被标记为代码分析中的拼写错误。
尝试将其添加到您的customdictionary
<Deprecated>
<Term PreferredAlternate="Multi">multi</Term>
</Deprecated>
您可以添加一个XML文件与Word首字母缩略词等…
添加xml文件并设置Build Action = CodeAnalysisDictionary
<?xml version="1.0" encoding="utf-8" ?>
<Dictionary>
<Words>
<Unrecognized>
<Word></Word>
</Unrecognized>
<Recognized>
<Word>Multi</Word>
</Recognized>
<Deprecated>
<Term PreferredAlternate=""></Term>
</Deprecated>
<Compound>
<Term CompoundAlternate=""></Term>
</Compound>
<DiscreteExceptions>
<Term>PostDate</Term>
</DiscreteExceptions>
</Words>
<Acronyms>
<CasingExceptions>
<Acronym></Acronym>
</CasingExceptions>
</Acronyms>
</Dictionary>