在MSBuild中共享代码分析规则

时间:2008-11-10 21:05:34

标签: visual-studio-2008 msbuild code-analysis

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

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

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

感谢您的帮助?

3 个答案:

答案 0 :(得分:1)

我们通过代码分析签到政策执行此操作。您可以通过Team System进行配置。要实施,只需选择您的规则,然后右键单击解决方案 - >使用签到策略替换代码分析设置。

答案 1 :(得分:1)

我认为尝试使用不同的设置覆盖csproj设置时没有太大意义 - 当然,无论何时何地构建代码,您都希望使用相同的CA设置(或完全禁用CA)?

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

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

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

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

答案 2 :(得分:0)

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

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

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

其他人都知道有什么用吗? - 这是一个VS2005解决方案/解决方法所以我希望在VS2008 Team System中更容易,但到目前为止还没有找到任何其他东西