<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      fxcop使用DataFlowRules規(guī)則集

            最近公司某項(xiàng)目布署到生產(chǎn)環(huán)境后,發(fā)現(xiàn)其內(nèi)存占用整體上只升不降,疑遭內(nèi)存泄漏,對(duì)程序的穩(wěn)定運(yùn)行帶來了極大的風(fēng)險(xiǎn)。

            解決內(nèi)存泄漏一般有兩種思路:靜態(tài)檢查與動(dòng)態(tài)監(jiān)控。在使用難度上動(dòng)態(tài)監(jiān)控遠(yuǎn)遠(yuǎn)大于靜態(tài)檢查,在使用順序上一般也是先靜后動(dòng)。靜態(tài)檢查一個(gè)比較好的工具就是fxcop。

            fxcop是微軟出的一款靜態(tài)代碼檢查工具,從1.36開始被VS集成,其獨(dú)立版本與VS版本的對(duì)應(yīng)關(guān)系是:1.35對(duì)應(yīng)VS2005,1.36對(duì)應(yīng)VS2008,10對(duì)應(yīng)VS2010。獨(dú)立版本有UI與命令行兩種使用方式,集成版本UI被VS集成,只有命令行可獨(dú)立使用。

            靜態(tài)代碼檢查工具本質(zhì)上是使用代碼檢查規(guī)則完成對(duì)代碼的檢查,fxcop也是如此。fxcop每個(gè)版本所包括的規(guī)則都略有不同,vs10集成版新增了一個(gè)DataFlowRules規(guī)則集,里面包括一條CA2000,Dispose objects before losing scope規(guī)則,在退出作用域前釋放可釋放的對(duì)象,而這也就是今天的主角。

            軟件與規(guī)則集之間并不是隨意組合的。默認(rèn)情況下某一版本的fxcop使用其自帶的規(guī)則。但是今天的情況有所不同,項(xiàng)目是08的,不方便轉(zhuǎn)成10版卻想使用10版的規(guī)則,且這個(gè)規(guī)則集無法被任何獨(dú)立版本的fxcop UI識(shí)別。在網(wǎng)上查了查,說是通過命今行可以識(shí)別,自己又嘗試了好久,終于成功,現(xiàn)在步驟記錄如下,使用的版本為vs10集成版。

            1.下載fxcop 10。官網(wǎng)上無獨(dú)立的安裝包,其被集成到windows sdk 里了,可以上Csdn上找網(wǎng)友上傳的單獨(dú)安裝包下載。

            2.安裝Fxcop 10,運(yùn)行,加入想要驗(yàn)證的dll,暫時(shí)選中任1條規(guī)則,分析。這樣做的目的是可以跟據(jù)提示補(bǔ)齊檢查所需的各種dll,其路徑會(huì)被記錄到Fxcop項(xiàng)目文件中。如果直接使用命令行,如果缺失dll則無任何提示,可能會(huì)報(bào)錯(cuò)終止分析,也可能能正常運(yùn)行但檢查不出我想要的結(jié)果。補(bǔ)充dll時(shí)注意dll版本號(hào)。新舊dll可能不能相互替代。

            3.補(bǔ)齊所有dll后,把所有默認(rèn)規(guī)則都取消,保存fxcop項(xiàng)目文件。一般來講只能保存到被檢查的dll的同級(jí)目錄。

            4.用記事本打開上一步保存的后綴名為fxcop的fxcop項(xiàng)目文件。這是一個(gè)xml格式的文件。在RuleFiles節(jié)加入上面提到的規(guī)則:

      <RuleFile Name="$(FxCopDir)\Rules\DataflowRules.dll" Enabled="False" AllRulesEnabled="False" >
          <Rule Name="Dispose objects before losing scope" Enabled="True" />
      </RuleFile>

            如果你熟悉這個(gè)文件,就會(huì)發(fā)現(xiàn)他的名字有點(diǎn)怪,其它規(guī)則集的規(guī)則的名稱是單詞大寫開頭且中間沒有空格,而這個(gè)特殊的規(guī)則集的規(guī)則則是首單詞首字母大寫且中間有空格。我只需要這個(gè)規(guī)則,而如果不指定規(guī)則名則會(huì)使用規(guī)則集內(nèi)的所有規(guī)則。由于與其它常規(guī)名字風(fēng)格不同,我找這個(gè)名字找了好久,最后通過VS找到了。打開任一項(xiàng)目,在代碼分析里單選此規(guī)則,然后保存項(xiàng)目文件,則在項(xiàng)目dll的同級(jí)目錄內(nèi)會(huì)生成一個(gè)"dll名.CodeAnalysisLog.xml"文件,里面的Rules/Rule/Name就記錄了選中的規(guī)則的實(shí)際名字。

            5.使用Win+R調(diào)出命令窗口,輸入cmd進(jìn)入命令行并定位到“Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop”,然后輸入命令:

      fxcopcmd /p:zc.FxCop /o:w:\zc.xml

            其中fxcopcmd是命令名,/p指定FxCop項(xiàng)目文件路徑,/o指定結(jié)果輸出路徑。等待一兩分鐘后,命令行停止運(yùn)行并重新出現(xiàn)輸入提示符,就可以去剛才指定的輸出路徑去查看結(jié)果了。

            6.結(jié)果文件是一個(gè)純Xml文件,并指定了渲染需要的xslt文件。在C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\Xml目錄內(nèi)有個(gè)FxCopReport.xsl文件,將其考到結(jié)果文件的同級(jí)目錄,然后用記事本打開結(jié)果文件,在第二行將其指定的xslt路徑改為同級(jí)目錄。這樣只要同時(shí)拷貝這兩個(gè)文件就可以隨時(shí)隨地查看了。

            以上就是整個(gè)操作過程。用一句話來表達(dá),就是使用fxcop UI生成項(xiàng)目文件,解決Dll依賴,然后手工加入需要的規(guī)則,執(zhí)行命令行得到結(jié)果,將xslt文件拷貝到結(jié)果文件同級(jí)目錄并更改結(jié)果文件的xslt文件指向,就可以隨地查看了。下面還有幾點(diǎn)需要額外注意。

            1.不管怎么折騰,獨(dú)立版本的UI始終無法識(shí)別這個(gè)規(guī)則集,VS08集成UI也無法使用。

            2.每個(gè)規(guī)則集都對(duì)應(yīng)一個(gè)dll,每個(gè)規(guī)則則對(duì)應(yīng)一個(gè)類。通過反編譯這些dll可以看到,DataFlowRules規(guī)則集繼承的是另外一套類,網(wǎng)上稱為Phoenix engine。要想成功使用它,就需要額外的一套操作類庫,我所知道的有“Microsoft.VisualStudio.CodeAnalysis.DataflowModels.dll”,“Microsoft.VisualStudio.CodeAnalysis.Phoenix.dll”,“Microsoft.VisualStudio.CodeAnalysis.Phoenix.xml”,“phx.dll”,“Runtime-vccrt-win-msil.dll”等。而獨(dú)立的fxcop默認(rèn)是沒有這些dll的,理論上只要補(bǔ)充了這些dll,10獨(dú)立版本的命令行可以使用這個(gè)規(guī)則集。(這個(gè)本人已經(jīng)驗(yàn)證,可以使用)

            3.1.35獨(dú)立對(duì)應(yīng).net 2.0,1.36獨(dú)立與vs08集成對(duì)應(yīng).net 3.5,10獨(dú)立與Vs10集成對(duì)應(yīng).net 4.0,這個(gè)規(guī)則集被包括在vs10集成中。由于平臺(tái)版本不一致,即使補(bǔ)充了這些dll,其它版本的命令行可能也無法使用這個(gè)規(guī)則集,包括1.35獨(dú)立,1.36獨(dú)立,vs08集成。

            4.一個(gè)表格總結(jié)一下:

        1.35獨(dú)立 1.36獨(dú)立 vs08集成 10獨(dú)立 vs10集成
      UI × × × ×
      命令行 × × ×

            參考的文章:

            FxCop 使用Data Flow Rules

            Is there a FxCop rule for local used IDisposable's?

      posted @ 2012-10-12 16:44  永遠(yuǎn)的阿哲  閱讀(546)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产片av在线观看国语| 最近中文字幕完整版2019| 上饶市| 国精品人妻无码一区免费视频电影| 国产又色又爽又黄的在线观看| 内射中出无码护士在线| 无码日韩人妻精品久久| 国产99在线 | 免费| 99久久无码私人网站| 91久久国产成人免费观看| 国产成人亚洲综合| 亚洲精品熟女一区二区| 免费无码高H视频在线观看| 麻豆精品国产熟妇aⅴ一区| 亚洲 一区二区 在线| 天堂网在线.www天堂在线资源| 艳妇乳肉豪妇荡乳xxx| 国产精品一区二区中文| 亚洲大老师中文字幕久热| 亚洲AV日韩AV综合在线观看| 久久人人妻人人爽人人爽| 日韩一区二区三区精品区| 98精品全国免费观看视频| 亚洲精品中文字幕码专区| 亚洲美女av一区二区| 四虎永久在线精品无码视频| 久久亚洲色www成人| 中文国产成人精品久久不卡| 新源县| 国精品91人妻无码一区二区三区 | 国产成人高清亚洲综合| 久久久亚洲欧洲日产国码农村| 中文人妻av高清一区二区| 亚州少妇无套内射激情视频| 色综合久久精品亚洲国产| 高清破外女出血AV毛片| 国产中文字幕一区二区| 欧美福利在线| 加勒比无码人妻东京热| 婷婷六月色| 尤物国产精品福利在线网|