在軟體開發過程中,除了用到vc等編譯器之外,我們還經常使用一些協助工具輔助來提高工作效率,下面介紹我用過的一些工具,權當拋磚引玉了。 Beyond Compare ,這是個檔案和檔案夾對比工具,可以很方便的對比出兩個檔案夾或檔案之間的差別,在差別處會用不同的顏色標示出來。在軟體開發中有兩個典型的應用情境,一個是比較同一檔案不同版本之間的差異,以此來定位由版本差異引入的問題;另一個是,在有些軟體項目中會在主要版本上建立分支版本來支援不同的需求,在合并時,雖然版本管理工具會提供合并功能,但往往會出現衝突,這種情況下就需要手工合并,Beyond Compare就能派上用場了。Beyond Compare也在發展,功能越來越強大,現在的版本除了文本比較,貌似還能比較mp3、圖片等,有興趣的同學可以研究研究。 UltraEdit,一個好用的文字編輯器,比windows的notepad強多了,除了作為notepad的替代品,還能是編寫代碼,支援主流的程式設計語言,c/c++、java、perl等等。在跨windows/unix平台開發時,如果初期對unix下vi掌握的不是很熟練的情況下,可以用ultraedit在windows上編寫好代碼ftp到unix進行編譯調試。同時因為vi沒有文法著色功能,程式碼分析和查錯就會麻煩些。UltraEdit能很好的對代碼進行文法著色,同時能以ftp方式工作,這為跨平台開發提供了便利。以前用ultraedit寫過一個perl的統計代碼中魔數的小工具,還整合到vc中了,還高興了小半天。 SourceCounter,這個是無需安裝的綠色程式,用來統計原始碼的,支援c++、java、php、c#等語言,能對檔案夾進行遞迴統計。統計結果包括,檔案個數、大小、程式碼數、注釋行數等,常用來計算注釋比例,看看是否達到30%。新版本中還能根據設定的品質目標和成本參數來得出測試案例數、缺陷數和人月等成本。 Source Insight,這是個好東西,以前主要用它來分析原始碼結構,vc等編輯器也有轉到定位等導航功能,但比之Source Insight就是小巫見大巫了,Source Insight的尋找、定位、彩色顯示非常強大,它會產生自己的高效能的符號庫,包括類、結構、變數、函數等等,這是快速導航的基礎。當你維護一個代碼結構複雜的項目時,它能輔助你快速的理清代碼間的關係,提高解決問題的效率。 IncrediBuild,分布式編譯工具,編譯大型軟體是個漫長的過程,怎樣來提高編譯速度呢?用分布式編譯工具就可以做到。原理很簡單,就是將整個編譯工作通過計算後分配到網路中的多個電腦上執行。這樣一來,編譯速度會有數量級上的提高。具體到IncrediBuild的工作原理就是:在網路中有個機器做伺服器,其他機器安裝用戶端,伺服器接收到一個用戶端的編譯請求後,就根據所有其他用戶端的資源情況調度安排編譯任務。 PC-Lint,是個靜態代碼偵查工具,用來做代碼審查再好不過了,雖然編譯器會檢查文法,可嚴格程度不高,編譯器中的waring在PC-Lint中或許就是個error,PC-Lint可以檢查出那些雖然完全合乎文法要求,但很可能存在潛在的、不易發現的錯誤,PC-lint主要用於檢查 c/c++代碼,支援VC,VC.net等編譯器。 VMware,虛擬軟體,它可以虛擬出新的電腦,可以在虛擬電腦上安裝Windows、Linux等作業系統。使用VMware將使得使用者象擁有多台電腦一樣,典型的用途是跨平台開發或多平台開發,比如你的伺服器是基於linux,而用戶端是基於windows,那麼我們可以搭建一個環境,在一台windows的機器上裝個linux虛擬機器,這樣節省了硬體資源,而且在兩個系統間切換變的很容易,有利於提高開發和調式效率。 Visio,微軟的一個圖表製作工具,用來畫流程圖、時序圖等等,很久沒用了,不知道現在 版本變成什麼樣子了。 版本控制工具,我在工作中使用過三種,分別是vss、cvs、clearcase。 vss主要採用獨佔模式工作,只用於windows平台,在區域網路環境使用,能和vs系列的工具無縫結合,可在vs工具中直接做簽出簽入等操作,不過在項目的代碼量比較大的情況下結合使用會導致開啟工程的速度會大大降低。 Cvs,支援windows、linux等平台,能在區域網路和廣域網路使用,一般不採用獨佔模式,使用者可修改在自己許可權內的代碼,且不會單獨佔用,也就是說其他有許可權的使用者也可修改代碼,這樣可能會導致多人修改代碼後提交時,會造成衝突,這時需要合并。如果一個項目中有基於多個作業系統的代碼,且代碼又有共用關聯關係,那麼可以使用cvs作為的版本管理工具, 而且是免費的哦。 Clearcase,是IBM的產品,支援windodws、solaris等平台,IBM會提供完善的支援。Clearcase是個強大且複雜的東西,我使用過的也就是其中的準系統,印象最深的應該是多個分支並行開發管理,提供比較、合并功能很強大,比如一個bug在各個分支都存在,那麼我們先在一個分支中修改,然後把修改後的代碼和其他分支進行比較合并,這樣高效又安全。 rational purify,優秀的記憶體問題檢查工具,使用c/c++開發的人大都遇到過記憶體泄露問題,特別是代碼量大的時候,要靠人工檢視代碼來尋找記憶體流失那是相當痛苦的,這時purify簡直就是福音。這是個運行時工具,大概的步驟是,先配置好purify環境,然後編譯好你的程式,然後把你的程式放在purify中跑,保證你程式運行儘可能的覆蓋到所有代碼,然後結束程式運行,這樣purify最後會給出一份記憶體報告,報告會指出有記憶體問題代碼的位置。我在windows和solaris上使用過purify,感覺真不錯。和purify同一系列的工具還有Quantify和PureCoverage,Quantify主要用在最佳化程式的時候,它可以分析出函數的執行時間、調用次數等,開發人員可根據分析報告,對調用次數多且執行時間長的函數進行最佳化。PureCoverage這個是個代碼覆蓋檢查工具,我沒怎麼用過,有興趣的盆友可以瞭解下。 Boundschecker,這也是個記憶體問題檢查工具,前段時間在用vc2003做一個的項目,在調試狀態下運行退出時,Output視窗會提示memory leak資訊,這些資訊當然也可以協助查出記憶體流失的代碼,但比較麻煩,我順手裝了個Boundschecker,Boundschecker能很好的整合到VC中,選FinalCheck工作方式,充分運行程式後終止運行,Boundschecker會給出報告,根據報告,我解決的記憶體流失問題,Output視窗不再有memory leak資訊。 |