柚子Nan--回归原点

Everything can be as easy as you like or as complex as you need.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一个简单的检查事件丢失的小工具

Posted on 2005-08-22 17:14  柚子Nan  阅读(2223)  评论(10编辑  收藏  举报

问题起源

在开发Asp.Net程序的时候,我们经常遇到的一个问题就是事件丢失,特别是在软件要发布的时候,这个问题的发生更加严重。明显的症状就是点击按钮,链接以后,程序没有任何反应,如果一个一个的去查,非常的烦人,特别是使用了IEWebControl以后丢失情况更多。


工作环境

开发工具:Visual Studio .Net 2003, .Net Framework1.1

适用范围:检查C#, Asp.Net  程序 


工作原理

事件未丢失的情况有三种:检查某个控件的事件字符串出现的次数是否为0(说明这个控件没有这个事件)或者为2(正常情况下都是2,一个声明,一个实现),还有出现3或者以上(某个事件被人工的调用过)。

事件丢失的情况有一种,某个控件的事件出现次数为1(只是有实现函数,而声明的地方丢失了,这个就是事件丢失)。 

 

举例说明

一个按钮的声明

protected System.Web.UI.WebControls.Button Button1;

它的事件声明(在如下的函数中,如果事件丢失的话,这个函数中的代码将会减少)

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);
}

事件的实现

private void Button1_Click(object sender, System.EventArgs e)

{

    // Do something

}

这个工具会检测Button1Click事件字符串(Button1_Click)会出现几次,就是工作原理中说明的情况。

 

待改进

工作原理:有一个漏洞,如果一个按钮的事件的实现存在,事件的声明丢失了,但是这个事件的实现被人工调用过,那么检查出的数字就是2,或者以上,结果合法,但是实际上却是丢失事件了!

报表工具:出的结果非常简陋,写Txt文件。将来的发展可以做成FxCop报告结果一样的东西XML+XSL,这个工具可以用在DailyBuild时,一并检查这个并Mail通知开发人员。

 

下载地址,欢迎PK