給喜歡刨根問底的.NET程序員的一個禮物——TypeMonster


上圖是NET程序集分析工具TypeMonster的截圖(這是一個原型,已經可以運作)。它顯示了從 Object 到 FrameworkElement 的繼承鏈。

TypeMonster是一個輔助分析工具,幫助程序員分析一個.NET類型的內部結構,及其內部的運作機制。

從這一點看TypeMonster的功能看起來和.NET Reflector類似。但實際上兩者的定位是不同的。

TypeMonster核心理念,並不僅僅是告訴你目標程序集里“有什么”,而是為你提供一個精心設計的分析工具集,讓你弄清楚“為什么”目標程序集里有這些東西。

從上面的運行圖例可以看出TypeMonster的用戶界面是經過精心設計的,因此我們有理由相信使用它完成類型進行分析是一件愉快的事。

TypeMonster內置了一套好用的筆記與注解功能,分析人員可以直接在TypeMonster內編寫分析筆記——這是對我而言最重要的功能!

因為工作的關系,我經常需要分析一些程序集內部的運作機制。過去我一直是使用.NET Reflector,后來也試過其他一些工具,例如JustDecompile。

這些工具都很強大。但是我最苦惱的地方是,這些工具的設計風格,基本上還是非常傳統的Windows應用程序風格——使用各種內置成品控件,例如菜單、按鈕、樹形控件、擁擠的界面划分等等。

看看現在平板電腦上的設計,傳統桌面平台的設計簡直就是石器時代。我並不是說平板上的就都是好東西,平板上的垃圾軟件和游戲堆得比山還高,但是平板上引入的新的設計方法,是值得借鑒的。並且我認為在桌面平台上也應該可以很好的再現出來。

帶着這樣的想法,我開始來制作TypeMonster。上面的截圖是來自真實可運行的版本,但是在發布第一個版本之前我還需要為它添加許多的細節。

目前我已經為它開發了一個符合ECMA-355(5e)規范的反匯編引擎。在此基礎上,我希望不久后,TypeMonster也可以將一個方法反編譯為等價的C#或者VB.NET代碼。

但我認為這並不是重點。因為這件事.NET Reflector已經做得很好了,我會花費更多的精力,來完善TrustMore的視覺細節,並完善其他功能。

接下來要完成的工作:

  • 補充一些過濾條件,例如 public、internal 等等
  • 為Field和Property顯示出其對應的類型信息
  • 為Method顯示出參數列表和返回值類型信息
  • 對重載的Method創建一個組,而不是顯示一系列同名的函數
  • 能夠掃描GAC,創建一個cache文件快速完成類型匹配和檢索
  • 其他

我已經在這一程序上花費了超過一個月的時間。並且我將繼續在其上花費更多的時間。

如果順利,在下周就可以發布第一個預覽版本。如果你關注這一項目,歡迎你訂閱我在博客園的博客。如果有什么建議或者疑問,歡迎留言。如果有什么批評,懇請輕拍。

最后強調一下,TypeMonster 會是一個開源、免費的軟件。很快會托管在 Github 上。

謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM