C应用Attribute特性代码统计分析.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C#中的Attribute是一种可由用户自由定义的修饰符(Modifier),C#中的Attribute可以用来修饰各种需要被修饰的目标。Attribute的作用是为它们的修饰目标追加上一些额外的信息——比如这个类是我写的或者这个函数以前出过问题等等。AD: 日常工作中,需要为程序集提供统计分析:1:程序集方法数;2:开发人员数目及各自所开发或REVIEW的方法数;3:测试中,被标注有BUG的数目;4:直接查看方法的IL代码;鉴于以上统计的需要,特开发本EXE。1:关于特性Attribute的知识补充 Attribute是一种可由用户自由定义的修饰符(Modifier),可以用来修饰各种需要被修饰的目标。它的作用是为它们的修饰目标追加上一些额外的信息——比如这个类是我写的或者这个函数以前出过问题等等。它跟注释的区别是:注释是对程序源代码的一种说明,主要目的是给人看的,在程序被编译的时候会被编译器所丢弃,因此,它丝毫不会影响到程序的执行。而Attribute是程序代码的一部分,不但不会被编译器丢弃,而且还会被编译器编译进程序集(Assembly)的元数据(Metadata)里,在程序运行的时候,你随时可以从元数据里提取出这些附加信息来决策程序的运行。本文所依据的就是特性这个特点。2:基础模块XP.AttributeClass 根据文章开头的要求:统计开发者、reviewer、bug信息,需要创建一个可被客户端项目引用的类库项目XP.AttributeClass。该项目包含三个Attribute类:CreaterAttribute、ReviewerAttribute、BugAttribute。分别如下:3:引用XP.AttributeClass 在我们自己的程序集中,需要为自己的类或方法加上这类特性,参考如下:[CreaterAttribute(join,?2010年12月14日)]class?class1?{[CreaterAttribute(join,?2010年12月14日)][BugAttribute(true,?2010年12月14日)][ReviewerAttribute(hy,?2010年12月14日)]private?void?Test1()?{?}[ReviewerAttribute(hy,?2010年12月14日)]public?void?Test2()?{?}public?void?Test3()?{?}????}?4:统计分析模块XP.CodeStatistics XP.CodeStatistics是本工具的核心模块,包括了四个功能:获取程序集、获取IL代码、统计分析。核心类如下,本文不再赘述,请直接查看源码。?5:生成报表 由于对客户端程序集添加了如上的特性信息的,所以,通过分析程序集,我们可以很方法得到如下的报表:?备注:从项目管理的角度来说,本报表,仅仅是对工作量和代码质量的一个辅助参考,但有此参考,会比没有好。6:IL代码查看 细心的人,可能已经发现,上表所统计的仅仅是IL的代码行数,而不是实际代码行数。这是因为:1:首先,本分析工具是对程序集进行分析。所谓程序集,就是编译为IL代码的托管代码;2:理论上,从IL代码能反编译为托管代码(就像Reflactor一样),但是,太复杂了,我们没有去实现;3:即使反编译IL代码,得到的也不是原始的代码。如果要分析原始代码的,可以采用其它现成工具。所以,既然我们统计的是IL代码,所以,本工具的一个辅助功能就是IL代码的查看。本工具主页面:??[AttributeUsage(AttributeTargets.Class?|?AttributeTargets.Method,?AllowMultiple?=?false)]?public?class?CreaterAttribute?:?Attribute?{public?CreaterAttribute(string?creater,?string?createDate)?{Creater?=?creater;?CreateDate?=?createDate;?}public?string?Creater?{?get;?private?set;?}public?string?CreateDate?{?get;?private?set;?}?}?[AttributeUsage(AttributeTargets.Class?|?AttributeTargets.Method,?AllowMultiple?=?true)]public?class?ReviewerAttribute?:?Attribute????{?public?ReviewerAttribute(string?reviewer,?string?revi

您可能关注的文档

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档