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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

10、包。將sonarqube拷貝到H:CodeTest目錄并解壓得到目錄H:CodeTestsonarqube-5.1.2。配置Sonarqube編輯H:CodeTestsonarqube-5.1.2confwrapper.conf:將第三行的mand使用#號(hào)注釋掉;新增第四行如下: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三行前的#號(hào)注釋掉

11、并保存。至此SonarQube配置完畢。驗(yàn)證SonarQube安裝成功進(jìn)入H:CodeTestsonarqube-5.1.2binwindows-x86-32目錄運(yùn)行StartSonar.bat,此時(shí)會(huì)在DOS窗口下輸出信息如下:通過瀏覽器打開如下地址::9000,如若能夠打開如下類似的網(wǎng)頁(yè),則說(shuō)明SonarQube安裝配置成功,否則請(qǐng)重新檢查。配置質(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)列出,說(shuō)明加載插件成功。打開檢查規(guī)則頁(yè)面:Rules->Repository:選中“PC-lint c+”和“Cppcheck c+”兩個(gè)規(guī)則類別,可以看到右側(cè)列出了千余條代碼審查規(guī)則,使用右側(cè)上部的”Bulk Change”將當(dāng)前選中的規(guī)則在默認(rèn)質(zhì)量profile內(nèi)激活。4. 安裝并配置sonar-runner-2.4Sonar-runner為開源社區(qū)的壓縮包,無(wú)需安裝。將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ù)庫(kù)。至此Sonar-runner配置完畢。驗(yàn)證Sonar-runner的運(yùn)行解壓sonar-examples-master.zip到H:CodeTest目錄,在DOS命令行下進(jìn)入到解壓生成的目錄H:CodeTestsonar-examples-masterprojectslanguag

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

15、int的安裝無(wú)需贅言,使用pc-lint對(duì)工程源代碼進(jìn)行l(wèi)int的過程也不再這兒詳述(請(qǐng)查閱相關(guān)資料)。需要重點(diǎn)說(shuō)明的是,pclint默認(rèn)的輸出是文本格式,我們要通過特定的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對(duì)于pc-lint生成的xml報(bào)告復(fù)制到源代碼的頂級(jí)目錄。并從H:CodeTestsonar-examples-masterprojectslanguagescc-sonar-runner目錄將perties文件拷貝到源代碼的頂級(jí)目錄,修改或增加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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論