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

Visual Studio 2013 中的 FxCop 和代码分析

在构建代理上运行代码分析 (FxCop > 10) 而不安装 Visual Studio