12
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly

当我运行代码分析时,我收到一个错误,因为 Microsoft 无法识别“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)

Microsoft 是否真的阻止将“Multi”添加到已识别的单词中?

4

3 回答 3

13

您可以参考此反馈票。这显然是设计使然。

您看到的行为是因为代码分析附带了一个预定义的自定义字典,该字典在发生冲突时始终覆盖任何其他自定义字典。在这种情况下,“multi”在默认的 FXCop 字典中被列为 <unrecognized> 单词。

要解决此问题,请打开默认字典 %VS Install Directory%\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml 并注释掉或删除 <unrecognized> words 部分中的“multi”条目;“multi”将不再在代码分析中被标记为拼写错误。

于 2011-10-21T19:51:54.667 回答
5

尝试将此添加到您的自定义词典

<Deprecated>
  <Term PreferredAlternate="Multi">multi</Term>
</Deprecated>
于 2017-08-25T16:15:21.480 回答
0

您可以使用 Word Acronyms 等添加 XML 文件...

添加您的 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>
于 2019-06-25T20:58:08.177 回答