上宝中学使⽤Jenkins+Sonarqueb进⾏⾃动化测试和代码质量检测
摘要: Jenkins Jenkins是⼀款开源的持续集成⼯具,它的特点:易于安装、易于配置、可扩展(⾃⼰开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能。
简介
Jenkins
Jenkins是⼀款开源的持续集成⼯具,它的特点:易于安装、易于配置、可扩展(⾃⼰开发插件),并且它拥有数以百计的成熟插件,这种插件式的特点提供可做任何事情的可能。
Sonarqube
SonarQube 是⼀个⽤于代码质量管理的开源平台。通过插件形式,可以⽀持包括 java, Objective-C, Swift, C#, C/C++,
PL/SQL,JavaScript 等等⼆⼗⼏种编程语⾔的代码质量管理与检测。
SonarQueb主要从以下7个维度检测评估代码质量:
1.糟糕的复杂度分布
2.重复
3.缺乏单元测试
4.没有代码标准
5.没有⾜够的或者过多的注释
japanebig6.潜在的bug ⽂件、类、⽅法等,如果复杂度过⾼将难以改变,这会使得开发⼈员难以理解它们,且如果没有⾃动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全⾯的回归测试
1韩语转换器
mikro2显然程序中包含⼤量复制粘贴的代码是质量低下的
sonar 可以展⽰源码中重复严重的地⽅12sonar 可以很⽅便地统计并展⽰单元测试覆盖率及测试结果统计
1sonar 可以通过oclint,PMD,CheckStyle,Findbugs 等等代码规则检测⼯具规范代码编写1没有注释将使代码可读性变差,特别是当不可避免地出现⼈员变动时,程序的可读性将⼤幅下降
⽽过多的注释⼜会使得开发⼈员将精⼒过多地花费在阅读注释上,亦违背初衷
1
2sonar 可以通过oclint,PMD,CheckStyle,Findbugs 等等代码规则检测⼯具检测出潜在的bug
1
7.糟糕的设计(原⽂Spaghetti Design,意⼤利⾯式设计)
安装
jenkins
1.brew install jenkins
2.按提⽰安装java 1.8
3.brew rvices jenkins start or jenkins –httpPort=9002
4.安装相关插件
注意事项
gitlab plugin 1.5.3有问题,需要降级到1.5.1通过sonar 可以找出循环,展⽰包与包、类与类之间的相互依赖关系可以检测⾃定义的架构规则通过sonar 可以管理第三⽅的jar 包可以利⽤LCOM4检测单个任务规则的应⽤情况
检测耦合冰河世纪3 下载
1
2
3
4
5Folders 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
1
2
3
4
5
6
7
8
9
10
11
12
law13
14
卸妆1.5.3,然后通过上传1.5.1的gitlab-plugin.hpi⽂件的⽅式安装
jenkins默认使⽤8080端⼝,默认端⼝跟gitlab ci配置web hook会导致失败,建议换个端⼝尝试:
Sonarqube
配置环境变量
配置SONAR_HOME环境变量,如上⼀步中的/opt/sonarqube
mysql建库
sonarqube需要将扫描结果保存到数据库中,所以需要创建数据库表格。sonarqube⽀持
SQL Server、Mysql、Oracle、PostgreSQL,此处以MySql为例。
如果尚未安装mysql,可以通过Homebrew进⾏安装,安装完成后,创建对应的账号和数
据库:
通过以上指令创建了⼀个sonar⽤户,同时创建了⼀个名为sonar的数据库。
修改/opt/sonarqube/conf/sonar.properties⽂件,将相关属性按如下设置:
start sonarqube
download sonar scanner
objective-c plugin
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 jenkins —-httpPort=9002
1CREATE USER 'sonar'@'%' IDENTIFIED BY 'sonar';GRANT all privileges ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar';flush privileges;create databa sonar;
1
2
34sonar .web.host =0.0.0.0sonar .web.port =9000sonar .jdbc.urname =sonar sonar .jdbc.password =sonar sonar .jdbc.url =jdbc:mysql://localhost:3306/sonar?uUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&uConfigs=maxPerformanc
yobt com#t=/your_prefix //⾮必须,若需要在访问sonarqube 服务时加上统⼀的前缀则配置此项1
2
3
4
5
6/opt/sonarqube/bin/macosx-universal-64/sonar.sh start
includefile
1xcpretty 需要安装fixed version ,才能配合Sonarqube ⼯作。
1
install xctool brew install xctool
install oclint
末端brew tap oclint/formulae brew install oclint
install gcovr brew install gcovr
install slather
gem install slather
sudo gem update –system sudo gem install /usr/local/bin slather
install lizard
sudo pip install lizard
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:如果报错:no implicit conversion of nil into string 1如果提⽰:no write permissions
1如果没有安装pip ,下载<https: bootstrap .pypa.io ="" get-pip .py ="">
1
创建⼯程
构建⼀个⾃由风格的软件项⽬,然后在源码管理处,选择git,然后进⾏如下配置: