有关如何编写静态分析规则(FXCop)以确保删除事件委托的任何想法

Pre*_*gha 7 .net delegates fxcop static-analysis event-handling

我们一直在进行大量的内存泄漏分析,并且发现其中一个影响因素是没有删除代理事件导致对象无法足够快地(或有时永远)进行GC.

有没有人对如何在FXCop中编写规则有任何想法,以确保我们有代理从处理程序中删除?

我刚看到这个,因此我会向那里询问更多信息.

tan*_*ius 2

好吧,除了实现实际检查的问题之外(在我看来,这与路径覆盖非常相似,因此不实用) - 以下是编写新的 FxCop 规则的方法:

起初一些对我有帮助的文章:

实施一个简单的规则没什么大不了的。在您的项目中,您需要一个 Rules.xml 文件作为嵌入资源(请参阅此处)。您可以从 Check() 方法派生类BaseIntrospectionRule并将代码添加到其中:

public override ProblemCollection Check( TypeNode typeNode )
{
  if( type.IsPublic )
  {
    Problems.Add( new Problem( ... ) );
  }
  return Problems;
}
Run Code Online (Sandbox Code Playgroud)

我以前做过几次。我希望它仍然像描述的那样工作:)