|
日常工作中,需要為程序集提供統計分析:
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 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 reviewDate)
{
Reviewer = reviewer;
ReviewDate = reviewDate;
}
public string Reviewer { get; private set; }
public string ReviewDate { get; private set; }
}
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class BugAttribute : Attribute
{
public BugAttribute(bool isBug, string bugDate)
{
this.IsBug = isBug;
this.BugDate = bugDate;
}
public bool IsBug { get; private set; }
public string BugDate { get; private set; }
}
NET技術:C#特性Attribute的實際應用之:代碼統計分析,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。