劉壯飛
【摘要】 隨著 IT行業(yè)中軟件產(chǎn)品的推陳出新,客戶對于軟件產(chǎn)品的要求也越來越高,因此如何高質(zhì)量的交付軟件代碼,及時(shí)、持續(xù)地對代碼質(zhì)量進(jìn)行分析并給出合理的解決方案就成為了當(dāng)下必須要解決的一個(gè)問題。本文主要從如何利用Sonar進(jìn)行代碼的質(zhì)量監(jiān)控、問題的閉環(huán)管理以及同企業(yè)現(xiàn)有的內(nèi)部問題管理平臺(tái)、消息統(tǒng)一推送平臺(tái)等工作流程的結(jié)合方面進(jìn)行表述,簡單闡述了基于Sonar的質(zhì)量分析平臺(tái)給軟件項(xiàng)目帶來的質(zhì)量保障和質(zhì)量提升。最后對自己在實(shí)際使用過程中遇到的問題進(jìn)行了總結(jié),并給出了相應(yīng)的解決方案。
【關(guān)鍵詞】 質(zhì)量分析 質(zhì)量管理 Sonar 軟件質(zhì)量
一、現(xiàn)存問題
IT系統(tǒng)在上線初,項(xiàng)目由于其唯一性、臨時(shí)性、成員的創(chuàng)造性和是團(tuán)隊(duì)開發(fā)的產(chǎn)物等特點(diǎn),流程規(guī)范性不夠、研發(fā)編程能力參差不齊,團(tuán)隊(duì)成員磨合期不夠等諸多因素,導(dǎo)致軟件質(zhì)量處于較低水平。如何提高代碼質(zhì)量,做好產(chǎn)品質(zhì)量控制就成為一個(gè)急需解決的課題。在進(jìn)行質(zhì)量控制的時(shí)候,必然會(huì)存在這樣或者那樣的問題,主要碰到的情況如下:
團(tuán)隊(duì)成員代碼風(fēng)格各異
潛在的低級(jí)錯(cuò)誤引發(fā)的bug
重復(fù)代碼段維護(hù)困難
糟糕的復(fù)雜度分布
整個(gè)項(xiàng)目代碼質(zhì)量無統(tǒng)一檢測標(biāo)準(zhǔn)
走查成本高,效率低,走形式,質(zhì)量低
核查的問題無閉環(huán)
缺乏有效的手段對項(xiàng)目的質(zhì)量進(jìn)行持續(xù)監(jiān)控
假如不對以上質(zhì)量問題進(jìn)行有效管控,那么必然在外部帶來客戶滿意度的下降,信任度降低,客戶方投資額的減少。內(nèi)部帶來員工工作量的增加,加班強(qiáng)度的增強(qiáng),間接管理成本增加,從而導(dǎo)致離職率增加,團(tuán)隊(duì)不穩(wěn)定,上級(jí)不滿意等各類情況。
那么,在軟件的質(zhì)量管理過程中,究竟是什么因素會(huì)對軟件的質(zhì)量產(chǎn)生重大的影響呢?毫無疑問,代碼質(zhì)量是核心關(guān)鍵。那么,代碼質(zhì)量是否有工具能夠進(jìn)行檢測呢?接下來讓我們一起來了解下怎么使用工具高效閉環(huán)核查代碼。
二、Sonar介紹
Sonar 是 Codehaus 上面的一個(gè)開源項(xiàng)目,用于管理源代碼的質(zhì)量。它從七個(gè)緯度來分析項(xiàng)目的質(zhì)量:重復(fù)、編碼規(guī)則、注釋、復(fù)雜度、單元測試、問題和架構(gòu)&設(shè)計(jì)。優(yōu)勢如下:
1)Sonar 并不是簡單地將各種質(zhì)量檢測工具的結(jié)果直接展現(xiàn)給客戶,而是通過不同的插件算法來對這些結(jié)果進(jìn)行再加工,最終以量化的方式來衡量代碼質(zhì)量,從而方便地行相應(yīng)的代碼質(zhì)量管理。
2)通過插件機(jī)制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續(xù)集成工具。
3)Sonar 不僅提供了對 IDE 的支持,如:Eclipse 和IntelliJ IDEA里聯(lián)機(jī)查看結(jié)果;同時(shí) Sonar 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用Sonar。
4)此外,Sonar 的插件還可以對 Java 以外的其他25+編程語言提供支持,對國際化以及報(bào)告文檔化也有良好的支持。
三、應(yīng)用案例
在項(xiàng)目中,利用Sonar的質(zhì)量分析功能,當(dāng)項(xiàng)目代碼被成功分析完成后,SonarServer 會(huì)將分析的結(jié)果存儲(chǔ)在相應(yīng)的數(shù)據(jù)庫中,并以報(bào)告的形式將分析結(jié)果以圖表的形式展現(xiàn)在頁面上,實(shí)現(xiàn)對項(xiàng)目的持續(xù)監(jiān)控,過程描述如下:
1、項(xiàng)目經(jīng)理或QA首先從代碼版本庫上獲取穩(wěn)定的軟件產(chǎn)品版本,使用Sonar,按照項(xiàng)目組設(shè)定的規(guī)則,進(jìn)行代碼的分析;
3、將掃描出來的問題形成問題分析報(bào)告,向項(xiàng)目經(jīng)理和項(xiàng)目組QA,供了解和決策。同時(shí),針對分析出來的代碼問題創(chuàng)建問題視圖,自動(dòng)調(diào)用企業(yè)任務(wù)管理平臺(tái)創(chuàng)建問題單;
5、各組長將收到的問題單進(jìn)行分析,研發(fā)針對問題進(jìn)行設(shè)計(jì)和解決,并完成程序編碼調(diào)整,最后通過版本管控平臺(tái)提交代碼。同時(shí),由系統(tǒng)自動(dòng)通過消息推送平臺(tái)將該任務(wù)單信息告知具體的研發(fā)。
6、研發(fā)在代碼提交的時(shí)候根據(jù)代碼所屬的歸屬模塊,調(diào)用該問題視圖數(shù)據(jù)進(jìn)行判斷,若在問題視圖中存在該模塊,則限制代碼的提交,并要求修改后提交代碼,從而達(dá)到提前預(yù)防問題代碼上庫的情況;
8、研發(fā)回復(fù)任務(wù)單,完成問題的修復(fù)和解決,企業(yè)內(nèi)部問題管理平臺(tái)判斷問題處于關(guān)閉狀態(tài),調(diào)用質(zhì)量分析平臺(tái)的Api,刪除該問題模塊對應(yīng)的問題,實(shí)現(xiàn)問題的閉環(huán)管理。
通過上述過程,給項(xiàng)目提供一個(gè)全流程的、規(guī)范化的問題處理流程,有效解決軟件產(chǎn)品質(zhì)量的分散問題,提升軟件產(chǎn)品的質(zhì)量管理效率,給軟件產(chǎn)品的代碼質(zhì)量帶來了以下好處:1)利用工具和創(chuàng)新方法實(shí)現(xiàn)對代碼質(zhì)量的閉環(huán)管理,有分析、有解決和有后評(píng)估,從而提升項(xiàng)目管理、研發(fā)的工作效率;2)大大提升了研發(fā)環(huán)節(jié)的代碼走查、問題的預(yù)發(fā)現(xiàn)等環(huán)節(jié)的工作質(zhì)量和效率,確保了軟件產(chǎn)品的質(zhì)量,避免軟件的質(zhì)量問題到測試和生產(chǎn)環(huán)節(jié)才發(fā)現(xiàn)問題,提升客戶滿意度。
四、總結(jié)
代碼質(zhì)量管理對提高項(xiàng)目質(zhì)量意義重大。本文介紹了Sonar 的特點(diǎn)和實(shí)際運(yùn)用過程,并從項(xiàng)目實(shí)戰(zhàn)的角度講解了使用Sonar進(jìn)行項(xiàng)目代碼質(zhì)量管理的流程和注意事項(xiàng),以期達(dá)到拋磚引玉的目的。