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

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

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

有任何想法吗?

有帮助吗?

解决方案

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

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

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

如果这是一个具有一定规模的项目,则一次只执行一条规则,检查该规则的相关性/重要性,然后修复错误或在规则不适用时关闭该规则。

其他提示

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

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

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

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

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

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

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

下面的方法怎么样:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top