FxCop 的 ConstructorsShouldNotCallBaseClassVirtualMethods 规范

原创 2004年08月11日 21:46:00

FxCop 中有一个rule ConstructorsShouldNotCallBaseClassVirtualMethods
那如果在构造函数中调用Virtual方法可能会产生什么样的不良后果呢?
看如下代码:

public class BaseClass {
   public int intCount=0;
   public BaseClass() {
    Increate();
   }

   public virtual  void Increate(){
    intCount++;
   }

  }

  public class SubClass: BaseClass {

   public int subCount=0;
  
   public SubClass() {
    
     Increate();

   }
   public override void Increate() {
    subCount++;
   }

  }
private void button1_Click(object sender, System.EventArgs e)
  {
   SubClass xx=new SubClass();
   MessageBox.Show(xx.intCount.ToString() +"---"+xx.subCount.ToString()  );
  }
显示的结果是 xx.intCount 是 0;xx.subCount 是 2 ;

原因是 SubClass
Increate() SubClass() 被调用之前调用了。

以上代码编译后用FxCop分析,会报如下错误提示:
CriticalWarning, Certainty 95, for "ConstructorsShouldNotCallBaseClassVirtualMethods"
{
    Target     : ".ctor()"  (IntrospectionTargetConstructor)
    Location   : "file:c:/documents and settings/administrator.hrms-xam/my documents/visual studio projects/windowsapplication1/form1.cs(30)"  (String)
    Resolution : "'BaseClass..ctor()' contains a call chain that results
                 in a call to a virtual method defined by the class.
                 Review the following call stack for unintended consequences:
                 BaseClass..ctor()BaseClass.Increate(
                 )"
... ...
.ctor() 为构造函数。

FxCop 代码警察 对于dotNet开发者是非常有用的工具,至少它可以帮助你提高你的代码质量。

FxCop 设计规则

FxCop 设计规则 Posted on 2005-09-07 16:40 冰戈 阅读(193) 评论(0)  编辑 收藏 收藏至365Key 所属分类: .NET资料 ...
  • deadshot123
  • deadshot123
  • 2006-04-07 16:43:00
  • 1421

Stylecop vs FXcop 区别

Stylecopis a style analysis tool that works at the source codelevel. It exists primarily to provide ...
  • wzhiu
  • wzhiu
  • 2012-12-07 14:17:47
  • 2659

代码分析工具Microsoft FXCOP

FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件...
  • wlanye
  • wlanye
  • 2014-12-22 10:39:21
  • 987

FxCop 和 StyleCop 的关系

参考: StyleCop vs FxCop C# Code Reviews using StyleCop - Detailed Article How to Use FxCop FxCop ...
  • hchaoh
  • hchaoh
  • 2017-04-06 15:50:27
  • 405

代码审查工具FxCop建议采用的规则总结

续接:    代码走查工具篇FxCop的规则总结与翻译_Part1  代码走查工具篇FxCop的规则总结与翻译_Part2 代码走查工具篇FxCop的规则总结与翻译_Part3 ...
  • lu_yongchao
  • lu_yongchao
  • 2013-04-06 21:21:42
  • 2484

FxCop整套资料下载

  • 2013年04月05日 22:16
  • 2.88MB
  • 下载

FxCop1.36之三:自定义规则

关于给出的FxCop自定义规则网上有很多介绍,不过大致的例子有两个...一个是FxCop1.32版的;另一个是FxCop1.36版的。关于FxCop1.32(根据博客的发布时间猜测一下)中文译文可以参...
  • csharp2009
  • csharp2009
  • 2008-11-20 16:14:00
  • 2055

Fxcop使用参考

1Fxcop配置文件简介,2命令行介绍,3项目中使用Fxcop,4Fxcop与VS集成 1Fxcop配置文件简介    Fxcop配置文件也就是Fxcop工程文件,也即是后缀为FxCop的文件...
  • xuexiaodong2009
  • xuexiaodong2009
  • 2011-08-16 15:29:58
  • 4580

代码走查工具篇FxCop的规则总结与翻译_Part3

续接上篇:代码走查工具篇FxCop的规则总结与翻译_Part2 Performancerules(性能规则) 1、AvoidExcessiveLocals   CA1809      避...
  • lu_yongchao
  • lu_yongchao
  • 2013-04-05 21:33:50
  • 2434

FxCop - 代码分析工具

FxCop是一个代码分析工具,它依照微软.NET框架的设计规范对托管代码assembly(可称为程序集,assembly实际上指的就是.net中的.exe或者.dll文件(不包括netmodule文件...
  • afandaafandaafanda
  • afandaafandaafanda
  • 2014-12-01 23:01:19
  • 515
收藏助手
不良信息举报
您举报文章:FxCop 的 ConstructorsShouldNotCallBaseClassVirtualMethods 规范
举报原因:
原因补充:

(最多只允许输入30个字)