校园网站建设的感受论文,专业微信网站建设公司首选,wordpress的android应用,自己怎么样建网站摘要#xff1a; Jenkins Jenkins是一款开源的持续集成工具#xff0c;它的特点#xff1a;易于安装、易于配置、可扩展#xff08;自己开发插件#xff09;#xff0c;并且它拥有数以百计的成熟插件#xff0c;这种插件式的特点提供可做任何事情的可能。
简介
Jenkins
…摘要 Jenkins Jenkins是一款开源的持续集成工具它的特点易于安装、易于配置、可扩展自己开发插件并且它拥有数以百计的成熟插件这种插件式的特点提供可做任何事情的可能。
简介
Jenkins
Jenkins是一款开源的持续集成工具它的特点易于安装、易于配置、可扩展自己开发插件并且它拥有数以百计的成熟插件这种插件式的特点提供可做任何事情的可能。
Sonarqube
SonarQube 是一个用于代码质量管理的开源平台。通过插件形式可以支持包括 java, Objective-C, Swift, C#, C/C, PL/SQL,JavaScript 等等二十几种编程语言的代码质量管理与检测。SonarQueb主要从以下7个维度检测评估代码质量
1.糟糕的复杂度分布
文件、类、方法等如果复杂度过高将难以改变这会使得开发人员难以理解它们
且如果没有自动化的单元测试对于程序中的任何组件的改变都将可能导致需要全面的回归测试
2.重复
显然程序中包含大量复制粘贴的代码是质量低下的
sonar可以展示源码中重复严重的地方
3.缺乏单元测试
sonar可以很方便地统计并展示单元测试覆盖率及测试结果统计
4.没有代码标准
sonar可以通过oclint,PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写
5.没有足够的或者过多的注释
没有注释将使代码可读性变差特别是当不可避免地出现人员变动时程序的可读性将大幅下降
而过多的注释又会使得开发人员将精力过多地花费在阅读注释上亦违背初衷
6.潜在的bug
sonar可以通过oclint,PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug
7.糟糕的设计原文Spaghetti Design意大利面式设计
通过sonar可以找出循环展示包与包、类与类之间的相互依赖关系
可以检测自定义的架构规则
通过sonar可以管理第三方的jar包
可以利用LCOM4检测单个任务规则的应用情况
检测耦合安装
jenkins
1.brew install jenkins 2.按提示安装java 1.8 3.brew services jenkins start or jenkins –httpPort9002 4.安装相关插件
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
注意事项
gitlab plugin 1.5.3有问题需要降级到1.5.1
卸妆1.5.3然后通过上传1.5.1的gitlab-plugin.hpi文件的方式安装
jenkins默认使用8080端口默认端口跟gitlab ci配置web hook会导致失败建议换个端口尝试
jenkins —-httpPort9002
Sonarqube
下载 从http://downloads.sonarsource.com/sonarqube/下载sonarqube下载后解压到相应地址比如/opt
配置环境变量
配置SONAR_HOME环境变量如上一步中的/opt/sonarqube
mysql建库
sonarqube需要将扫描结果保存到数据库中所以需要创建数据库表格。sonarqube支持 SQL Server、Mysql、Oracle、PostgreSQL此处以MySql为例。
如果尚未安装mysql可以通过Homebrew进行安装安装完成后创建对应的账号和数 据库
CREATE USER sonar% IDENTIFIED BY sonar;
GRANT all privileges ON sonar.* TO sonar% IDENTIFIED BY sonar;
flush privileges;
create database sonar;
通过以上指令创建了一个sonar用户同时创建了一个名为sonar的数据库。
修改/opt/sonarqube/conf/sonar.properties文件将相关属性按如下设置
sonar.web.host0.0.0.0
sonar.web.port9000
sonar.jdbc.usernamesonar
sonar.jdbc.passwordsonar
sonar.jdbc.urljdbc:mysql://localhost:3306/sonar?useUnicodetruecharacterEncodingutf8rewriteBatchedStatementstrueuseConfigsmaxPerformanceuseSSLfalse
#sonar.web.context/your_prefix //非必须若需要在访问sonarqube服务时加上统一的前缀则配置此项
start sonarqube
/opt/sonarqube/bin/macosx-universal-64/sonar.sh start
download sonar scanner
https://docs.sonarqube.org/display/SCAN/AnalyzingwithSonarQubeScanner
objective-c plugin
github: https://github.com/Backelite/sonar-objective-c
clone后进入主目录, 执行脚本./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/xcpretty.git 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 xctoolinstall oclint brew tap oclint/formulae brew install oclintinstall gcovr brew install gcovrinstall slather
gem install slather
如果报错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下载https: bootstrap.pypa.io get-pip.py
chmod x get-pip.py sudo python get-pip.py
演示一个示例代码工程的例子
代码工程的配置
sonar-project.properties
下载上面sonar-objective-c github工程sample目录下的sonar-project.properties文件拷贝到示例代码工程目录按照对应的设置进行修改
run-sonar.sh
拷贝该文件到代码工程目录
jenkins配置
在管理jenkins-系统设置-gitlab下配置gitlab连接
在Gitlab host url处设置gitlab的url然后在creadential处点击add。
创建一个Gitlab API token然后在API token处填入gitlab上的token创建工程
构建一个自由风格的软件项目,然后在源码管理处选择git然后进行如下配置在Repository URL处填入对应工程的URL注意因为后续工程check是通过ssh方式接入的所以填写的URL一定是ssh URL然后在Branch Specifier处填入要关注的分支。
然后在Credentials处点击add配置ssh秘钥选择SSH Username with private key然后在username处填入gitlab账号然后private key可以选择Enter directly,直接输入秘钥将~/.ssh/id_rsa文件中的内容直接拷贝即可。注意此处必须保证该私钥对应的公钥即 id_rsa.pub必须配置在gitlab上否则会失败, 配置完成后点击Add。
然后在Credentials处选择刚才创建的credential即可如果配置成功不会有报错信息否则会有相关的错误信息。
其他的配置可以根据实际情况进行配置配置完成后点击保存即创建完成。
配置SonarQube servers
在管理jenkins-全局配置页面下找到SonarQube servers配置sonarqube server相关信息:其中Server authentication token可在SonarQube网站个人账号管理下的security处进行生成增加SonarScanner构建步骤
点击jenkins里出现的示例工程名 – Configure – Build (Add build step)
增加一个Execute shell构建步骤
Command内容为用户目录/.bashrc # 加载需要的环境变量
./run-sonar.sh -v # 生成数据并传递给SonarQube Server
Build工程并显示生成的数据报告生成流程分析
Bugs、Velnerabilities、Code Smells
对于Objective-C语言是通过oclint静态扫描工程代码来生成相关数据。单元测试
利用xcodebuild命令运行虚拟机进行单元测试然后把输出结果数据生成报告。
覆盖率
利用slather工具生成数据报告。功能探讨
目前针对objective-c语言利用上面提到的objective-c插件只支持1个Bug和186个Code SmellsBug和Vulnerability支持的不够。
由于SonarQube并不是完全开源对于objective-c它有商业版的插件如果想要把Bug、Vulnerability支持的好的话就必须得自定义相关规则并提供SonarQube支持。
因此研究了一下如何自定义规则并得到SonarQube支持步骤如下
1.修改oclint源码添加自定义规则 2.修改sonar-objectivec插件源码添加自定义规则 3.构建代码工程检测自定义规则生成显示数据
oclint添加自定义规则
下载oclint源码地址https://github.com/oclint/oclint
进入代码主目录利用脚手架脚本生成自定义规则模版文件:
oclint-scripts/scaffoldRule TestRule -t ASTVisitor 对生成的TestRule.cpp文件进行编辑实现自定义规则逻辑。
最后编译整个工程
cd oclint-scripts
./make
用生成的oclint程序对测试代码进行测试
./build/oclint-release/bin/oclint -report-type pmd -o test.xml 测试代码目录/测试文件.m
sonar-objectivec插件支持自定义规则
SonarQube服务端程序利用插件识别规则并写入数据库所以插件代码也需要进行修改。
下载插件源码地址https://github.com/Backelite/sonar-objective-c.git
需要修改如下3个文件
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服务端程序的extensions/plugins目录下再重启SonarQube服务。reference https://github.com/Backelite/sonar-objective-c https://mp.weixin.qq.com/s/xi7pZmMMVZZlBNee-Md-Ig https://www.jianshu.com/p/74bee59fef1c http://blog.csdn.net/hdwhappy/article/details/61924772 http://blog.csdn.net/hdwhappy/article/details/78486564
原文链接
干货好文请关注扫描以下二维码