在 TeamCity 中全局禁用 FxCop 错误
Posted
技术标签:
【中文标题】在 TeamCity 中全局禁用 FxCop 错误【英文标题】:Globally disabling FxCop errors in TeamCity 【发布时间】:2010-03-30 04:34:29 【问题描述】:好的,今天的另一个 FxCop 问题。
我已经阅读了有关 IdentifiersShouldBeCasedCorrectly 规则的论点,以及它应该是“XML”还是“Xml”。好吧,我是一个“XML”人,我想保持这种状态。因此,我确实不希望 FxCop 一直纠正我。
我只在特定情况下使用 SuppressMessage 属性。我还使用 FxCop 标记了大量错误并将它们作为“模块”级别的 SuppressMessage 语句复制到 assemblyinfo.cs 中。效果很好。
但是,现在我真的想全局禁用这个烦人的 IdentifiersShouldBeCasedCorrectly 规则。我使用的是 TeamCity 5.0.3,并且没有使用 FxCop 项目文件(但是,我可以这样做)。我希望我可以将一个参数传递给 FxCopCmd 以告诉它忽略此错误,但从文档中看起来并不是这样。
那么...除了在 TeamCity 构建服务器上创建 FxCop 项目文件并将其用于 FxCop 构建运行器之外,我还能做些什么吗?
【问题讨论】:
【参考方案1】:查看 FxCop 的安装目录(我的是 c:/program files/microsoft fxcop 1.36)。该目录中应该有一个 CustomDictionary.xml 文件。您可以将 XML 添加到 CustomDictionary.xml 末尾的 CasingExceptions 部分,并且该机器上所有项目的所有名称空间和函数名称元素都将忽略 XML 大小写(当然,除非在命令行上覆盖了 CustomDictionary.xml)。
您也可以将 CustomDictionary.xml 复制到项目目录,并在项目目录副本的 CasingExceptions 部分添加 XML。我认为这会自动找到,不需要 FxCop 项目文件,并且只会用于该项目。
这就是我为我们的 TeamCity 构建所做的,但出于另一个原因我需要一个 FxCop 项目文件,所以我不记得(也无法检查)FxCop 是否会自动找到 CustomDictionary.xml。
例子:
<Acronyms>
<CasingExceptions>
<Acronym>Pi</Acronym>
<Acronym>Na</Acronym> <!-- NaN -->
<Acronym>NESW</Acronym> <!-- North East South West -->
<Acronym>NWSE</Acronym> <!-- North West South East -->
<Acronym>XML</Acronym> <!-- XML -->
</CasingExceptions>
MSDN FxCop FAQ 上还有一个稍微不同的忽略单词的示例 希望这会有所帮助!
【讨论】:
我一直在严格使用 FxCop customdictionary.xml 文件来添加 FxCop 抱怨拼写错误的单词,例如“num”(我喜欢在变量名中使用的东西)。您能否编辑您的答案并发布您添加到 XML 文件以忽略大小写的确切示例? 啊,我明白你指的是什么......我之前没有注意到那个部分。但是,我不想添加每个首字母缩略词,而是想全局禁用错误本身,因为我输入单词的方式是一种风格问题,并且不知道随着时间的推移我还需要添加多少。我希望我可以将 FxCop 中的错误抑制导出为 XML,然后将其粘贴到 customdictionary.xml,但我发现有趣的是我无法覆盖该文件。我得看看是不是Win7权限问题。 将 XML 从 FxCop 复制到 customdictionary.xml 不起作用……值得一试。 :) 将 XML 添加到 CustomDictionary.xml 末尾的 CasingExceptions 区域删除了命名空间元素和函数名称的大小写异常。但是,它不会为参数名称删除它们。我还在研究那个。 @james:我已经有一段时间没有在 FxCopy/TeamCity 上工作了——你有没有运气弄清楚如何在全球范围内处理大小写异常?以上是关于在 TeamCity 中全局禁用 FxCop 错误的主要内容,如果未能解决你的问题,请参考以下文章
无法让 TeamCity FxCop Build Runner 工作