• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}

            Visual Studio 2005 Team System:構(gòu)建健壯而可靠的軟件

            Visual Studio 2005 Team System:構(gòu)建健壯而可靠的軟件

            發(fā)布日期: 6/21/2005 | 更新日期: 6/21/2005

            Kamran Iqbal
            Microsoft Corporation

            適用于:

            Microsoft Visual Studio? 2005 Team System

            摘要:描述 Visual Studio 2005 Team System 提供的代碼分析和性能工具。

            本文檔于產(chǎn)品投入生產(chǎn)之前編寫,因此您可能會發(fā)現(xiàn)這里所包含的細(xì)節(jié)與發(fā)布的產(chǎn)品有不一致的地方。文中的信息均依據(jù)撰寫本文時的產(chǎn)品狀況,僅供您在規(guī)劃時參考。如有更改,恕不另行通知。Microsoft 擁有本文檔中的主題所涉及的專利、專利應(yīng)用程序、商標(biāo)、版權(quán)或其他的知識產(chǎn)權(quán)。除非 Microsoft 以任何書面許可協(xié)議明確提供,向您提供本文檔并沒給予您使用這些專利、商標(biāo)、版權(quán)或其他知識產(chǎn)權(quán)的任何許可證。

            *
            本頁內(nèi)容
            簡介 簡介
            分析工具支持 分析工具支持
            我們的解決方案 我們的解決方案
            Visual Studio 中的工具集成 Visual Studio 中的工具集成
            小結(jié) 小結(jié)

            簡介

            要開發(fā)健壯而可靠的軟件,開發(fā)人員需要一套集成分析工具,來幫助他們在開發(fā)的早期檢測代碼缺陷和性能問題。

            分析工具支持

            過去,由于 Visual Studio 中缺少對代碼分析的支持,因此開發(fā)人員不得不購買第三方工具,構(gòu)建自定義分析工具,或者發(fā)布未經(jīng)分析的代碼。

            ?

            花費額外的成本購買第三方工具。

            從眾多的分析工具中選擇一個既能滿足軟件分析的要求又在預(yù)算限制范圍之內(nèi)的工具,未必總是一項輕松的任務(wù)。另外,這些工具可能沒有集成到 Visual Studio 集成開發(fā)環(huán)境 (IDE) 中,因此通常需要花費額外的時間來學(xué)習(xí)如何順利地使用它們。

            ?

            構(gòu)建自定義分析工具。

            構(gòu)建自定義分析工具需要資源、技能和經(jīng)驗。這對大多數(shù)公司中的開發(fā)團隊而言是不現(xiàn)實的,僅僅是少數(shù)公司可以擔(dān)負(fù)得起的選擇。

            ?

            發(fā)布未經(jīng)分析的代碼。

            在工時期限和預(yù)算限制緊張的情況下,發(fā)布未經(jīng)分析的代碼似乎是一種正確的方法,但如果軟件在部署之后發(fā)生故障,可能證明采用這種錯誤方法的代價不菲。

            我們的解決方案

            在 Visual Studio 2005 Team System 中,開發(fā)人員將會看到一套全新的、完全集成到 IDE 中的分析工具。這種分析工具與開發(fā)環(huán)境的緊密集成,可以幫助開發(fā)人員在產(chǎn)品開發(fā)的早期檢測并修復(fù)代碼缺陷和性能問題。這還可以幫助團隊有效且高效地管理軟件開發(fā)生命周期(Software Development Life Cycle,SDLC)。

            在 Visual Studio 2005 Team System 中,有兩類分析工具可用于構(gòu)建健壯而可靠的軟件:

            ?

            代碼分析工具

            ?

            性能工具

            在開發(fā)環(huán)境中集成分析工具可以幫助開發(fā)人員檢測與編碼、性能及安全性相關(guān)的問題。此外,可將代碼分析工具作為簽入策略的一部分用于每日構(gòu)建 (nightly build) 過程,使開發(fā)團隊能夠在將代碼簽入到源樹 (source tree) 之前修正缺陷。通過在開發(fā)的早期(而不是后期)更正問題,團隊可降低修復(fù)代碼缺陷的總體成本。

            除了完全集成到 IDE 中之外,開發(fā)人員還可以從命令行使用這些工具。

            Visual Studio 中的工具集成

            在 Visual Studio 2005 Team System 中,通過使用代碼分析工具和性能工具,開發(fā)人員可以對代碼進行靜態(tài)和動態(tài)分析。

            代碼分析工具

            代碼分析工具的目標(biāo)是使開發(fā)人員能夠?qū)ζ漤椖窟M行靜態(tài)分析,以檢測和修復(fù)代碼缺陷。為了實現(xiàn)這個目標(biāo),Visual Studio 2005 Team System 中包含了兩個工具:

            ?

            PREfast

            ?

            FxCop

            PREfast

            PREfast 是一個靜態(tài)分析工具,它為開發(fā)人員提供有關(guān)其 C/C++ 源代碼中可能存在缺陷的信息。PREfast 報告的常見代碼錯誤包括緩沖區(qū)溢出、未初始化內(nèi)存、空指針取消引用、內(nèi)存泄漏和資源短缺。

            IDE 集成

            為了使開發(fā)人員能夠自然地使用分析工具,可以將 PREfast 完全集成到 IDE 中。通過在項目的 Property Pages 上選擇 Yes (/prefast),開發(fā)人員可以輕松啟用 PREfast,如圖 1 所示。


            1. 啟用 PRE f ast

            在生成過程中,為源代碼生成的任何 PREfast 警告都出現(xiàn)在 Error List 中。這些警告包括缺陷路徑信息(如果有);雙擊突出顯示缺陷路徑的警告,可以進入代碼編輯器中的警告,如圖 2 所示。


            2. PRE f ast 警告

            #pragma support

            Developers can use the #pragma directive to treat warnings as errors, or disable warnings, as shown below.
            #pragma warning (error: 6260)  //treat warning 6260 as an error
            #pragma warning (disable: 6011)  //disable warning 6011
            

            批注支持

            PREfast 還支持批注以改善代碼分析的精確性。批注提供有關(guān)函數(shù)參數(shù)和返回類型的之前和之后條件的附加信息。

            #include 
            [SA_Post( MustCheck=SA_Yes )] double* CalcSquareRoot
            ( 
               [SA_Pre( Null=SA_No )] double* source, 
               unsigned int size
            )
            

            在上面的示例中:

            ?

            [SA_Post ( MustCheck=SA_Yes)] 要求調(diào)用方檢查 CalcSquareRoot 的返回值

            ?

            [SA_Pre ( Null=SA_No)] 要求調(diào)用方將非空參數(shù)“source”傳遞給 CalcSquareRoot

            命令行支持

            除了與開發(fā)環(huán)境完全集成之外,開發(fā)人員還可以從命令行使用 PREfast,如下所示。

            C:\>cl /prefast Sample.cpp
            

            FxCop

            FxCop 是一個靜態(tài)分析工具,它分析托管代碼程序集并報告有關(guān)程序集的信息,例如,與 Microsoft .NET Framework Design Guidelines 中闡述的編程和設(shè)計規(guī)則相沖突。FxCop 表示在分析過程中作為規(guī)則執(zhí)行的檢查。規(guī)則是一段托管代碼,該代碼分析程序集并返回有關(guān)它發(fā)現(xiàn)結(jié)果的消息。規(guī)則消息識別任何相關(guān)的編程和設(shè)計問題,并在可能的情況下,提供有關(guān)如何修復(fù)目標(biāo)的信息。

            IDE 集成

            為了使開發(fā)人員能夠自然地使用分析工具,開發(fā)人員可以在項目的 Property Pages 上選擇 Run FxCop,如圖 3 所示。


            3. 啟用 FxCop

            有關(guān)包含或排除規(guī)則,將規(guī)則作為警告或錯誤的附加選項,也可以在 Property Pages 中找到,如圖 4 所示。


            4. FxCop 規(guī)則

            一旦啟用 FxCop,在生成過程中,F(xiàn)xCop 就會在 Error List 中報告沖突,如圖 5 所示。


            5. FxCop 規(guī)則沖突

            Error List 提供有關(guān)規(guī)則沖突的信息和建議,以便于您糾正錯誤。只需在 Error List 中雙擊規(guī)則沖突,即可輕松地定位到觸犯了規(guī)則的代碼行。

            MSBuild 集成

            Visual Studio 的下一個版本從根本上改進了生成過程,其方法是引入一個新的、名為 MSBuild 的生成引擎。可以通過 MSBuild 系統(tǒng)調(diào)用 FxCop。這使開發(fā)人員能夠從命令行運行托管項目上的 FxCop。

            性能工具

            在 Visual Studio 2005 Team System 中,開發(fā)人員可以通過性能工具來度量、計算和定位代碼中與性能相關(guān)的問題。這些工具都完全集成到 IDE 中,以提供無縫、友好的用戶體驗。

            性能工具支持兩種分析方法:

            ?

            采樣

            ?

            使用儀器

            在采樣的過程中,數(shù)據(jù)收集基礎(chǔ)結(jié)構(gòu)將定期中斷正在執(zhí)行的應(yīng)用程序,以確定正在執(zhí)行的是哪個函數(shù),并增加函數(shù)的采樣計數(shù)。它存儲有關(guān)準(zhǔn)備函數(shù)調(diào)用的調(diào)用堆棧的信息。

            應(yīng)用程序退出后,收集到的所有數(shù)據(jù)會生成為一個報告文件,您可以使用 IDE 中集成的報告功能輕松地查看該文件。

            采樣的優(yōu)勢在于低開銷,因為這只是定期中斷應(yīng)用程序。這使得應(yīng)用程序的行為能夠更接近實際情況。這種方法的缺點是,它只能獲取已采樣函數(shù)的相關(guān)性能數(shù)據(jù)。有可能沒有對需要采樣的函數(shù)進行采樣,因而無法獲取有關(guān)該函數(shù)的信息。

            使用儀器的優(yōu)勢在于可以收集應(yīng)用程序的特定部分的精確性能數(shù)據(jù)。在使用儀器的過程中,“enter”和“exit”探針被插入到應(yīng)用程序的函數(shù)中。這些探針將報告返回給數(shù)據(jù)收集基礎(chǔ)結(jié)構(gòu),并允許用戶捕獲函數(shù)執(zhí)行所需的精確時間(或其他衡量標(biāo)準(zhǔn))。

            分析應(yīng)用程序

            分析應(yīng)用程序的首選使用模式是首先開始采樣,然后根據(jù)采樣所產(chǎn)生的結(jié)果檢測應(yīng)用程序的特定方面。

            分析應(yīng)用程序的過程相當(dāng)簡單。首先創(chuàng)建一個新的性能會話。在 Visual Studio 2005 Team System 中,可以使用 Performance Session Wizard 創(chuàng)建一個新的性能會話。

            Performance Session Wizard

            Performance Session Wizard 設(shè)置分析應(yīng)用程序的必要環(huán)境。在 Visual Studio 2005 Team System 中,該向?qū)?EXE、DLL 和 ASP.NET 應(yīng)用程序提供內(nèi)置支持。

            可以使用該向?qū)?chuàng)建一個 New Performance Session,如圖 6 所示。


            6. 啟動性能向?qū)?/b>

            要手動創(chuàng)建一個新的性能會話,請使用菜單上的 New Performance Session 命令。可以采用這種方法來手動分析其他類型的應(yīng)用程序(例如,Windows 服務(wù))。

            Performance Explorer

            性能會話作為運行會話向?qū)Щ蚴謩觿?chuàng)建會話的結(jié)果而創(chuàng)建。Performance Explorer 可以將其直觀地表示出來,如圖 7 所示。


            7. 性能資源管理器

            Performance Explorer 給用戶呈現(xiàn)了層次結(jié)構(gòu)。該層次結(jié)構(gòu)的根節(jié)點表示 Performance Session。這種節(jié)點的屬性是用戶在創(chuàng)建 Performance Session 時設(shè)置的屬性。如果用戶使用 Performance Session Wizard 創(chuàng)建會話,則這些屬性體現(xiàn)了用戶在使用向?qū)У倪^程中所選擇的值。如果用戶手動創(chuàng)建 Performance Session,則這些屬性包含了它們的默認(rèn)值。

            根節(jié)點有兩個子節(jié)點:Targets 節(jié)點和 Reports 節(jié)點。Targets 節(jié)點包含一個或多個目標(biāo),目標(biāo)可以是 EXE、DLL 或 ASP.NET 應(yīng)用程序。

            Reports 節(jié)點包含與某個特定 Performance Session 相關(guān)的所有報告。

            性能會話報告

            一旦應(yīng)用程序執(zhí)行完畢,系統(tǒng)就會將一個性能會話報告自動添加到 Reports 節(jié)點。可以通過下面的視圖來查看這些報告:

            Summary 視圖

            Summary 視圖為開發(fā)人員提供了其調(diào)查的起點。它顯示應(yīng)用程序執(zhí)行過程中開銷最高的函數(shù),如圖 8 所示。從該視圖中的每個數(shù)據(jù)點,用戶都可以定位到更詳細(xì)的視圖。


            8. Summary 視圖

            Functions 視圖

            Functions 視圖顯示在應(yīng)用程序的執(zhí)行過程中調(diào)用的全部函數(shù),這些函數(shù)存在于由該應(yīng)用程序引用的所有模塊之中,如圖 9 所示。該視圖顯示的信息取決于所用的分析方法(采樣與使用儀器)。


            圖 9. Functions 視圖

            Caller/Callee 視圖

            Caller/Callee 視圖提供在 Functions 視圖中所列函數(shù)的詳細(xì)信息,如圖 10 所示。


            10. Caller/Callee 視圖

            Callstack 視圖

            Callstack 視圖使用戶能夠向下搜索特定的調(diào)用跟蹤,并分析哪些跟蹤對性能的影響最大。


            11. Callstack 視圖

            Type 視圖

            Type 視圖提供有關(guān)某個特定類型的實例數(shù)量和總字節(jié)數(shù)的信息,如圖 12 所示。

            命令行支持

            可以通過命令行工具使用性能工具功能。這為用戶提供了靈活性,用戶既可以從命令行運行這些工具,又可以通過腳本來使用它們,以便自動執(zhí)行任務(wù)。

            posted on 2006-06-16 12:16 夢在天涯 閱讀(948) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NETVS2005/2008

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1811117
            • 排名 - 5

            最新評論

            閱讀排行榜

            国产精品综合久久第一页| 99久久国产亚洲高清观看2024| 亚洲精品tv久久久久| 久久久黄色大片| 久久午夜伦鲁片免费无码| 精品久久久久久无码中文字幕 | 国产2021久久精品| 热99RE久久精品这里都是精品免费 | 久久国产亚洲精品麻豆| 亚洲七七久久精品中文国产| 国产精品久久久久久搜索| 久久综合亚洲色一区二区三区| 亚洲va久久久噜噜噜久久狠狠| 国产精品免费久久久久影院| 久久久久久亚洲AV无码专区| 综合久久一区二区三区| 久久国产香蕉视频| 国产精品久久久福利| 久久久久成人精品无码中文字幕| 久久亚洲AV无码西西人体| 欧美777精品久久久久网| 2021久久精品免费观看| 少妇久久久久久被弄到高潮| 久久精品国产精品亚洲精品| 久久久久亚洲AV无码麻豆| 7777久久久国产精品消防器材| 亚洲精品美女久久久久99小说| 99久久精品国产一区二区三区| 国产成年无码久久久久毛片| 热re99久久6国产精品免费| 伊人久久精品无码二区麻豆| 亚洲级αV无码毛片久久精品| 久久国产亚洲精品| 伊人久久大香线蕉综合影院首页| 久久久久青草线蕉综合超碰 | 亚洲AV无码久久精品狠狠爱浪潮| 久久久国产精华液| 无码乱码观看精品久久| 97精品伊人久久大香线蕉| 久久午夜羞羞影院免费观看| 欧美精品一区二区精品久久|