国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用Jenkins+Sonarqueb進(jìn)行自動(dòng)化測(cè)試和代碼質(zhì)量檢測(cè)

codercao / 998人閱讀

摘要:是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái)。支持,此處以為例。注意,此處必須保證該私鑰對(duì)應(yīng)的公鑰即必須配置在上,否則會(huì)失敗配置完成后點(diǎn)擊。單元測(cè)試?yán)妹钸\(yùn)行虛擬機(jī)進(jìn)行單元測(cè)試,然后把輸出結(jié)果數(shù)據(jù)生成報(bào)告。

摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點(diǎn):易于安裝、易于配置、可擴(kuò)展(自己開發(fā)插件),并且它擁有數(shù)以百計(jì)的成熟插件,這種插件式的特點(diǎn)提供可做任何事情的可能。

簡(jiǎn)介

Jenkins

Jenkins是一款開源的持續(xù)集成工具,它的特點(diǎn):易于安裝、易于配置、可擴(kuò)展(自己開發(fā)插件),并且它擁有數(shù)以百計(jì)的成熟插件,這種插件式的特點(diǎn)提供可做任何事情的可能。

Sonarqube

SonarQube 是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái)。通過插件形式,可以支持包括 java, Objective-C, Swift, C#, C/C++, PL/SQL,JavaScript 等等二十幾種編程語言的代碼質(zhì)量管理與檢測(cè)。

SonarQueb主要從以下7個(gè)維度檢測(cè)評(píng)估代碼質(zhì)量:

1.糟糕的復(fù)雜度分布

文件、類、方法等,如果復(fù)雜度過高將難以改變,這會(huì)使得開發(fā)人員難以理解它們,
且如果沒有自動(dòng)化的單元測(cè)試,對(duì)于程序中的任何組件的改變都將可能導(dǎo)致需要全面的回歸測(cè)試

2.重復(fù)

顯然程序中包含大量復(fù)制粘貼的代碼是質(zhì)量低下的
sonar可以展示源碼中重復(fù)嚴(yán)重的地方

3.缺乏單元測(cè)試

sonar可以很方便地統(tǒng)計(jì)并展示單元測(cè)試覆蓋率及測(cè)試結(jié)果統(tǒng)計(jì)

4.沒有代碼標(biāo)準(zhǔn)

sonar可以通過oclint,PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測(cè)工具規(guī)范代碼編寫

5.沒有足夠的或者過多的注釋

沒有注釋將使代碼可讀性變差,特別是當(dāng)不可避免地出現(xiàn)人員變動(dòng)時(shí),程序的可讀性將大幅下降
而過多的注釋又會(huì)使得開發(fā)人員將精力過多地花費(fèi)在閱讀注釋上,亦違背初衷

6.潛在的bug

sonar可以通過oclint,PMD,CheckStyle,Findbugs等等代碼規(guī)則檢測(cè)工具檢測(cè)出潛在的bug

7.糟糕的設(shè)計(jì)(原文Spaghetti Design,意大利面式設(shè)計(jì))

通過sonar可以找出循環(huán),展示包與包、類與類之間的相互依賴關(guān)系
可以檢測(cè)自定義的架構(gòu)規(guī)則
通過sonar可以管理第三方的jar包
可以利用LCOM4檢測(cè)單個(gè)任務(wù)規(guī)則的應(yīng)用情況
檢測(cè)耦合

安裝

jenkins

1.brew install jenkins
2.按提示安裝java 1.8
3.brew services jenkins start or jenkins –httpPort=9002
4.安裝相關(guān)插件

Folders Plugin
Build timeout plugin
Workspace Cleanup Plugin
Ant Plugin
Gradle Plugin
Pipeline
Github Organization Folders Plugin
Pipeline Stage View Plugin
Git Plugin
Subversion Plug-in
SSH Slaves plugin
LDAP Plugin
Email Extension Plugin
Gitlab Plugin

注意事項(xiàng)

gitlab plugin 1.5.3有問題,需要降級(jí)到1.5.1

卸妝1.5.3,然后通過上傳1.5.1的gitlab-plugin.hpi文件的方式安裝

jenkins默認(rèn)使用8080端口,默認(rèn)端口跟gitlab ci配置web hook會(huì)導(dǎo)致失敗,建議換個(gè)端口嘗試:

jenkins —-httpPort=9002

Sonarqube

下載
從http://downloads.sonarsource....,下載后解壓到相應(yīng)地址,比如/opt

配置環(huán)境變量

配置SONAR_HOME環(huán)境變量,如上一步中的/opt/sonarqube

mysql建庫

sonarqube需要將掃描結(jié)果保存到數(shù)據(jù)庫中,所以需要?jiǎng)?chuàng)建數(shù)據(jù)庫表格。sonarqube支持
SQL Server、Mysql、Oracle、PostgreSQL,此處以MySql為例。

如果尚未安裝mysql,可以通過Homebrew進(jìn)行安裝,安裝完成后,創(chuàng)建對(duì)應(yīng)的賬號(hào)和數(shù)
據(jù)庫:

CREATE USER "sonar"@"%" IDENTIFIED BY "sonar";
GRANT all privileges ON sonar.* TO "sonar"@"%" IDENTIFIED BY "sonar";
flush privileges;
create database sonar;

通過以上指令創(chuàng)建了一個(gè)sonar用戶,同時(shí)創(chuàng)建了一個(gè)名為sonar的數(shù)據(jù)庫。

修改/opt/sonarqube/conf/sonar.properties文件,將相關(guān)屬性按如下設(shè)置:

sonar.web.host=0.0.0.0
sonar.web.port=9000
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
#sonar.web.context=/your_prefix  //非必須,若需要在訪問sonarqube服務(wù)時(shí)加上統(tǒng)一的前綴則配置此項(xiàng)

start sonarqube

/opt/sonarqube/bin/macosx-universal-64/sonar.sh start

download sonar scanner

https://docs.sonarqube.org/di...

objective-c plugin

github: https://github.com/Backelite/...

clone后進(jìn)入主目錄, 執(zhí)行腳本:./build-and-deploy.sh

把編譯生成的backelite-sonar-objective-c-plugin-0.6.2.jar文件拷貝到/opt/sonarqube/extensions/plugins目錄。

最后重啟Sonarqube

1.Prerequisites

Installation of xcpretty with JUnit reports fix

xcpretty需要安裝fixed version,才能配合Sonarqube工作。

git clone https://github.com/Backelite/...
cd xcpretty
git checkout fix/duration_of_failed_tests_workaround
gem build xcpretty.gemspec
sudo gem install --both xcpretty-0.2.2.gem

install xctool
brew install xctool

install oclint

brew tap oclint/formulae
brew install oclint

install gcovr

brew install gcovr

install slather

gem install slather

如果報(bào)錯(cuò):no implicit conversion of nil into string

sudo gem update --system

如果提示:no write permissions

sudo gem install /usr/local/bin slather

install lizard

sudo pip install lizard

如果沒有安裝pip,下載

chmod +x get-pip.py
sudo python get-pip.py

演示一個(gè)示例代碼工程的例子

代碼工程的配置

sonar-project.properties

下載上面sonar-objective-c github工程sample目錄下的sonar-project.properties文件,拷貝到示例代碼工程目錄,按照對(duì)應(yīng)的設(shè)置進(jìn)行修改

run-sonar.sh

拷貝該文件到代碼工程目錄

jenkins配置

在管理jenkins->系統(tǒng)設(shè)置->gitlab下配置gitlab連接

在Gitlab host url處設(shè)置gitlab的url,然后在creadential處點(diǎn)擊add。

創(chuàng)建一個(gè)Gitlab API token,然后在API token處填入gitlab上的token:

創(chuàng)建工程

構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目,然后在源碼管理處,選擇git,然后進(jìn)行如下配置:

在Repository URL處填入對(duì)應(yīng)工程的URL,注意,因?yàn)楹罄m(xù)工程check是通過ssh方式接入的,所以填寫的URL一定是ssh URL:

然后在Branch Specifier處填入要關(guān)注的分支。

然后在Credentials處點(diǎn)擊add,配置ssh秘鑰:

選擇SSH Username with private key,然后在username處填入gitlab賬號(hào),然后private key可以選擇Enter directly,直接輸入秘鑰,將~/.ssh/id_rsa文件中的內(nèi)容直接拷貝即可。注意,此處必須保證該私鑰對(duì)應(yīng)的公鑰(即 id_rsa.pub)必須配置在gitlab上,否則會(huì)失敗, 配置完成后點(diǎn)擊Add。

然后在Credentials處選擇剛才創(chuàng)建的credential即可,如果配置成功不會(huì)有報(bào)錯(cuò)信息,否則會(huì)有相關(guān)的錯(cuò)誤信息。

其他的配置可以根據(jù)實(shí)際情況進(jìn)行配置,配置完成后點(diǎn)擊保存即創(chuàng)建完成。

配置SonarQube servers

在管理jenkins->全局配置頁面下,找到SonarQube servers,配置sonarqube server相關(guān)信息:

其中Server authentication token可在SonarQube網(wǎng)站,個(gè)人賬號(hào)管理下的security處進(jìn)行生成:

增加SonarScanner構(gòu)建步驟

點(diǎn)擊jenkins里出現(xiàn)的示例工程名 –> Configure –> Build (Add build step),

增加一個(gè)Execute shell構(gòu)建步驟:


Command內(nèi)容為:

 用戶目錄/.bashrc              # 加載需要的環(huán)境變量
./run-sonar.sh -v               # 生成數(shù)據(jù)并傳遞給SonarQube Server

Build工程并顯示生成的數(shù)據(jù)

報(bào)告生成流程分析

Bugs、Velnerabilities、Code Smells

對(duì)于Objective-C語言,是通過oclint靜態(tài)掃描工程代碼來生成相關(guān)數(shù)據(jù)。

單元測(cè)試

利用xcodebuild命令運(yùn)行虛擬機(jī)進(jìn)行單元測(cè)試,然后把輸出結(jié)果數(shù)據(jù)生成報(bào)告。

覆蓋率

利用slather工具生成數(shù)據(jù)報(bào)告。

功能探討

目前針對(duì)objective-c語言,利用上面提到的objective-c插件,只支持1個(gè)Bug和186個(gè)Code Smells,Bug和Vulnerability支持的不夠。

由于SonarQube并不是完全開源,對(duì)于objective-c,它有商業(yè)版的插件,如果想要把Bug、Vulnerability支持的好的話,就必須得自定義相關(guān)規(guī)則,并提供SonarQube支持。

因此研究了一下如何自定義規(guī)則并得到SonarQube支持,步驟如下:

1.修改oclint源碼,添加自定義規(guī)則
2.修改sonar-objectivec插件源碼,添加自定義規(guī)則
3.構(gòu)建代碼工程,檢測(cè)自定義規(guī)則,生成顯示數(shù)據(jù)

oclint添加自定義規(guī)則

下載oclint源碼,地址:https://github.com/oclint/oclint

進(jìn)入代碼主目錄,利用腳手架腳本生成自定義規(guī)則模版文件:

oclint-scripts/scaffoldRule TestRule -t ASTVisitor
對(duì)生成的TestRule.cpp文件進(jìn)行編輯,實(shí)現(xiàn)自定義規(guī)則邏輯。

最后編譯整個(gè)工程:

cd oclint-scripts
./make

用生成的oclint程序?qū)y(cè)試代碼進(jìn)行測(cè)試:

./build/oclint-release/bin/oclint -report-type pmd -o test.xml 測(cè)試代碼目錄/測(cè)試文件.m

sonar-objectivec插件支持自定義規(guī)則

SonarQube服務(wù)端程序利用插件識(shí)別規(guī)則,并寫入數(shù)據(jù)庫,所以插件代碼也需要進(jìn)行修改。

下載插件源碼,地址:https://github.com/Backelite/...

需要修改如下3個(gè)文件:

1.src/main/resources/com/sonar/sqale/oclint-model.xml
2.src/main/resources/org/sonar/plugins/oclint/profile-oclint.xml
3.src/main/resources/org/sonar/plugins/oclint/rules.txt
然后編譯插件:

./build-and-deploy.sh

最后把生成的.jar插件拷貝到SonarQube服務(wù)端程序的extensions/plugins目錄下,再重啟SonarQube服務(wù)。

reference
https://github.com/Backelite/...
https://mp.weixin.qq.com/s/xi...
https://www.jianshu.com/p/74b...
http://blog.csdn.net/hdwhappy...
http://blog.csdn.net/hdwhappy...

原文鏈接

閱讀更多干貨好文,請(qǐng)關(guān)注掃描以下二維碼:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/8796.html

相關(guān)文章

  • 使用Jenkins+Sonarqueb進(jìn)行動(dòng)化測(cè)試代碼質(zhì)量檢測(cè)

    摘要:是一個(gè)用于代碼質(zhì)量管理的開源平臺(tái)。支持,此處以為例。注意,此處必須保證該私鑰對(duì)應(yīng)的公鑰即必須配置在上,否則會(huì)失敗配置完成后點(diǎn)擊。單元測(cè)試?yán)妹钸\(yùn)行虛擬機(jī)進(jìn)行單元測(cè)試,然后把輸出結(jié)果數(shù)據(jù)生成報(bào)告。 摘要: Jenkins Jenkins是一款開源的持續(xù)集成工具,它的特點(diǎn):易于安裝、易于配置、可擴(kuò)展(自己開發(fā)插件),并且它擁有數(shù)以百計(jì)的成熟插件,這種插件式的特點(diǎn)提供可做任何事情的可能。 ...

    ormsf 評(píng)論0 收藏0
  • 快速部署TEST-DRIVEN DEVELOPMENT/DEBUG環(huán)境

    摘要:關(guān)注的目標(biāo)就是在代碼提交之后,順利且迅速的把新的功能部署到產(chǎn)品環(huán)境上。由于是,那么單元測(cè)試,回歸測(cè)試,集成測(cè)試,都是實(shí)現(xiàn)的手段。高質(zhì)量的產(chǎn)品需求書和高質(zhì)量的自動(dòng)化集成測(cè)試用例毫無疑問,是高質(zhì)量軟件的保證之一。 showImg(https://segmentfault.com/img/remote/1460000006877091?w=800&h=600); 什么是Test-Driven...

    SHERlocked93 評(píng)論0 收藏0
  • fir.im weekly - 「 持續(xù)集成 」實(shí)踐教程合集

    摘要:來這里看看的工程師如何進(jìn)行持續(xù)集成與持續(xù)部署。主要介紹了豆瓣移動(dòng)持續(xù)集成和測(cè)試相關(guān)實(shí)踐,用工具化自動(dòng)化社會(huì)化測(cè)試來解決遇到的問題,將打包發(fā)布環(huán)節(jié)自動(dòng)化。這期的持續(xù)集成實(shí)踐分享就到這里。 我們??吹皆S多團(tuán)隊(duì)和開發(fā)者分享他們的持續(xù)集成實(shí)踐經(jīng)驗(yàn),本期 fir.im Weekly 收集了 iOS,Android,PHP ,NodeJS 等項(xiàng)目搭建持續(xù)集成的實(shí)踐,以及一些國(guó)內(nèi)外公司的內(nèi)部持續(xù)集成...

    A Loity 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<