青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

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)這里所包含的細節(jié)與發(fā)布的產(chǎn)品有不一致的地方。文中的信息均依據(jù)撰寫本文時的產(chǎn)品狀況,僅供您在規(guī)劃時參考。如有更改,恕不另行通知。Microsoft 擁有本文檔中的主題所涉及的專利、專利應(yīng)用程序、商標、版權(quán)或其他的知識產(chǎn)權(quán)。除非 Microsoft 以任何書面許可協(xié)議明確提供,向您提供本文檔并沒給予您使用這些專利、商標、版權(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ā)布未經(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)分析。

代碼分析工具

代碼分析工具的目標是使開發(fā)人員能夠?qū)ζ漤椖窟M行靜態(tài)分析,以檢測和修復(fù)代碼缺陷。為了實現(xiàn)這個目標,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ù)目標的信息。

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)準備函數(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í)行所需的精確時間(或其他衡量標準)。

分析應(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,則這些屬性包含了它們的默認值。

根節(jié)點有兩個子節(jié)點:Targets 節(jié)點和 Reports 節(jié)點。Targets 節(jié)點包含一個或多個目標,目標可以是 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ù)點,用戶都可以定位到更詳細的視圖。


8. Summary 視圖

Functions 視圖

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


圖 9. Functions 視圖

Caller/Callee 視圖

Caller/Callee 視圖提供在 Functions 視圖中所列函數(shù)的詳細信息,如圖 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 夢在天涯 閱讀(958) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET 、VS2005/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

搜索

  •  

積分與排名

  • 積分 - 1816192
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美亚洲日本一区| 久久久久久亚洲精品不卡4k岛国| 欧美激情精品久久久久久变态| 欧美高清你懂得| 亚洲精品国产精品国自产在线| 欧美激情bt| 亚洲图片欧洲图片av| 久久激情网站| 亚洲国产日韩欧美在线动漫| 欧美黄色一区二区| 亚洲在线一区二区三区| 老司机免费视频久久| 亚洲三级免费| 国产精品亚洲不卡a| 久久综合久久88| 夜夜爽www精品| 久久久久国内| 日韩一区二区精品视频| 国产欧美日韩另类一区| 欧美成人午夜77777| 亚洲视频一区二区在线观看 | 久久视频在线看| 亚洲日韩成人| 国产农村妇女毛片精品久久莱园子 | 久久久国产视频91| 亚洲精品日日夜夜| 久久九九国产| 一区二区三区四区蜜桃| 国产视频在线观看一区| 欧美久久视频| 久久久久久97三级| 亚洲视频综合| 亚洲第一级黄色片| 欧美在线中文字幕| 一本久久a久久精品亚洲| 合欧美一区二区三区| 欧美日韩一区二区三区免费看| 欧美一区二区免费观在线| 亚洲精品乱码久久久久久日本蜜臀| 欧美一级一区| 亚洲免费观看在线观看| 影音先锋日韩资源| 国产精品视频999| 欧美美女福利视频| 免费精品视频| 久久久人成影片一区二区三区观看| 一区二区高清| 亚洲精品少妇| 亚洲第一在线综合在线| 久久影视三级福利片| 欧美一区激情| 午夜视频在线观看一区二区| 99视频+国产日韩欧美| 亚洲国产第一| 黄色日韩网站视频| 国产午夜精品视频| 国产欧美日韩在线视频| 国产精品欧美风情| 欧美性猛交xxxx乱大交蜜桃| 欧美日本不卡视频| 欧美精品亚洲一区二区在线播放| 久久婷婷麻豆| 美女91精品| 麻豆成人在线播放| 久久在线免费| 麻豆久久婷婷| 欧美大片免费看| 欧美成人黄色小视频| 欧美成年人视频网站欧美| 久久综合导航| 欧美aaaaaaaa牛牛影院| 欧美电影在线观看| 欧美成人视屏| 欧美日韩免费一区二区三区| 欧美日韩精品一区二区三区四区| 欧美日本久久| 欧美日韩在线看| 国产精品久久久久久久久久三级 | 欧美在线播放一区| 久久精品亚洲一区| 久久精品国产一区二区三区免费看| 欧美在线日韩| 蜜臀久久久99精品久久久久久| 猫咪成人在线观看| 欧美精品激情在线| 欧美性大战久久久久久久| 国产美女精品一区二区三区| 国产一区二区日韩| 91久久一区二区| 一本久道久久综合婷婷鲸鱼| 亚洲午夜免费视频| 久久精品国产亚洲一区二区三区 | 亚洲在线视频观看| 久久精品盗摄| 欧美国产视频在线观看| 国产精品swag| 激情成人综合网| 亚洲三级免费| 欧美一区二区高清在线观看| 久久人人爽人人爽爽久久| 亚洲成色精品| 亚洲伊人久久综合| 久久精品人人做人人爽电影蜜月| 嫩草国产精品入口| 国产精品久久婷婷六月丁香| 韩国av一区二区三区在线观看 | 9l国产精品久久久久麻豆| 亚洲欧美日韩视频一区| 久久夜色精品国产亚洲aⅴ| 亚洲国产精品国自产拍av秋霞| 一区二区久久久久| 久久理论片午夜琪琪电影网| 欧美另类亚洲| 国内精品一区二区三区| 99国产精品99久久久久久粉嫩| 欧美亚洲免费电影| 亚洲国产精品久久久| 亚洲摸下面视频| 欧美激情2020午夜免费观看| 国产噜噜噜噜噜久久久久久久久 | 亚洲欧洲日产国产综合网| 亚洲一区观看| 欧美精品久久久久a| 国产视频一区在线观看一区免费| 日韩亚洲欧美精品| 久久婷婷综合激情| 一本色道久久综合亚洲精品按摩| 久久免费一区| 国产精品在线看| 一本一本久久a久久精品牛牛影视| 久久精品2019中文字幕| 亚洲美女啪啪| 蜜桃av一区二区| 黄色av日韩| 欧美一区二区网站| 日韩一区二区电影网| 久久亚洲电影| 国产午夜精品麻豆| 亚洲主播在线播放| 日韩午夜高潮| 欧美va天堂在线| 精品88久久久久88久久久| 午夜亚洲性色视频| 一本色道婷婷久久欧美| 欧美精品一区在线观看| 亚洲黄网站黄| 另类天堂av| 久久久久久69| 极品av少妇一区二区| 久久久www免费人成黑人精品 | 久久精品2019中文字幕| 国产女精品视频网站免费| 亚洲一区免费| 一区二区欧美在线观看| 欧美日韩大片| 一区二区久久久久| 亚洲人成毛片在线播放| 欧美韩日一区| 亚洲人成网站在线观看播放| 欧美韩国一区| 欧美www在线| 91久久午夜| 亚洲国产老妈| 欧美精品亚洲二区| 一区二区三区高清| 99精品视频免费观看视频| 欧美日韩精品是欧美日韩精品| 在线视频一区二区| 一区二区久久久久| 国产精品视频内| 久久精品色图| 老**午夜毛片一区二区三区| 亚洲国产免费| 亚洲精品视频一区二区三区| 欧美日韩国产精品自在自线| 一区二区三区精品| 亚洲一区二区在线看| 国产日韩欧美在线观看| 久久影院午夜论| 欧美88av| 亚洲男女自偷自拍| 欧美一区二区三区视频| 亚洲电影观看| 最新精品在线| 国产精品久久久999| 久久久久www| 欧美成人综合网站| 亚洲一区二区成人| 欧美在线播放一区| 亚洲精品免费一二三区| 一本久道久久综合狠狠爱| 国产欧美欧美| 欧美激情一区二区久久久| 欧美午夜精品久久久久久人妖| 欧美一区二区三区精品电影| 久久婷婷久久| 亚洲一区不卡| 久久久亚洲高清| 亚洲午夜电影网| 久久久精品日韩|