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

m-y*_*m-y 11 .net code-analysis fxcop casing ca1704

public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
Run Code Online (Sandbox Code Playgroud)

当我运行代码分析时,我收到一个错误,因为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>
Run Code Online (Sandbox Code Playgroud)

修复它的另一种方法是使用SuppressMessage,虽然如果我打算在整个地方使用这个词,这不是一个很好的解决方案.

[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multi")]
public class MultiSomething { } //NO WARNING (Suppressed)
Run Code Online (Sandbox Code Playgroud)

微软是否真的阻止'Multi'被添加到已识别的单词中?

Bra*_*don 13

您可以参考此反馈票.这显然是设计上的.

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

要解决此问题,请打开默认字典%VS安装目录%\ Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml并注释掉<unrecognized> words部分中的"multi"条目; "multi"将不再被标记为Code Analysis中的拼写错误.


小智 5

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

<Deprecated>
  <Term PreferredAlternate="Multi">multi</Term>
</Deprecated>
Run Code Online (Sandbox Code Playgroud)