將 Purify 整合到軟件開發和測試過程中

發表于:2009-04-21來源:作者:點擊數: 標簽:軟件開發Purifypurify
IBM Rational Purify 是一種精確檢測毀壞錯誤的工具,否則分析和修復都會十分困難。在軟件 開發 生命周期所有過程中有條理有系統地使用 Purify 將確保您能夠盡早檢測到這些錯誤。在這篇文章中,您將學習到如何通過自動操作它的使用以及將它整合到您的軟件開發
IBM® Rational® Purify® 是一種精確檢測毀壞錯誤的工具,否則分析和修復都會十分困難。在軟件開發生命周期所有過程中有條理有系統地使用 Purify 將確保您能夠盡早檢測到這些錯誤。在這篇文章中,您將學習到如何通過自動操作它的使用以及將它整合到您的軟件開發和促使過程中來獲得最大化的利益。

IBM® Rational® Purify® 是一種高級存儲錯誤檢測的工具,能夠幫助您們精確地找到很難被調試得存儲毀壞錯誤。您需要通過使用 Purify 來測試您的軟件,當您運行這個可測量的軟件的時候,Purify 就會仔細檢查每個存儲存取,并在它發生之前報告所有的毀壞錯誤。

Purify 在軟件開發生命周期中是一種非常有用的工具。開發人員可以用它來確保他們已經編寫的新代碼不會在不防之時導致任何存儲毀壞錯誤或者滲漏。測試工程師可以利用它獲取功能驗證和系統整合測試期間的存儲錯誤?,F場和支持技術工程師可以利用它診斷軟件部署完成之后遇到的存儲問題。由于在軟件開發生命周期早期檢測和修復缺陷的成本最低,所以最好在開發和測試階段獲取和修復盡可能多的問題。您可以通過在軟件開發生命周期中有條理且系統地使用 Purify,從而達到理想的狀態。實現它最好的辦法是自動化 Purify 的使用過程,并講它整合到您的軟件開發和測試過程中。

自動化工具的操作可以減少普通開支,并更有效地使用它,同時還會減少將它作為這個過程一部分的采用阻力。因此,自動化操作在流線型過程中是非常關鍵的。例如,您可以將 Purify 與您的單元或者煙霧測試單元整合在一起,這些單元是開發人員必須在報告任何代碼變更前必須運行的單元,并需要它們修復 Purify 所報告的所有新的存儲錯誤。用這種方法,只要發現錯誤就會馬上被報告和盡早修復,因為這個代碼變更在開發人員的腦子里仍然十分新鮮。類似的,您可以將 Purify 和您功能性和系統驗證測試單元整合在一起,您可能每夜或者每個周都在運行它。測試人員可以分析和現場檢測 Purify 所報告的存儲錯誤。這樣確保了新的存儲錯誤可以從他們引見的時間的一天或者一周內捕獲,這樣比釋放軟件之后捕獲要好得多。

在這篇文章中,您可以學習使用 Purify 以及將它整合到您的 makefiles 中:可以在一個滲漏的船舶中導航 C 嗎?嘗試一下 Purify。如果您已經對 Purify 十分熟悉,您可以跳過或者略過那篇文章。在這篇文章中,您將首先學習如何更改您的構建和測試環境,從而將 Purify 合并予其中,以及學習您可以用來與 Purify 選項整合在一起從而自動化使用 Purify 的轉換符號。然后您將看到一個例子,在這個例子中所有性能都是用來自動操作 Web 頁面上 Purify 錯誤概要的報告行為。

將 Purify 整合到您的構建和測試環境中

在將 Purify 整合到您的軟件開發和測試過程中的第一步是修改您的構建和測試系統。這個構建系統構建了一個應用軟件,而測試系統利用一個測試單元運行了這個應用軟件 (現實在圖 1中藍色區域中)。一般情況下,這個構建應用軟件和運行測試單元的過程都是自動的安排有序地每夜或者每周運行的工作。

您需要修改您的構建系統在沒有任何調試信息(釋放字節)的情況下構建 Purify 的應用軟件。比如構建一個 Purify 的應用軟件,利用調試信息(釋放字節)來構建應用軟件是合理的(盡管不是必要的),然后對它進行凈化。您還需要修改您的測試系統來運行帶有 Purify 的應用軟件的測試單元,另外還要將它與正常應用軟件進行運行。這些附加的構件和測試步驟顯示在下面圖 1中綠色的區域。做了這些變更之后,添加構建 Purify 的應用軟件并利用您的測試單元來運行它,從而每夜或者每周自動操作您的工作。在這篇文章的后面部分, 您將學習各種控制和自動操作這些行為的方法,當 Purify 檢測記憶錯誤或者漏洞的時候就會采取這些行為。


圖 1. 構建和測試系統中的修改

使用轉換符號

Purify 提供了各種轉換符號,您可以用來確定各種選項的值,比如 -view-file 和 -log-file(這些選項將 Purify 輸出分別發送到一個 Purify 視圖文件和 ASCII 日志文件分別)。Purify 用意味深長的擴展取代這些符號,并為保存數據計算一個唯一的文件名稱。 例如,您可以將這個程序名稱和過程 ID 置入這個日志文件的名稱中:

$ purify -log-file=./purifyerrors_%v_%p.plog cc -o progname foo.c bar.c

這個命令將創建一個可測量的可執行的可命名的 progname。如果您運行它,運行它的過程 ID 是1234,所有 Purify 的錯誤都將被記錄在一個名稱為purifyerrors_progname_1234.plog的文件。在這個日志文件名稱中,Purify 擴展 %v 為這個程序可執行名稱以及 %p 為這個過程 ID。

運行 Purify 之后添加一些操作

在運行您的可測試應用軟件之前對已經發生的進行自動化操作是很容易的,因為您可以控制一切。您可以控制和自動操作通過開拓各種能讓您添加自定義后置處理任務的 Purify 特性來運行這個應用軟件之后所發生的事情。您可以利用這個來報告這個可測試程序退出之后所有錯誤的概要。這樣做,您可以使用 Purify-run-at-exit 運行時選項。例如,如果您的可測試應用軟件是 test.pure,您可以利用下面這個選項來打印查詢的錯誤列表:

$ setenv PURIFYOPTIONS '-run-at-exit="if %z ; then \ echo \"%v : %e errors, %l bytes leaked.\" ; fi"'

緊跟在 -run-at-exit選項后面的字符串是由這個程序退出后的文件執行的。轉換符號替代已經制作,比如如果在這個運行過程中沒有 Purify 錯誤或者滲漏,它將 %z 轉變為 false。正因為如此,這個例子中所陳述的 if說:“只有當錯誤出現時才執行 'echo'?!边@個 echo命令,相反利用更多的替代字符串來報告存在錯誤的數量。在現存的程序之上,Purify 發送了一個與另一個十分相似的消息:

$ test.pure test.pure : 2 errors, 10 bytes leaked

這是一個樣本案例。然而,您可以將復雜的過程置于一個腳本,或者一個程序中,并且傳遞各種轉換符號作為變量到這個腳本或者程序中。例如:

$ setenv PURIFYOPTIONS '-run-at-exit="postprocess.csh %v %z %e %l "'

表格 1和表格2顯示了更多轉換符號替代字符串的詳細情況。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97