你如何从遗留代码的FxCop开始?

时间:2009-03-27 09:43:41

标签: legacy fxcop legacy-code

有没有人有将FxCop引入遗留代码的经验?如果有人引入违反规则的代码,我们希望我们的构建失败。但目前,这是不可能的,因为遗留代码有超过9000个违规行为。

抑制我所知错误的唯一方法是通过SuppressMessage属性,但这只适用于方法和GeneratedCodeAttribute。最后一个可以用于类和命名空间(如果我没记错的话),但不应该用于非生成的代码(参见here)。

现在,我们每天花一些时间来删除违规行为,但不断推出新的违规行为,因为我们的构建不会失败。

有什么想法吗?

4 个答案:

答案 0 :(得分:6)

我一直处于类似情况。我不久前开始在现有项目中使用FxCop,并且在开始时遇到了很多错误。我所做的是关闭所有规则,然后一次打开一个组,解决错误。

安全和性能小组是一个很好的起点 - 他们帮助我找到了之前我不知道的问题。有些规则是主观的,如果有的话,可能不完全适用于您的项目。例如,如果国际化不是问题,那么请关闭该组。如果存在不适用于您的特定规则(例如命名规则),请将其关闭。

如果您设法清除某个规则的一组错误,则可以将构建设置为失败,如果将来违反该规则。因此,不会出现新的错误。

如果它是某个规模的项目,请一次执行一条规则,查看规则的相关性/重要性,并修复错误或在规则不适用时关闭规则。

答案 1 :(得分:2)

首先问问自己:您是否愿意并且能够更改遗留代码以符合FxCop规则?或者换句话说:这是花时间的最佳方式吗?

如果您愿意花时间和精力,首先要选择一些您认为对整体质量最重要的规则并实施这些规则。如果这有用,您可以添加一些规则,修复代码等等。

根据我的经验,实施FxCop规则等没有大爆炸方法。唯一可行的方法是一次取小块。

答案 2 :(得分:2)

您可以在FxCop项目中添加旧违规的例外。这样您就不需要为现有代码添加任何属性,并且您将收到有关所有新违规的警告。

为此,在FxCop GUI中创建项目,使用您的规则运行分析,然后在结果视图中选择您想要忽略的违规。右键单击并选择“排除”。选定的警告将移至“项目中排除”选项卡。当您准备好返回并修复它们时,选择并单击“标记为活动”。

这些排除项存储在.FxCop文件中。

不过,我建议逐步引入规则,以平滑每个人的学习曲线。

答案 3 :(得分:0)

以下方法如何:

  1. 运行FXCop,其中包含与项目相关的所有规则
  2. 将结果保存为基线
  3. 开发新代码
  4. 运行FxCop
  5. 从基线中删除所有结果
  6. 这将导致对新代码进行fxcop检查....