FxCop 对我在非团队系统 Visual Studio 资源中使用格式字符串提出问题
Posted
技术标签:
【中文标题】FxCop 对我在非团队系统 Visual Studio 资源中使用格式字符串提出问题【英文标题】:FxCop taking issue with my use of format strings in resources with NON-Team System Visual Studio 【发布时间】:2009-08-06 09:44:43 【问题描述】:我在我正在进行的一个项目中运行 FxCop,我收到了一大堆如下所示的警告:
CA1703:Microsoft.Naming:在 资源 'MyProject.Properties.Resources.resx', 由名称“MyString”引用, 更正 'Myyyy' 的拼写 string value '一些格式字符串: 0:dMMMyyyy'
由于 Resources 是一个生成的类,我不能简单地使用正常机制来抑制这些消息。有没有人有什么好主意我可以解决这个问题?
编辑:为了清楚起见(因为我不知道这与 Team System 有什么不同),我对非 Team System 解决方案感兴趣 - 特别是对于 MS Visual Studio 2008 年专业版。
【问题讨论】:
【参考方案1】:如果您不想将命名规则应用于资源,只需在项目设置中关闭此规则即可。
-
右键单击项目树中的项目
点击“属性”
转到“代码分析”选项卡
展开分支“命名规则”
禁用 CA1703
如果你只是想抑制某些资源,你可以在全局抑制文件中抑制它们。这通常在visual studio的错误列表中的鼠标右键上可用。
-
右键单击错误列表中的 CA 消息
选择“隐藏消息”
选择“在项目抑制文件中”
【讨论】:
我添加了你需要做的步骤。 谢谢。事实证明,我使用的是 Visual Studio Pro 而不是 Team System,所以选项二对我来说效果不佳。不过我确实找到了这个解决方法:geekswithblogs.net/michelotti/archive/2006/01/11/65548.aspx你知道 Visual Studio Pro 有什么更好的选择吗?【参考方案2】:我最终通过将程序集的中性语言设置为空来禁用资源的拼写检查,即在 AssemblyInfo.cs 中,我添加了以下行:
[assembly: NeutralResourcesLanguage("")]
这是建议here。
【讨论】:
【参考方案3】:不用关闭整个项目的规则,或者手动排除所有违规,可以关闭对生成代码的分析,如下:
Project > Options > Spelling & Analysis
Check Suppress analysis results against generated code
【讨论】:
不,这不是解决方案。它不会抱怨生成的代码,它会抱怨资源名称。资源也有规定。 你是对的。这将禁用对资源的 all 检查。我认为您无法手动排除规则:遵循 Stefan 的第二条建议或将它们排除在 FxCop 的项目文件中。如果这个问题***.com/questions/353110/… 得到正确回答,您可以使用它... 不,它根本不会禁用资源上的任何东西,尽管正在生成资源【参考方案4】:FxCop(独立)和集成代码分析都支持使用自定义字典。
创建一个名为 CustomDictionary.xml 的文件。在节点下添加以下 XML 结构,新词(不区分大小写)。
<Dictionary>
<Words>
<Recognized>
<Word>aNewWord</Word>
<Word>AnotherNewWord</Word>
</Recognized>
</Words>
</Dictionary>
要将字典用于所有项目,请将文件放在 FxCop 安装目录(通常为 C:\Program Files\Microsoft FxCop)中。对于特定于项目的字典,将文件与项目文件一起放在单独的目录中。对于要识别的单词,您必须在创建或修改自定义词典后关闭并重新启动 FxCop。您还可以将该文件包含在 Visual Studio 项目中,并将 Build Action 文件属性设置为 CodeAnalysisDictionary
。
【讨论】:
以上是关于FxCop 对我在非团队系统 Visual Studio 资源中使用格式字符串提出问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2008 中配置 FxCop 以运行规则子集
如何让 FxCop 拥有与 Visual Studio 代码分析相同的规则集?
Visual Studio 代码分析与 StyleCop + FxCop
适用于 Visual Studio 2012 的 FxCop 12.0