程序員離不開代碼檢查,有的是技術團隊是每週五進行一次代碼審覈,有的團隊是用Review Board等工具進行Code Review。有的團隊是先用工具進行代碼的靜態分析,再進行人爲的Code Review。java
下面咱們總結了 代碼靜態分析工具、代碼審覈工具、代碼質量管理平臺、iOS分析工具。包含了java等服務端的工具,還有iOS的工具。git
1、代碼靜態分析程序員
靜態分析 是指在不運行代碼的條件下,進行代碼分析。架構
靜態分析 能夠是標示可能的錯誤代碼,或者不符合規範的代碼。svn
好比 規範要求每一個方法名首字母要小寫,而後你寫成了大寫,靜態分析工具就能分析出來。工具
java等服務端代碼能夠用:單元測試
一、Checkstyle :經過檢查對代碼編碼格式,命名約定,Javadoc,類設計等方面進行代碼規範和風格的檢查,從而有效約束開發人員更好地遵循代碼編寫規範。測試
二、FindBugs :經過檢查類文件或 JAR 文件,將字節碼與一組缺陷模式進行對比從而發現代碼缺陷,完成靜態代碼分析。FindBugs 既提供可視化 UI 界面,同時也能夠做爲 Eclipse 插件使用。編碼
三、PMD :經過其內置的編碼規則對 Java 代碼進行靜態檢查,主要包括對潛在的 bug,未使用的代碼,重複的代碼,循環體建立新對象等問題的檢驗。插件
2、代碼審覈工具
Code Review也就是代碼審覈。代碼審覈工具最大的意義在於:只有通過別人審覈經過的代碼才能提交到 git或者svn的服務端。這樣就保證了代碼的水準。
經常使用的代碼審覈工具:Review Board、Github 、Codestriker、Groogle 、Rietveld、JCR等。
3、代碼質量管理平臺
經常使用的:SonarQube,能夠檢測下面的問題:
一、糟糕的複雜度分佈
文件、類、方法等,若是複雜度太高 將難以改變,並很容易出現問題。
二、重複
sonar能夠展現源碼中重複嚴重的地方
三、缺少單元測試
統計單元測試覆蓋率
四、沒有代碼標準
sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具規範代碼編寫
五、沒有足夠 的 或者過多 的註釋
沒有註釋將使代碼可讀性變差,過多的註釋是冗餘的
六、潛在的bug
sonar能夠經過PMD,CheckStyle,Findbugs等等代碼規則檢測工具檢測出潛在的bug
七、糟糕的設計
經過sonar能夠找出循環,展現包與包、類與類之間的相互依賴關係
能夠檢測自定義的架構規則
檢測耦合
4、
iOS的靜態檢測(不能檢測代碼規範)
一、Facebook Infer
Facebook 稱該工具幫助其每月檢查出數百個應用中潛在的 Bug,例如一些空指針訪問、資源和內存泄漏等等
二、Clang Static Analyzer
三、使用Uncrustify 格式化 Xcode代碼