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
Code Reviewing Like a Champion
maltzj
520
39k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
390
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
The Cult of Friendly URLs
andyhume
78
6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
700
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Adopting Sorbet at Scale
ufuk
73
9.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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