名为 MultiString 的类的 Visual Studio 2010 代码分析警告 CA1704

Posted

技术标签:

【中文标题】名为 MultiString 的类的 Visual Studio 2010 代码分析警告 CA1704【英文标题】:Visual Studio 2010 code analysis warning CA1704 for class named MultiString 【发布时间】:2012-03-19 16:43:28 【问题描述】:

我在使用 Visual Studio 2010 中的代码分析工具时遇到问题;我有一个用于操作多字符串的类,因此我将我的类命名为MultiString。当我运行代码分析工具时,我收到警告:

CA1704:Microsoft.Naming:更正类型名称“MultiString”中“Multi”的拼写。

当使用术语multiString 作为参数名称或IsMultiApplicationCard 作为属性名称时,也会出现同样的问题。

感谢Code Analysis - CA1704: Correct the spelling of 'Ps'这个话题,我发现multi这个词默认是无法识别的。现在我想知道为什么(我不是母语人士)。 multi 不是一个有效的词吗?我应该改用什么词?或者你会建议使用 MultiapplicationMultistring

【问题讨论】:

【参考方案1】:

MultiString 被代码分析解析为multi, string,然后都根据字典进行检查。 Multi 是一个词的有效前缀,但它本身不是一个词,即multicolored 是一个词,所以不应该写成multi colored。因此,Microsoft 在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml 中提供的标准字典明确指定multi 为无法识别;这反过来意味着adding Multi to a custom dictionary 无效:代码分析仍然会拒绝它——但不能解释为什么你的字典条目无效!

您最好的选择似乎是使用Multistring(正如您自己指出的那样);对于这种特殊情况,第二好的方法是抑制 CA1704;管理员大概可以编辑标准字典,但在任何更新后都需要重复,这似乎是一个相当肮脏的把戏。

【讨论】:

感谢您的回复 - 但 unrecognized 我的意思是在 Microsoft 字典中明确标记为无法识别。因此我无法将它添加到已识别的单词中(或者至少它不能按预期工作)。 multistring 是一个有效的词吗?还是多应用程序?通常我不会太在意这些事情,但是当我正在开发一个 C# 库时,我认为遵守命名约定会很有用。 @Korexio “我的意思是它在 Microsoft 词典中被明确标记为无法识别”你有这方面的参考吗? Multistring 可能不是一个有效的英文单词,但它是一个有效的“Microsoft 英语”单词... :) 它甚至出现在词汇表 here on the MSDN 上。如果这正是您在代码中使用的多字符串,那么您的库的用户应该习惯于这个词。 @DaveShaw C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\CustomDictionary.xml 在 /Dictionary/Unrecognized/Word 下包含多个。没有其他参考资料。 仅当我将其用作单个单词时才有效 - multistringmultiapplication。由于 multi 似乎是一个前缀(而不是我想的一个词),这应该是要走的路。感谢您的帮助!【参考方案2】:

请参阅http://msdn.microsoft.com/en-us/library/bb264492.aspx?ppud=4,了解有关如何解决此“违规”的详细信息。 'Multi' 不在微软词典中。您可以将其更改为“Multiple”...或者您可以将“Multi”添加到自定义字典中。

【讨论】:

感谢您的回复 - 但 unrecognized 我的意思是在 Microsoft 字典中明确标记为无法识别。因此我无法将它添加到已识别的单词中(或者至少它不能按预期工作)。 如果您点击链接,它会告诉您如何创建自定义字典来自定义代码分析检查行为。您的自定义词典不仅仅是一个简单的单词列表。请参阅msdn.microsoft.com/en-us/library/bb514188.aspx 了解可以放入的内容。 我熟悉代码分析字典,但在这种特殊情况下,添加术语/单词并没有帮助; Multi 在基础/默认 Microsoft 词典中被标记为无法识别。不能使用自定义字典推翻这一点。如需更多信息,请查看我对 DaveShaw 的评论。

以上是关于名为 MultiString 的类的 Visual Studio 2010 代码分析警告 CA1704的主要内容,如果未能解决你的问题,请参考以下文章

关于如何修复错误“找不到名为 viewcontroller 的类的任何信息”的建议

为啥编译包含静态嵌套类的类会创建一个名为“EnclosureClass$1”的新 .class 文件? [复制]

c++定义一个名为Person的类?

重写 Visual Studio 对组件派生类的处理

Visual Studio 和使用 C++ 中的类工厂自动创建对象

在 Visual Studio 中更改类的默认选项卡结构