自動化代碼質(zhì)量管理_第1頁
自動化代碼質(zhì)量管理_第2頁
自動化代碼質(zhì)量管理_第3頁
自動化代碼質(zhì)量管理_第4頁
自動化代碼質(zhì)量管理_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、自動化代碼質(zhì)量管理Sonar+cppCheck+pcLint1 Sonar簡介Sonar是一個用于代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量,可以從七個維度檢測代碼質(zhì)量。通過插件形式,可以支持包括java,C#,C/C+,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質(zhì)量管理與檢測。sonarQube能帶來什么?Developers' Seven Deadly Sins1. 糟糕的復雜度分布文件、類、方法等,如果復雜度過高將難以改變,這會使得開發(fā)人員難以理解它們,且如果沒有自動化的單元測試,對于程序中的任何組件的改變都將可能導致需要全面的回歸測試

2、。2. 重復顯然程序中包含大量復制粘貼的代碼是質(zhì)量低下的,sonar可以展示源碼中重復嚴重的地方。3. 缺乏單元測試sonar可以很方便地統(tǒng)計并展示單元測試覆蓋率。4. 沒有代碼標準sonar可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測工具規(guī)范代碼編寫5. 沒有足夠的或者過多的注釋沒有注釋將使代碼可讀性變差,特別是當不可避免地出現(xiàn)人員變動時,程序的可讀性將大幅下降而過多的注釋又會使得開發(fā)人員將精力過多地花費在閱讀注釋上,亦違背初衷6. 潛在的bugsonar可以通過PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測工具檢測出潛在的bug7. 糟糕的設(shè)計(原

3、文Spaghetti Design,意大利面式設(shè)計)通過sonar可以找出循環(huán),展示包與包、類與類之間的相互依賴關(guān)系可以檢測自定義的架構(gòu)規(guī)則通過sonar可以管理第三方的jar包可以利用LCOM4檢測單個任務(wù)規(guī)則的應用情況檢測耦合通過sonar可以有效檢測以上在程序開發(fā)過程中的七大問題。2 SonarQube安裝社區(qū)開源軟件的共享、免費特性不可避免的決定了其發(fā)布版本存在的、軟件契合度上的不友好性。若幻想如windows軟件套裝一樣的傻瓜式安裝,將是不切實際的。筆者經(jīng)過實踐,總結(jié)了較新的版本安裝過程。筆者在windows上搭建Sonar代碼質(zhì)量管理平臺,所用的各開源軟件版本號、及說明如下:Jav

4、a開發(fā)環(huán)境 jdk1.7.0_75Sonarqube/Sonar-Runner/cxx等開源軟件都是java語言開發(fā)的,jdk或jre是運行這些程序的基礎(chǔ)。sonarqube-5.1.2Sonar平臺的web接口;管理員或者代碼作者等候后可以基于項目查看代碼的審查結(jié)果。每次運行時,都是主動連接數(shù)據(jù)庫,并監(jiān)聽某個端口(默認是:9000)的http請求。sonar-runner-2.4sonar-examples-master分析代碼的重復率、復雜度;從sonarqube獲取可用的plugin插件,來解析特定目錄下由第三方工具(pclint/cppcheck/vagrand)生成

5、的代碼審查、覆蓋率統(tǒng)計等xml格式的報告,并存儲到數(shù)據(jù)庫,以供sonarqube使用web展示。第三方工具可以從各維度對代碼質(zhì)量進行審查。sonar-examples-master.zip是用來驗證sonar能夠正確運行的、包含20余種語言的示例代碼。mysql-installer-community-.msi用以支撐sonarqube、sonar-runner運行的大型數(shù)據(jù)庫;Sonarqube自帶的h2數(shù)據(jù)庫,效率低、管理的數(shù)據(jù)表很少,僅能夠用于sonar功能演示的目的。PC-LINT_V9.0第三方工具,負責對c/c+代碼進行靜態(tài)檢查,有商用和社區(qū)兩個版本,功能非常強大。

6、Cppcheck-1.71第三方工具,負責對c/c+代碼進行靜態(tài)檢查,開源代碼,功能比pc-lint弱一些但夠用。cxx-plugin-0.9.4.tarPlugin插件,負責解析第三方工具(pclint/cppcheck/vagrand等)針對c/c+語言生成的xml質(zhì)量報告,并生成可被sonar識別的數(shù)據(jù)。在了解了上述各個工具軟件的用途后,搭建sonar源代碼質(zhì)量管理平臺就順手很多,并且能夠迅速定位搭建過程中出現(xiàn)的臭蟲。當你更換上述軟件為其他版本號時,可能因為兼容性問題而導致安裝失敗,請額外注意。筆者在安裝過程中就遇到了此類問題,抓狂的很久,因而在此分享給大家。1. 安裝JDK虛擬機環(huán)境請

7、下載JDK1.7或1.8,安裝過程是一路的nextànext點下去,請注意JDK的安裝目錄。假定我們已經(jīng)將JDK安裝在了C:Program FilesJavajdk1.7.0_75,緊接著對系統(tǒng)環(huán)境變量進行配置:右鍵”我的電腦”à“屬性”à“高級”選項卡à“環(huán)境變量”欄:彈出如下窗口在“系統(tǒng)變量(S)”框內(nèi)找到“Path”變量并選中后,點擊下方的“編輯”彈出如下窗口:在“變量值”框內(nèi)增加java的安裝目錄:“C:Program FilesJavajdk1.7.0_75bin”,并額外注意字符串前面需要使用分號“;”分割。確定保存后,java運行環(huán)境配置完

8、畢。檢查java運行環(huán)境上述配置完成后重啟電腦,進入cmd窗口:“開始”à“運行”à輸入“cmd”點確定后進入DOS控制臺,在控制臺輸入”java -v”,當輸出如下圖所示的信息時,說明java JDK安裝成功,否則請重新檢查安裝。2. 安裝并配置mySql數(shù)據(jù)庫mySql 的window版本安裝過程非常簡單明了,也是一路的next,next。需要注意的是:mysql安裝完畢時,會自動啟動配置過程。需要對mysql新增root用戶(密碼為root)、sonar用戶(密碼為sonar),且均為管理員用戶。監(jiān)聽端口等其他配置項使用默認值即可。如下圖開始運行mysql Workb

9、ench控制端:Mysql會要求輸入用戶名和密碼,此時輸入用戶名root、密碼root即可,打開如下界面:雙擊左側(cè)Open Connection to Start Querying處的”Local MYSQL56”,彈出界面數(shù)據(jù)庫查詢操作界面,使用SQL語句創(chuàng)建名為sonar的數(shù)據(jù)庫,如下圖所示:創(chuàng)建“sonar”數(shù)據(jù)庫的SQL在運行后,可見到左側(cè)出現(xiàn)的sonar數(shù)據(jù)庫(如未出現(xiàn),請點擊刷新圖標)。至此MYSQL數(shù)據(jù)庫配置完畢。3. 下載并配置Sonarqube-5.1.2Sonarqube為開源社區(qū)的壓縮包,無需安裝。下面我創(chuàng)建了H:CodeTest目錄,用來存放后續(xù)安裝配置使用到的開源工具

10、包。將sonarqube拷貝到H:CodeTest目錄并解壓得到目錄H:CodeTestsonarqube-5.1.2。配置Sonarqube編輯H:CodeTestsonarqube-5.1.2confwrapper.conf:將第三行的mand使用#號注釋掉;新增第四行如下:mand=C:/Program Files/Java/jdk1.7.0_75/bin/java編輯H:CodeTestsonarqube-5.1.2conf perties:將sonar.jdbc.username、sonar.jdbc.password、sonar.jdbc.url三行前的#號注釋掉

11、并保存。至此SonarQube配置完畢。驗證SonarQube安裝成功進入H:CodeTestsonarqube-5.1.2binwindows-x86-32目錄運行StartSonar.bat,此時會在DOS窗口下輸出信息如下:通過瀏覽器打開如下地址::9000,如若能夠打開如下類似的網(wǎng)頁,則說明SonarQube安裝配置成功,否則請重新檢查。配置質(zhì)量profile和cxx-plugin插件將cxx-plugin-0.9.4.tar文件拷貝到H:CodeTestsonarqube-5.1.2extensionsplugins內(nèi),重啟StartSonar.bat后,通過set

12、tingàSystemàUpdate center即可看到名為C+ (Community) cxx的插件已經(jīng)列出,說明加載插件成功。打開檢查規(guī)則頁面:Rules->Repository:選中“PC-lint c+”和“Cppcheck c+”兩個規(guī)則類別,可以看到右側(cè)列出了千余條代碼審查規(guī)則,使用右側(cè)上部的”Bulk Change”將當前選中的規(guī)則在默認質(zhì)量profile內(nèi)激活。4. 安裝并配置sonar-runner-2.4Sonar-runner為開源社區(qū)的壓縮包,無需安裝。將sonar-runner-dist-2.4.zip拷貝到H:CodeTest目錄并解壓得

13、到目錄H:CodeTest sonar-runner-2.4。配置Sonar-runner編輯H:CodeTperties:去掉MySql段sonar.jdbc.url前的#注釋符,讓sonar-runner能夠正確的連接mysql數(shù)據(jù)庫。至此Sonar-runner配置完畢。驗證Sonar-runner的運行解壓sonar-examples-master.zip到H:CodeTest目錄,在DOS命令行下進入到解壓生成的目錄H:CodeTestsonar-examples-masterprojectslanguag

14、escc-sonar-runner目錄內(nèi),并以絕對路徑運行sonar-runer:運行完畢后顯示運行成功:15:59:23.203 INFO - ANALYSIS SUCCESSFUL。如果出錯請根據(jù)輸出的調(diào)試或幫助信息進行調(diào)整。使用瀏覽器打開:9000/ 地址后,將能夠看到名為SonarQube Scanner的工程已經(jīng)生產(chǎn)了代碼質(zhì)量審查結(jié)果如下(登錄名:admin、密碼:admin):至此,Sonar代碼質(zhì)量管理平臺的搭建基本完成。余下的工作,就是將pcLint、cppCheck等第三方代碼審查的工具集成到sonar框架內(nèi)。5. 安裝pcLint9.0Pc-l

15、int的安裝無需贅言,使用pc-lint對工程源代碼進行l(wèi)int的過程也不再這兒詳述(請查閱相關(guān)資料)。需要重點說明的是,pclint默認的輸出是文本格式,我們要通過特定的pc-lint規(guī)則告訴它按照指定的xml格式輸出:在pc-lint的安裝目錄下,找到名為std.lnt的配置文件,在其中增加如下配置內(nèi)容(指定pc-lint按照特定的xml格式輸出):/ XML options for SONAR.-v / Turn off verbosity(output some verbose file/folds info)-width(0,0) / Don't break long lin

16、es+xml(?xml version="1.0" encoding="UTF-8"?) / add version information+xml(results) / Turn on XML escapes-"format=<issue file =q%fq line = q%lq number = q%nq type = q%tq desc = q%mq/>"-"format_specific= "-hFs1-e900 / 'Successful completion message

17、9; confuses ALOA對于pc-lint生成的xml報告復制到源代碼的頂級目錄。并從H:CodeTestsonar-examples-masterprojectslanguagescc-sonar-runner目錄將perties文件拷貝到源代碼的頂級目錄,修改或增加perties中的配置:# Comma-separated paths to directories with sources (required)sonar.sources=srcsonar.cxx.cppcheck.reportPath=cppcheck-result-1.xmlsonar.cxx.pclint.reportPath=pclint-report.xml#sonar.cxx.cppcheck.reportPath=pclint-report.xmlsonar.cxx.coverage.reportPath=build/gcovr-report*.xmlsonar.cxx.coverage.itReportPath=build/gcovr-report*.xmlsonar.cxx.coverage.overallReportPath=build/gcovr-report*.xml源

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論