《A3--任甲林--基于Sonar的質量數據分析.pdf》由會員分享,可在線閱讀,更多相關《A3--任甲林--基于Sonar的質量數據分析.pdf(46頁珍藏版)》請在三個皮匠報告上搜索。
1、基于基于SonarSonar的質量數據分析的質量數據分析任甲林麥哲思科技(北京)有限公司任甲林麥哲思科技(北京)有限公司任甲林任甲林公司:麥哲思科技(北京)有限公司 職位:CEO人物介紹:人物介紹:麥哲思科技與艾縱企業管理咨詢公司創始人麥哲思科技與艾縱企業管理咨詢公司創始人CMMICMMI高成熟度主任評估師,教員高成熟度主任評估師,教員COSMICCOSMIC實踐委員會成員,實踐委員會成員,COSMICCOSMIC中國分部主席中國分部主席主要從事提升軟件研發能力的培訓與咨詢主要從事提升軟件研發能力的培訓與咨詢工程經驗工程經驗:19931993年從事軟件開發年從事軟件開發,參與了參與了5050多
2、個項目的開發多個項目的開發20052005年從事軟件技術與管理咨詢年從事軟件技術與管理咨詢20072007年成立麥哲思科技(北京)有限公司年成立麥哲思科技(北京)有限公司曾為曾為100100多家軟件公司提供培訓和咨詢踐指南多家軟件公司提供培訓和咨詢踐指南目錄目錄C O N T E N T S1.Sonar1.Sonar檢測報告中的度量數據檢測報告中的度量數據2.2.可以執行的度量分析方法可以執行的度量分析方法3.3.橫向對比分析案例橫向對比分析案例4.4.縱向對比分析案例縱向對比分析案例5.5.分布規律分析案例分布規律分析案例6.6.因果規律分析案例因果規律分析案例SONARSONAR檢測報告
3、中的度量數據檢測報告中的度量數據0101數據分析數據分析的兩種路線的兩種路線目標導向型目標導向型探索分析型探索分析型度量目標采集數據管理結論分析數據已有數據分析數據管理結論采取措施SonarSonar的靜態分析報告的靜態分析報告SonarSonar分析報告中的度量數據分析報告中的度量數據比率數據注釋率代碼重復率語句覆蓋率屬性數據問題類型嚴重等級檢查項派生度量元缺陷密度方法的圈復雜度密度代碼的圈復雜度密度代碼質量綜合評價指數(代碼熵)規模數據代碼行方法個數類個數圈復雜度問題個數代碼熵的計算方式代碼熵的計算方式代碼熵=Bugs*10+阻斷類bug*30+漏洞*10+阻斷類漏洞*30+壞味道+阻斷類
4、壞味道*10_代碼行數項目熵=代碼熵*(1+重復率*100)*(1+每千行代碼的圈復雜度)可以執行的度量分析方法可以執行的度量分析方法0202可能的分析方法可能的分析方法橫向對比橫向對比縱向對比縱向對比分布規律分析分布規律分析因果規律分析因果規律分析橫向對比分析橫向對比分析0303橫向對比分析橫向對比分析對不同類的對象同一個時間段的數據進行對比分析案例:違規最多的規則案例:違規最多的規則違反最多的規則TOP10Sections of code should not be commented out919The diamond operator()should be used598Package
5、 names should comply with a naming convention591String literals should not be duplicated402Cognitive Complexity of methods should not be too high124Local variable and method parameter names should comply with a naming convention68Collection.isEmpty()should be used to test for emptiness68Class variab
6、le fields should not have public accessibility67Local variables should not be declared and then immediately returned or thrown65Override should be used on overriding and implementing methods62案例:缺陷扎堆分析案例:缺陷扎堆分析違規最多的文件TOP5BusinessMonitorBean.java478BillLogServiceImpl.java231ErrorServiceImpl.java159El
7、asticSearchUtils.java142SendTaskServicelmpl.java117復雜度最高的文件TOP5BusinessMonitorBean.java677SysParameter.java481BusinessEntity.java400SendTaskServiceImpl.java377ElasticSearchUtils.java364重復行最多的文件TOP5BusinessMonitorBean.java1697ApprovalPushAdjustEntity.java653TbEcpApprovalAdjust.java653ErrorBakEntity.j
8、ava593ErrorBakDealEntity.java531SonarSonar的分析結果要影響開發人員的行為的分析結果要影響開發人員的行為案例:多模塊靜態掃描的缺陷密度對比分析案例:多模塊靜態掃描的缺陷密度對比分析案例:多項目的項目熵對比分析案例:多項目的項目熵對比分析案例:不同程序員的缺陷密度對比分析案例:不同程序員的缺陷密度對比分析30.8830.8829.0429.0419.0419.0413.6413.6412.9112.9112.8912.8911.1611.1611.1611.169.939.93邱邱*馬馬*夏夏*李李*鄧鄧*陳陳*孫孫*朱朱*儲儲*程序員的缺陷密度對比分析程
9、序員的缺陷密度對比分析縱向對比分析縱向對比分析0404縱向對比分析縱向對比分析對同一對象不同時間段的數據進行對比分析案例:隨著時間的推移,代碼質量是否有所提升呢?案例:隨著時間的推移,代碼質量是否有所提升呢?案例:連續案例:連續2 2個季度的缺陷類型分布變化個季度的缺陷類型分布變化分布規律分析分布規律分析0505分布規律分析分布規律分析一組數據分布的位置與離散程度7-18歲男孩2023年最新身高基線什么是箱線圖什么是箱線圖案例:圈復雜度密度的性能基線案例:圈復雜度密度的性能基線案例:靜態掃描缺陷密度的性能基線案例:靜態掃描缺陷密度的性能基線案例案例:代碼重復率的性能基線:代碼重復率的性能基線案
10、例:代碼重復率分析案例:代碼重復率分析案例案例:代碼注釋率的性能基線:代碼注釋率的性能基線案例:項目熵的性能基線案例:項目熵的性能基線因果規律分析因果規律分析0606因果規律分析因果規律分析兩個變量之間的影響關系分析英國統計學家F.Galton在研究父子身高(1078對數據)關系時發現,后代的高度有向平均高度回歸的趨勢;離開均值越遠,所受到回歸的壓力也越大。散點圖分析散點圖分析通過散點圖可以觀察到以下六個現象:1.兩個變量是否相關;2.是線性相關還是非線性相關;3.是正相關還是負相關;4.是否存在異常點;5.是否需要分類建立回歸方程;6.是否需要分段建立回歸方程案例:圈復雜度密度與缺陷密度的關
11、系案例:圈復雜度密度與缺陷密度的關系案例:案例:代碼圈復雜度超過代碼圈復雜度超過1010的函數比與靜態檢查缺陷密度的關系的函數比與靜態檢查缺陷密度的關系小結小結要解決的問題(關注點、度量需求)可能的分析方法橫向對比分析橫向對比分析需要重點改進的哪些程序模塊?缺陷密度最高的top5模塊圈復雜度最高的top5模塊代碼重復率最高的top5模塊要找到需要重點提升質量水平的人對人按缺陷密度排名要找到需要重點提升質量水平的項目對項目組按缺陷密度排名找到要重點避免的問題top 5的缺陷類型類型分布找到測試最不充分的模塊單元測試覆蓋率最低的top5模塊找到將來可能維護成本最高的項目對項目熵進行排名分析縱向對比
12、分析縱向對比分析隨著時間的推移,個人的質量水平是否提升了每個季度/年份,個人的缺陷密度的下降趨勢每個季度/年份,個人的缺陷類型分布轉移趨勢隨著時間的推移,團隊的質量水平是否提升了每個月份/季度,團隊的缺陷密度的下降趨勢每個季度/年份,團隊的缺陷類型分布轉移趨勢分布規律分析建立分布規律分析建立性能基線性能基線函數(方法)的圈復雜度上限設置多少是合理的?圈復雜度的上限與下限一個函數(方法)的代碼行數設置多少是合理的?函數代碼規模的上限與下限代碼的注釋率維持在什么水平是正常的?代碼注釋率的上限與下限如何判斷一個函數的質量特別差或特別好?缺陷密度的上限與下限如何判斷一個函數的圈復雜度特別高?圈復雜度密
13、度的上限與下限某個項目的代碼重復率是否異常?代碼重復率的上限與下限如何綜合評價一個項目的代碼內在質量?項目熵的上下限因果規律分析建立因果規律分析建立性能模型性能模型代碼的缺陷密度是否受圈復雜度的影響呢?缺陷密度與圈復雜度的散點圖代碼的缺陷密度是否受代碼重復率的影響呢?缺陷密度與代碼重復率的散點圖量化研發管理的時機與量化研發管理的時機與技術技術分類時機量化管理技術工作量項目策劃時利用工作量與規模的回歸方程預測總工作量、迭代工作量。工作量利用工作量分布的性能基線預測每個工種或每個階段的工作量。工期對工期進行三點估算后,進行蒙特卡羅模擬,得到總工期的分布,預測工期目標是否能達成??傮w利用組織級的性能模型或性能基線預測項目定量目標達成的概率,調整影響因子或目標的取值范圍??傮w利用蒙特卡羅模擬,設計過程,裁剪活動及其投入。進展每天/每周/迭代通過燃盡圖、燃起圖、TEP/TCP圖跟蹤項目進展。進展通過折線圖或控制圖對產出規模進行跟蹤,識別異