<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    http://www.chinaitpower.com/2005Nov/2005-11-25/209454.html


     

    簡介

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

    分析工具支持

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

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

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

    構建自定義分析工具。

    構建自定義分析工具需要資源、技能和經驗。這對大多數公司中的開發團隊而言是不現實的,僅僅是少數公司可以擔負得起的選擇。

    發布未經分析的代碼。

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

    我們的解決方案

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

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

    代碼分析工具

    性能工具

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

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

    Visual Studio 中的工具集成

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

    代碼分析工具

    代碼分析工具的目標是使開發人員能夠對其項目進行靜態分析,以檢測和修復代碼缺陷。為了實現這個目標,Visual Studio 2005 Team System 中包含了兩個工具:

    PREfast

    FxCop

    PREfast

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

    IDE 集成

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


    1. 啟用 PREfast

     

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


    2. PREfast 警告

     

    #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 還支持批注以改善代碼分析的精確性。批注提供有關函數參數和返回類型的之前和之后條件的附加信息。

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

    在上面的示例中:

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

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

    命令行支持

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

    C:\>cl /prefast Sample.cpp
    

    FxCop

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

    IDE 集成

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


    3. 啟用 FxCop

     

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


    4. FxCop 規則

     

    一旦啟用 FxCop,在生成過程中,FxCop 就會在 Error List 中報告沖突,如圖 5 所示。


    5. FxCop 規則沖突

     

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

    MSBuild 集成

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

    性能工具

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

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

    采樣

    使用儀器

    在采樣的過程中,數據收集基礎結構將定期中斷正在執行的應用程序,以確定正在執行的是哪個函數,并增加函數的采樣計數。它存儲有關準備函數調用的調用堆棧的信息。

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

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

    使用儀器的優勢在于可以收集應用程序的特定部分的精確性能數據。在使用儀器的過程中,“enter”和“exit”探針被插入到應用程序的函數中。這些探針將報告返回給數據收集基礎結構,并允許用戶捕獲函數執行所需的精確時間(或其他衡量標準)。

    分析應用程序

    分析應用程序的首選使用模式是首先開始采樣,然后根據采樣所產生的結果檢測應用程序的特定方面。

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

    Performance Session Wizard

    Performance Session Wizard 設置分析應用程序的必要環境。在 Visual Studio 2005 Team System 中,該向導為 EXE、DLL 和 ASP.NET 應用程序提供內置支持。

    可以使用該向導創建一個 New Performance Session,如圖 6 所示。


    6. 啟動性能向導

     

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

    Performance Explorer

    性能會話作為運行會話向導或手動創建會話的結果而創建。Performance Explorer 可以將其直觀地表示出來,如圖 7 所示。


    7. 性能資源管理器

     

    Performance Explorer 給用戶呈現了層次結構。該層次結構的根節點表示 Performance Session。這種節點的屬性是用戶在創建 Performance Session 時設置的屬性。如果用戶使用 Performance Session Wizard 創建會話,則這些屬性體現了用戶在使用向導的過程中所選擇的值。如果用戶手動創建 Performance Session,則這些屬性包含了它們的默認值。

    根節點有兩個子節點:Targets 節點和 Reports 節點。Targets 節點包含一個或多個目標,目標可以是 EXE、DLL 或 ASP.NET 應用程序。

    Reports 節點包含與某個特定 Performance Session 相關的所有報告。

    性能會話報告

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

    Summary 視圖

    Summary 視圖為開發人員提供了其調查的起點。它顯示應用程序執行過程中開銷最高的函數,如圖 8 所示。從該視圖中的每個數據點,用戶都可以定位到更詳細的視圖。


    8. Summary 視圖

     

    Functions 視圖

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


    圖 9. Functions 視圖

     

    Caller/Callee 視圖

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


    10. Caller/Callee 視圖

     

    Callstack 視圖

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


    11. Callstack 視圖

     

    Type 視圖

    Type 視圖提供有關某個特定類型的實例數量和總字節數的信息,如圖 12 所示。

    命令行支持

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

    小結

    Visual Studio 2005 Team System 包含一套新的、完全集成到開發環境中的分析工具,并且可以從命令行使用這套工具。通過提供代碼缺陷和性能瓶頸檢測,這些強大且易于使用的工具可以幫助開發人員構建健壯而可靠的軟件。

    posted on 2007-05-24 10:27 jinfeng_wang 閱讀(587) 評論(0)  編輯  收藏 所屬分類: ZZ
    主站蜘蛛池模板: 在线成人爽a毛片免费软件| 丝瓜app免费下载网址进入ios| 99免费观看视频| 亚洲成av人在线视| 在线观看特色大片免费网站| 亚洲AV无码专区电影在线观看| 你是我的城池营垒免费观看完整版| 国产日产亚洲系列最新| 巨胸喷奶水视频www免费视频| 伊伊人成亚洲综合人网7777| a毛片久久免费观看| 亚洲精品~无码抽插| 国产免费一区二区三区在线观看| 亚洲爱情岛论坛永久| 99久久99这里只有免费费精品| 亚洲综合av一区二区三区 | 看成年女人免费午夜视频| 亚洲av再在线观看| a级午夜毛片免费一区二区| 亚洲人成电影福利在线播放| 免费不卡视频一卡二卡| 久久综合亚洲色hezyo| 免费乱码中文字幕网站| 黄页免费在线观看| 亚洲午夜精品国产电影在线观看| 四虎影院免费视频| 一级毛片a女人刺激视频免费| 久久精品国产亚洲麻豆| 午夜性色一区二区三区免费不卡视频| 亚洲中文字幕一二三四区| 亚洲精品国产精品乱码不卞 | 免费特级黄毛片在线成人观看| 看Aⅴ免费毛片手机播放| 亚洲av一综合av一区| 黄瓜视频高清在线看免费下载| 免费无码午夜福利片 | 亚洲av无码成人精品区| 无码免费一区二区三区免费播放| 麻豆狠色伊人亚洲综合网站| 亚洲无线一二三四区手机| 在线看片免费人成视久网|