[Tool]靜態程式碼分析-FxCop
前言
這一篇文章要介紹免費(fèi)的靜態(tài)程式碼分析工具是FxCop,可以幫助我們快速的瞭解系統(tǒng)是否符合較好的設(shè)計(jì)原則,有哪一些原則可能是沒注意到的,有哪一些原則可能是可以加強(qiáng)的設(shè)計(jì)。
靜態(tài)程式碼分析的工具也需因地因時(shí)制宜,時(shí)間與範(fàn)圍有限,應(yīng)將資源投注在重點(diǎn)上。
FxCop其實(shí)跟Visual Studio較進(jìn)階版本裡面的『程式碼分析』功能一樣,只是Visual Studio進(jìn)階的版本直接內(nèi)建在IDE裡面。這邊要介紹的原因是,就算沒有安裝Visual Studio,(例如CI server上)還是想對(duì)版本庫的程式碼進(jìn)行靜態(tài)程式碼分析,我們還是可以透過FxCop的Console mode來對(duì).exe與.dll檔,進(jìn)行分析。
而這一篇文章,先以IDE工具為例,來方便讀者瞭解怎麼使用。
載點(diǎn)
是的,您沒看錯(cuò),我也不知道為什麼FxCop的安裝檔要放在Windows SDK的工具裡面。我記得以前有獨(dú)立的安裝檔,但現(xiàn)在載點(diǎn)都失效了。(為了這篇介紹,我還是重新安裝了一次SDK)
使用介紹
當(dāng)點(diǎn)選行號(hào),則會(huì)使用Visual Studio開啟該檔該行,與一般的錯(cuò)誤清單使用方式一樣。
當(dāng)不瞭解為什麼這樣的code會(huì)違反rule時(shí),可以點(diǎn)選Help的link,則會(huì)開啟MSDN網(wǎng)頁,針對(duì)該rule提供較詳細(xì)的解說。
[註]範(fàn)例中違反的rule的MSDN reference
若其中有太多規(guī)則,因應(yīng)系統(tǒng)我們想刪減檢查規(guī)則,或是針對(duì)某個(gè)特定分類的rule,例如全球化、效能、安全性來進(jìn)行分析,可點(diǎn)選『Rules』的頁籤,將需要的rule打勾即可。
例如,method中都沒有使用到this,則performance rule會(huì)建議將此方法宣告成static,因?yàn)榕cinstance無關(guān),直接宣告成屬於類型的靜態(tài)方法,可以節(jié)省內(nèi)存記憶體消耗。
FxCop用法就這麼簡(jiǎn)單。
使用VS2010 Premium以上版本
若您使用的Visaul Studio 2010為Premium版本以上,則可以直接在方案總管上,選擇『執(zhí)行程式碼分析』。
跑起來會(huì)久一點(diǎn)點(diǎn),因?yàn)檫€會(huì)先全部建置一遍,再針對(duì)dll去作分析。(才叫做靜態(tài)程式碼分析)
在方案的屬性中,可以設(shè)定每一個(gè)專案,適用哪一些rule set。
而在每一個(gè)專案的屬性中,也可以設(shè)定該專案的程式碼分析規(guī)則有哪些,這些規(guī)則都可以複選。另外,可以選擇是否要在此專案建置時(shí),同時(shí)執(zhí)行程式碼分析。(方便,但我通常不用,一者是我很習(xí)慣告一段落就建置,再來是建置時(shí)分析程式碼要等待的時(shí)間太長(zhǎng))
同樣的,VS2010也有很棒的Addin: FxCop Runner,即使不是用Premium版本以上,也可以輕鬆的在VS2010上使用FxCop的功能來達(dá)到程式碼分析的目的。
CodePlex上也有針對(duì)FxCop有許多客製化rule或其他應(yīng)用的open source project,請(qǐng)參考這邊。
結(jié)論
善用工具,事半功倍。透過這些工具上面的輔助說明,可以讓我們學(xué)到更多好的設(shè)計(jì),原則的存在一定有其原因,預(yù)防勝於治療,在發(fā)生問題之前學(xué)習(xí),可以讓學(xué)習(xí)更有趣,讓自己更有價(jià)值,讓工作壓力更減輕。
MSDN Reference
http://www.dotblogs.com.tw/hatelove/archive/2011/12/18/introducing-fxcop-and-vs2010-static-code-analysis-tool.aspx
總結(jié)
以上是生活随笔為你收集整理的[Tool]靜態程式碼分析-FxCop的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中介者模式小记【原创】
- 下一篇: 基本通信模型