Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
.NET分享會-程式碼分析工具.pdf
Search
hatelove
April 27, 2012
1
5.2k
.NET分享會-程式碼分析工具.pdf
hatelove
April 27, 2012
Tweet
Share
More Decks by hatelove
See All by hatelove
1. 在沙箱中開發
hatelove
12
3k
BDD in .NET - TDD 在實務上的最後一塊拼圖
hatelove
4
2.8k
OO training 基本原則整理
hatelove
2
5.2k
OO training homework 3 review and summary
hatelove
1
11k
OO training homework 2 review and summary
hatelove
1
4.6k
OO training homework 1 review and summary
hatelove
1
8k
Object Oriented Training - Session 4
hatelove
1
5.1k
Object Oriented Training - Session 3
hatelove
1
11k
Object Oriented Training - Session 2
hatelove
1
4.8k
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
96
Bash Introduction
62gerente
608
210k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Designing for humans not robots
tammielis
250
25k
Building an army of robots
kneath
302
43k
YesSQL, Process and Tooling at Scale
rocio
169
14k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Unsuck your backbone
ammeep
668
57k
Writing Fast Ruby
sferik
627
61k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Faster Mobile Websites
deanohume
305
30k
Transcript
None
苦痛的案例 目的 品質指標 工具簡介 平順的案例
結論
被專案時程壓到喘不過氣的91,為了讓專案準時 上線而無所不用其極,最後氣力放盡的同時,總 算將專案的功能完成且上線。 主管體恤91被專案時程操到無力,改調91去維護 組以降低壓力。但91打開現有專案準備維護時, 只有『WTF!!』的感想,這code怎麼可以寫的這 麼髒、這麼黏、這麼亂。
小風接手91原本的專案,預計增修一些功能,小 風打開專案後,也脫口而出:『WTF!!』
None
花了半個小時在討論命名跟風格的問題 花了半個小時在解釋一個,看起來很難懂, 需要作者step by step解釋的function 好像在哪看過與這段code一樣的邏輯?
一個function捲了好幾頁還沒結束? …
透過工具提供一個客觀的數據,以供評斷是 否有bad smell
可維護性 設計的彈性 安全 效能 › 壓力測試與負載測試(不在今天討論範圍)
風格一致性 複雜度 區塊深度 繼承深度 程式碼相似度
弱點掃描
None
目標 › 風格一致性 特色 › 可自訂適合團隊或現行專案的rule template ›
免費 › 與Visual Studio整合 建議門檻 › 全數通過自訂的rule set
使用方式 設定 輸出結果
目標 › 複雜度 › 區塊深度 特色 › 免費
› 有自己的GUI › 支援多種語言(無法同時多種) › 針對單一檔案分析
建議門檻 › 複雜度 嚴格:10 一般:15 › 區塊深度
嚴格:4 一般:5
使用方式 注意事項 輸出結果
目標 › 綜合維護性指標 › 循環複雜度 › 繼承深度 › 程式碼行數
特色 › 與VS2010完全整合,但需Premium以上的版本 › 無法針對WebSite
建議門檻 › 綜合維護性指標(針對專案) 75 › 循環複雜度(針對function,也就是成員) 15
› 繼承深度(針對類別) 5 建議可以依照自訂類別開始計算繼承深度,數據會更為 實用 › 程式碼行數(針對function) 30
使用方式 注意事項 輸出結果
目標 › 程式碼相似度 特色 › 非商用與教育可試用 › 可設定掃描門檻與篩選條件
› 支援多語言 評斷標準建議 › 20/25行以上相似的區塊,應作說明
使用方式 輸出結果
目標(全面性的分析規則防護) › 設計警告 › 全球化警告 › 互通性警告 › 維護性警告
› 行動力警告 › 命名警告 › 效能警告 › 可攜性警告 › 可靠性警告 › 安全性警告 › 用法警告 › 程式碼分析原則錯誤
特色 › VS2010 Premium以上才有整合至VS2010中 版本太低,可自行安裝FxCop套件 › 內建提供對應的xsl,供網頁輸出結果
評斷標準建議 › 建議按照系統需求自訂
使用方式 輸出結果
目標 › 頁面效能分析 特色 › Firefox, Chrome plugin
› 不支援IE 評斷標準建議 › 建議針對需求,強調各項標準的等級門檻 › 綜合等級建議至少要B
使用方式
導入工具 訂定門檻 Review前 通過門檻 針對需求 Review 簽入原則 / daily build
產出報表
客觀的資訊來訂立標準 自動化的工具來節省時間 持續整合、持續回饋 透明化的健康報告資訊
StyleCop簡介 SourceMonitor簡介 VS2010 程式碼度量簡介 Simian簡介
FxCop/VS2010程式碼分析簡介 Yslow官網 CI簡介
None