2

我正在尽最大努力定义在 MSBuild 执行我的 TFSBuild.proj 文件时应该从代码分析工具中省略的 CodeAnalysisRules 列表。

但是每次我测试它时,我的要排除的代码分析规则列表都会被忽略,Team Build 只是简单地尊重每个项目的代码分析规则设置。

任何人都有一个 TFSBuild.proj 文件的示例,该文件共享一个代码分析规则例外列表,适用于团队中构建的所有项目?我正在使用团队系统 2008。

感谢您的帮助?

4

3 回答 3

1

我们通过代码分析签入政策来做到这一点。您可以通过 Team System 进行配置。要实施,只需选择您的规则,然后右键单击解决方案 -> 将代码分析设置替换为签入策略。

于 2009-03-30T20:07:36.903 回答
1

我认为尝试用不同的集合覆盖 csproj 设置没有多大意义——您肯定想随时随地使用相同的 CA 设置(或完全禁用 CA)吗?

正如 foosnazzy 所说,在 MSBuild 中(通常)不需要这样做。您可以使用 CA 签入策略来设置您希望应用的规则。然后,在解决方案资源管理器中右键单击您的解决方案,在上下文菜单的中间大约有一个选项子菜单,用于将 TFSProjects 的 CA 策略应用于解决方案中的所有项目。您可以用服务器的设置覆盖项目设置,或将它们合并。

它可能只复制当前配置的设置,因此如果要将相同的 CA 设置应用于调试和发布,则可能需要执行两次。(我隐约记得发生了这种情况,但我们没有在我们的发布版本上运行 CA,所以这不是我最近尝试过的东西)

(这在 VSTS2005 中可用,但它不起作用 - 这些值与项目中的值“合并”,因此任何现有 CA 规则的严重性都会增加(警告或错误),但您不能禁用 CA 规则(降级错误 -> 警告 -> 禁用)。此外,每次打开解决方案时,CA 设置都会“漂移”,因此您必须每隔几天重新应用它们以使其正常工作)

另一种方法是在单个项目中设置所需的 CA 规则,找到包含列表的 XML 元素,然后使用文本编辑器(或几行 C# 代码)对 CA 元素进行全局搜索和替换在项目中的所有 csproj 文件中。在 VSTS2008 出现之前我就是这样做的——一旦你掌握了这项技术,只需几秒钟就可以通过所有 csprojs 迁移你的设置。这样做的好处是您可以更有选择性地选择应用 CA 规则的项目。

于 2009-10-27T19:12:44.440 回答
0

好吧,我花了一段时间才找到这个,但这是我能找到的最佳答案

http://bloggingabout.net/blogs/rick/archive/2007/09/04/howto-disable-specific-code-analysis-rules-for-a-team-build.aspx

它有效,它确实让我在我的所有解决方案中强制执行一组一致的规则,而无需访问每个项目的文件,这对我来说是巨大的,因为我们调整了我们的规则集并且不希望每次都手动更新每个项目

其他人知道任何有效的方法吗?- 这是一个 VS2005 解决方案/解决方法,所以我希望在 VS2008 团队系统中它会更容易,但到目前为止还没有找到其他任何东西

于 2008-11-10T23:34:59.070 回答