分析 FxCop / 代码分析警告 CA1506: AvoidExcessiveClassCoupling

Posted

技术标签:

【中文标题】分析 FxCop / 代码分析警告 CA1506: AvoidExcessiveClassCoupling【英文标题】:Analysing FxCop / Code Analysis warning CA1506: AvoidExcessiveClassCoupling 【发布时间】:2011-01-17 15:14:09 【问题描述】:

我收到 C# 类的 Visual Studio 代码分析警告 CA1506。它说,“'FormMain' 与来自 25 个不同命名空间的 93 种不同(非 IComponent)类型相结合。重写或重构该类的方法以减少其类耦合,或考虑将某些类的方法移至它的某些其他类型是紧耦合的。95以上的类耦合表示可维护性差,95到80之间的类耦合表示可维护性中等,80以下的类耦合表示可维护性好。"

我的问题很简单,我在哪里可以看到 FormMain 所耦合的所有类型的列表,以便我更好地了解情况?

谢谢。

【问题讨论】:

您在这个表单上有多少个控件? form.cs文件有多少行代码? 我正在使用 Developer Express 功能区栏和停靠面板。功能区栏上有大约 30 个控件。包括空行和 cmets 大约有 1600 行(不包括 FormMain.Designer.cs),其中大约 800 行不是空行或 cmets。 【参考方案1】:

您可以使用Reflector 分析类使用的所有内容(右键单击该类,单击“分析”,展开“取决于”)

【讨论】:

非常感谢。这看起来很有趣,我认为我的问题的答案隐藏在该列表中。我现在唯一想知道的是是否有某种方法可以获取仅包含类型的列表,而不是类型中的所有方法,只是为了让我更容易将数字放在 DevExpress 类型上。 .Net Framework 类型与我自己的类型。 有趣的是,当我从该列表中删除所有方法时,我会在 20 个命名空间中获得大约 145 种类型,这与代码分析在其警告消息中所说的不完全一样。尽管如此,我现在有足够的信心忽略这个警告,将“问题”归咎于 DevExpress。 (DevExpress 占 70 种类型,.Net Framework 占 40 种,我自己的类型占其余 30 种。) @RenniePet - 表单中有任何业务逻辑或数据库访问代码吗?如果是这样,将该功能移动到单独的类也将有助于减少表单的依赖关系。

以上是关于分析 FxCop / 代码分析警告 CA1506: AvoidExcessiveClassCoupling的主要内容,如果未能解决你的问题,请参考以下文章

WPF 应用程序:Microsoft.Maintainability#CA1506 签名无效 FxCop 违规

FxCop VS2013 有人知道警告标识符是啥吗?

代码分析/FxCop CA1726:UsePreferredTerms 显示已取消为已弃用

为啥 FxCop 会在此 C# 代码中发出有关溢出 (CA2233) 的警告?

构造新异常时抑制 CA1303 fxcop 警告

使用 NCrunch、FxCop 分析器和“错误警告”:如何在 NCrunch 中配置警告严重性?