9

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

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

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

有任何想法吗?

4

4 回答 4

6

我也遇到过类似的情况。前段时间我开始在一个现有项目上使用 FxCop,一开始有很多错误。我所做的是关闭所有规则,然后一次打开一组,边走边解决错误。

安全和性能组是一个很好的起点——他们帮助我发现了我以前没有意识到的问题。有些规则是主观的,可能并不完全适用于您的项目,如果有的话。例如,如果国际化不是问题,则关闭该组。如果有不适用于您的特定规则,例如命名规则,则将其关闭。

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

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

于 2009-03-29T01:45:19.200 回答
2

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

如果您愿意花费时间和精力,请从挑选您认为对整体质量最重要的少数规则开始并实施这些规则。如果这有帮助,您可以添加一些规则、修复代码等。

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

于 2009-03-27T09:59:53.520 回答
2

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

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

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

尽管如此,我还是建议逐步引入规则,以平滑每个人的学习曲线。

于 2009-03-27T10:05:25.037 回答
0

下面的方法怎么样:

  1. 使用与您的项目相关的所有规则运行 FXCop
  2. 将结果保存为基线
  3. 开发新代码
  4. 运行 FxCop
  5. 从基线中删除所有结果

这将导致 fxcop 检查您的新代码....

于 2009-06-24T15:23:49.360 回答