CA1704 - 微软似乎阻止了“Multi”这个词?

时间:2011-10-21 19:47:33

标签: .net code-analysis fxcop casing ca1704

public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly

当我运行代码分析时,我收到一个错误,因为Microsoft无法识别“Multi”这个词(他们在IMultiValueConverter中使用它)。因此,我所做的更正是添加CodeAnalysisDictionary.xml文件并按照提供的步骤here进行操作。但是,它似乎没有解决问题,我仍然收到代码分析警告消息。

为了确保这不是识别的单词部分的错误,我添加了另一个类和另一个例外。

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'被添加到已识别的单词中?

3 个答案:

答案 0 :(得分:13)

您可以参考此feedback ticket。这显然是设计出来的。

  

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

     

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

答案 1 :(得分:4)

尝试将此添加到您的customdictionary

<Deprecated>
  <Term PreferredAlternate="Multi">multi</Term>
</Deprecated>

答案 2 :(得分:0)

您可以添加带有Word首字母缩略词等的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>