3、sonarqube實踐

簡稱sonar,這裏僅針對sonar6.0。

一、sonar特性

    1)、sonar是一個開源、免費的代碼質量管理平臺,官方另有收費版本,提供更多的功能及支持。
    2)、支持各種語言,含主流的c、c++、object c、swift、java、php、c#、js、html、css、lua等,但c、c++、swift、lua等需要收費或授權,不支持    python。
    3)、支持插件開發,官方及第三方插件較爲豐富,社區較爲發達,版本更新較快,側面反映了sonar程序遺留問題較多。
    4)、能做簡單的代碼複審,能對問題進行分配及郵件提醒。
    5)、sonar內部主要使用restapi作爲數據交互方式,具體可以通過http://sonarip:sonarport/web_api查看,便於二次開發。

二、sonar目標

三、sonar工作原理

四、sonar架構設計

五、sonar幫助站點

    #官方文檔
    http://docs.sonarqube.org/display/SONAR/Documentation
    #github主頁
    https://github.com/SonarQubeCommunity
    #google+地址
    https://groups.google.com/forum/#!forum/sonarqube
    #stackoverflow地址
    http://stackoverflow.com/questions/tagged/sonarqube


六、項目實踐

    公司主要採用java、c#開發,少數python、c\c++\objectc項目,所以sonar能滿足大部分需求。
    我們對sonar的需求是:希望sonar能給我提供一個粗略的項目代碼質量報表,含違反規則數量、單測數量、單測覆蓋度及代碼重複度等。

    1)、java採用規則
    findbug【全部規則】+google-checkstyle+部分pmd規則。
    我們認爲findbugs大部分規則都是有用的,確實能起到減少bug或提高代碼質量的目的,所以findbugs規則幾乎全部採用,少數特殊規則,根據實際情況做刪減。
    google-checkstyle大部分規則都是符合實際的,但是如縮進等還是修改爲公司主流ide:idea的默認風格。
    pmd中有些規則稍顯過時,所以我們選取部分規則。

    2)、c#採用規則
    fxcop

    規則採用逐步累加方式,我們要求各項目組在每次累加之前,必須逐步較少觸發的規則,並逐步提高單測數量和單元測試覆蓋率。

七、存在的問題

    1)、免費版sonarlint for idea存在服務器違反規則與idea中同步下來的違反規則數量不一致;sonar for vs,只支持vs2015,且無法同步違反規則到vs本地編輯環境中。
    2)、c#,不支持方法級別的圈複雜度統計。
    3)、c#覆蓋度統計,我們使用opencover,使用vs自帶的CodeCoverage,在項目結構特別複雜及fake時,會發生一些莫名的錯誤。

八、成果

項目信息:

總體信息:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章