SonarQube
簡介
SonarQube是一個開源的代碼質(zhì)量管理平臺,可以通過插件機(jī)制集成不同的測試工具孩擂、代碼分析工具以及繼續(xù)集成工具划咐。比如pmdcpd、checkstyle氧映、findbugs春畔、jenkins等。具體的代碼分析工具介紹,見http://tianya23.blog.51cto.com/1081650/415146.
但是SonarQube并不是簡單的將各種質(zhì)量檢測工具的結(jié)果直接展示給用戶岛都,而是通過不同的插件算法對這些結(jié)果進(jìn)行在加工律姨,最終以量化的方式來衡量代碼質(zhì)量。
特點(diǎn)
1.支持25+種編程語言
2.多維度分析項(xiàng)目質(zhì)量
1.Architecture&Design
2.Duplications
3.Unit tests
4.Complexity
5.Potential bugs
6.Coding rules
7.Comments
架構(gòu)圖
安裝
見另一個附件《SonarQube Win安裝部署與實(shí)踐》
jenkins
介紹
jenkins是一個持續(xù)集成管理平臺臼疫,每一次集成都是通過自動化的構(gòu)建來驗(yàn)證择份,包括自動編譯、發(fā)布和測試烫堤。簡單的說荣赶,就是定時的或者指定觸發(fā)條件的自動執(zhí)行我們定義好的命令或腳本對項(xiàng)目進(jìn)行相關(guān)的處理,并將結(jié)果反饋給開發(fā)者鸽斟。
特點(diǎn)
1.易安裝拔创,無需數(shù)據(jù)庫
2.易配置,所有配置都是通過web頁面
3.變更支持富蓄,Jenkins能從代碼倉庫(Subversion/CVS)中獲取并產(chǎn)生代碼更新列表并輸出到編譯輸出信息中
4.集成E-mail剩燥,將結(jié)果反饋
安裝
見另一個附件《Jenkins + Gradle + SonarQube 項(xiàng)目持續(xù)集成并分析環(huán)境搭建》
jenkins + SonarQube
實(shí)現(xiàn)自動分析項(xiàng)目,并將分析結(jié)果自動更新到SonarQube立倍,每次查看SonarQube都是最新的分析結(jié)果
Jenkins + Gradle + SonarQube 項(xiàng)目持續(xù)集成并分析環(huán)境搭建
jenkins簡單介紹
Jenkins 是一個可擴(kuò)展的持續(xù)集成引擎躏吊。
主要用于
1.持續(xù)、自動地構(gòu)建/測試軟件項(xiàng)目帐萎。
2.監(jiān)控一些定時執(zhí)行的任務(wù)比伏。
優(yōu)勢
1.軟件構(gòu)建自動化 :配置完成后,CI系統(tǒng)會依照預(yù)先制定的時間表疆导,或者針對某一特定事件赁项,對目標(biāo)軟件進(jìn)行構(gòu)建
2.構(gòu)建可持續(xù)的自動化檢查 :CI系統(tǒng)能持續(xù)地獲取新增或修改后簽入的源代碼,也就是說澈段,當(dāng)軟件開發(fā)團(tuán)隊(duì)需要周期性的檢查新增或修改后的代碼時悠菜,CI系統(tǒng)會不斷確認(rèn)這些新代碼是否破壞了原有軟件的成功構(gòu)建。這減少了開發(fā)者們在檢查彼此相互依存的代碼中變化情況需要花費(fèi)的時間和精力
3. 構(gòu)建可持續(xù)的自動化測試 :構(gòu)建檢查的擴(kuò)展部分败富,構(gòu)建后執(zhí)行預(yù)先制定的一套測試規(guī)則悔醋,完成后觸發(fā)通知(Email,RSS等等)給相關(guān)的當(dāng)事人。
4.生成后后續(xù)過程的自動化 :當(dāng)自動化檢查和測試成功完成兽叮,軟件構(gòu)建的周期中可能也需要一些額外的任務(wù)芬骄,諸如生成文檔猾愿、打包軟件等
jenkens安裝
前往官網(wǎng),選擇其中的.war文件進(jìn)行下載。
安裝方式 | 必須安裝jdk環(huán)境
1.必須事先安裝Tomcat服務(wù)器账阻,然后將.war文件放到webapps目錄下蒂秘,重啟Tomcat就可以了。
2.直接進(jìn)入cmd淘太,使用命令
java -jar jenkins.war
使用這種方式進(jìn)行安裝姻僧,使用的是jenkins內(nèi)置的服務(wù)器。
安裝成功(cmd會出現(xiàn)類似jenkins is running)后蒲牧,然后在瀏覽器輸入http://localhost:8080
如果出現(xiàn)“網(wǎng)絡(luò)無法運(yùn)作”撇贺,請檢查當(dāng)前是否使用的代理服務(wù)器,應(yīng)該轉(zhuǎn)為“直接連接”
網(wǎng)頁加載成功后冰抢,出現(xiàn)一下界面
在框中輸入控制臺輸出的密鑰
如果是通過Tomcat安裝显熏,密鑰在webapp.jenkins\secrets\initialAdminPassword文件中
之后就是注冊用戶名
注冊成功并登陸后,便出現(xiàn)一下界面
安裝推薦插件
安裝完成后晒屎,進(jìn)行環(huán)境的配置
1.點(diǎn)擊系統(tǒng)管理
2.點(diǎn)擊Global Tool Configuration
3.配置jdk喘蟆,配置git
4.配置gradle
jenkins集成的項(xiàng)目使用的gradle版本,這里必須配置鼓鲁,因?yàn)樽詣訕?gòu)建需要和項(xiàng)目使用相同版本的gradle
5.點(diǎn)擊Save
6.安裝Android SDK
點(diǎn)擊系統(tǒng)設(shè)置
7.配置Android Home全局屬性蕴轨,全局屬性對所有項(xiàng)目生效
8.點(diǎn)擊Save
9.安裝Android Line插件,點(diǎn)擊管理插件
創(chuàng)建Job
點(diǎn)擊新建
2.填寫名稱骇吭,選擇自由風(fēng)格的軟件項(xiàng)目
3.簡單介紹下面內(nèi)容
1.丟棄舊的構(gòu)建
1.1保持構(gòu)建的天數(shù)橙弱,表示構(gòu)建的內(nèi)容在1天內(nèi)不被刪除,操作1天后刪除
1.2表示允許保持構(gòu)建的最大數(shù)量燥狰,當(dāng)超過這個數(shù)量時棘脐,最前面的構(gòu)建會被刪除
2.參數(shù)化構(gòu)建,就是在構(gòu)建時傳入一下參數(shù)龙致,這些參數(shù)會被配置到項(xiàng)目中蛀缝,并且可以影響后面的構(gòu)建步驟。詳情請點(diǎn)擊有點(diǎn)的目代?
4.配置項(xiàng)目Git地址屈梁,可以選擇構(gòu)建的分支
5.點(diǎn)擊Add填寫Git賬號和密碼
6.構(gòu)建觸發(fā)器,就是什么時候觸發(fā)構(gòu)建
有多種觸發(fā)形式
這里介紹第三種榛了,定時構(gòu)建
可以規(guī)定每天在讶,或者某個時候進(jìn)行定時構(gòu)建。日程表中的內(nèi)容是安裝一個格式編寫的霜大,詳情可以點(diǎn)擊右邊的?
7.點(diǎn)擊增加構(gòu)建步驟构哺,選擇gradle script
8.可以選擇invoke Gradle,此時是從剛才配置的Gradle版本選擇一個,但是必須和項(xiàng)目是同一個版本,或者選擇Use Gradle Wrapper战坤,此時的Wrapper location,就是項(xiàng)目的根目錄曙强,有build.gradle,gradlew的根目錄残拐。Tasks就是clean build這類gradle命令,可以連著寫旗扑。
推薦在命令后加上
--stacktrace --debug
例如
clean assembleRelease --stacktrace --debug
但是當(dāng)我們要使用SonarQube時,只能選擇Use Gradle Wrapper
配置如下慈省,其中Root Build script就是要構(gòu)建的根目錄臀防。此時選擇的時andfix模塊
9.設(shè)置構(gòu)建完成之后的操作
設(shè)置郵件提醒。但是使用郵件還得配置其他边败,這里不做介紹袱衷。
10.點(diǎn)擊Save
在主界面點(diǎn)擊剛才創(chuàng)建的項(xiàng)目
點(diǎn)擊立即構(gòu)建。
如果出現(xiàn)失敗笑窜,點(diǎn)擊#*致燥,進(jìn)入后點(diǎn)擊Console Output查看控制臺信息
一般錯誤:
1.Gradle版本不一致,更改Gradle版本
2.項(xiàng)目使用的SDK版本在剛才配置的sdk路徑中沒有排截,安裝相應(yīng)的sdk版本
3.項(xiàng)目中使用的sdk路徑找不到嫌蚤,這時可以更改項(xiàng)目根目錄下的local.properties文件,將sdk路徑改為正確的路徑
構(gòu)建成功后断傲,圖片時藍(lán)色的脱吱。
然后進(jìn)入sonarQube服務(wù)器,便可以看到剛才自動構(gòu)建的項(xiàng)目认罩。
注意
1.如果項(xiàng)目中的sonarLine綁定了Sonar服務(wù)器箱蝠,要解綁
2.配置項(xiàng)目的gradle.properties
3.確保git上的項(xiàng)目有2中的配置
SonarQube分析配置
1.安裝Android Lint
2.設(shè)置Android Lint的父類為Sonar Way
此時Android Lint就有了Android Lint檢測規(guī)則,也有了原來Sonar Way的檢測規(guī)則垦垂。
3.設(shè)置Android Lint為默認(rèn)的質(zhì)量配置宦搬,之后的自動構(gòu)建使用Android Lint
4.更新的項(xiàng)目情況,在SonarQube可以清晰的看到