C#特性Attribute的“.NET研究”实际应用之:代码统计分析

简介:   日常工作中,需要为程序集提供统计分析:   1:程序集方法数;   2:开发人员数目及各自所开发或REVIEW的方法数;   3:测试中,被标注有BUG的数目;   4:直接查看方法的IL代码;   鉴于以上统计的需要,特开发本EXE。

  日常工作中,需要为程序集提供统计分析:

  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。分别如下:

代码
 
  
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
public class CreaterAttribute : Attribute
{
public CreaterAttribute(string creater, string createDate)
{
Creater = creater;
CreateDate = createDate;
}
public上海企业网站设计与制作span style="color: #000000;"> 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上海闵行企业网站设计与制作e="color: #000000;"> reviewDate)
{
Reviewer = revi上海闵行企业网站制作ewer;
ReviewDate = reviewDate;
}
public string Reviewer { get; private set; }
public string ReviewDate { get; private set; }
}

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class BugAttribute : Attribute
{
public上海网站建设tyle="color: #000000;"> BugAttribute(bool isBug, string bugDate)
{
this.IsBug = isBug;
上海企业网站制作yle="color: #0000ff;">this.BugDate = bugDate;
}
public bool IsBug { get; private set; }
public string BugDate { get; private set; }
}

  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代码的查看。本工具主页面:

  源码下载地址:

http://download.csdn.net/source/2946944

目录
相关文章
|
8月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
252 8
|
8月前
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
227 3
|
8月前
|
存储 监控 算法
局域网上网记录监控的 C# 基数树算法高效检索方案研究
在企业网络管理与信息安全领域,局域网上网记录监控是维护网络安全、规范网络行为的关键举措。随着企业网络数据量呈指数级增长,如何高效存储和检索上网记录数据成为亟待解决的核心问题。基数树(Trie 树)作为一种独特的数据结构,凭借其在字符串处理方面的卓越性能,为局域网上网记录监控提供了创新的解决方案。本文将深入剖析基数树算法的原理,并通过 C# 语言实现的代码示例,阐述其在局域网上网记录监控场景中的具体应用。
195 7
|
10月前
|
开发框架 .NET API
.NET 10首个预览版发布:重大改进与新特性概览!
.NET 10首个预览版发布:重大改进与新特性概览!
380 3
.NET 10首个预览版发布:重大改进与新特性概览!
|
9月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
390 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
389 18
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
353 13
|
11月前
|
人工智能 机器人
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
214 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
222 6

热门文章

最新文章