jenkins和sonarqube集成实现codeReview

这篇主要涉及jenkins和sonarqube的集成
sonarqube的配置感觉简直到处是坑,所以写一篇博客记录一下,以免以后经常忘记
前提:已经安装了mysql5.6+,mariadb也不行

安装sonarqube

参考https://blog.csdn.net/flysqrlboy/article/details/80525727
创建数据库及修改配置文件

安装插件

jenkins上安装sonarqube plugin ,如果没有就安装sonarqube scanner for jenkins这个插件。

安装sonarqube Scanner

参考https://www.jianshu.com/p/1e59cd5cddb5 安装Scanner

配置

  1. 在 系统管理->Global Tool Configuration 中配置/安装最新的SonarQube Scanner:
    在这里插入图片描述
  2. 配置SonarQube服务
    SonarQube Scanner工具需要把扫描的代码及结果发送到SonarQube服务器上,所以需要配置SonarQube服务地址。

在 系统管理->系统设置 中增加 SonarQube servers 相关配置:
在这里插入图片描述可以参考https://www.jianshu.com/p/1e59cd5cddb5
获得Server authentication token

关联项目 使用

首先需要在新建的 Jenkins 项目的构建环境标签页中勾选"Prepare SonarQube Scanner evironment"
在这里插入图片描述
然后采取构建后分析源码
在这里插入图片描述
配置 SonarQube Scanner 构建步骤,在 Task to run 输入框中输入 scan,即分析代码;在 JDK 选择框中选择 SonarQube Scanner 使用的 JDK(注意这里必须是 JDK 不能是 JRE);Path to project properties 是可选择的输入框,这里可以指定一个 sonar-project.properties 文件,如果不指定的话会使用项目默认的 properties 文件;Analysis properties 输入框,这里需要输入一些配置参数用来传递给 SonarQube,这里的参数优先级高于 sonar-project.properties 文件里面的参数,所以可以在这里来配置所有的参数以替代 sonar-project.properties 文件,下面列出了一些参数,sonar.language 指定了要分析的开发语言(特定的开发语言对应了特定的规则),sonar.sources 定义了需要分析的源代码位置(示例中的$WORKSPACE 所指示的是当前 Jenkins 项目的目录),sonar.java.binaries 定义了需要分析代码的编译后 class 文件位置;Additional arguments 输入框中可以输入一些附加的参数,示例中的-X 意思是进入 SonarQube Scanner 的 Debug 模式,这样会输出更多的日志信息;JVM Options 可以输入在执行 SonarQube Scanner 是需要的 JVM 参数。

Analysis properties 填写配置

sonar.projectKey=apigateway
sonar.projectName=apigateway #这个可自定义,报告发送到sonarqube后,sonarqube将创建以此命名的project
sonar.language=java #表示分析java源代码
sonar.java.source=1.8 #表示jdk版本为1.8
sonar.sources=${WORKSPACE}/src/ #表示源代码的目录
sonar.java.binaries=${WORKSPACE}/target/classes/ #定义了需要分析代码的编译后 class 文件位置;

sonar.sources 和 sonar.java.binaries 需要根据你的实际位置进行配置

查看分析结果

构建jenkins job后,分析结果将发送到sonarqube。

问题

安装好sonarqube后启动之后并不能访问到9000端口,说明有问题,可以查看/logs下的es.log,sonar.log,web.log
下面是我遇到过的log里面报的错

  1. sonar es can not run elasticsearch as root
    错误原因:因为安全问题elasticsearch 不让用root用户直接运行
    解决方法:liunx创建新用户sonarUser,使用该用户(sonarUser)运行sonar即可。
    参考:http://www.voidcn.com/article/p-qxgxhrtd-brv.html
  2. sonar Unable to start JVM: No such file or directory/Unable to start JVM: Permission denied (13)
    错误原因:JVM参数没有配置
    处理方案:
    /bin/wrapper.conf 下增加:
    wrapper.java.command=/usr/java/jdk1.8.0_72/bin/java
    参考:https://blog.csdn.net/maweiba163/article/details/52004552
    https://blog.csdn.net/jxzdezhanhao/article/details/54376379
  3. 还报过一个错,好像是创建文件时没有权限
    解决办法:对整个sonar文件夹改权限 chmod 777 -R …/sonar/

内容无关

曾想用过idea maven集成evosuite自动生成测试用例,但效果并不理想,没有eclipse生成的效果好,但记录一下自己看过的几篇相关的好的博文
Evosuite idea 插件
https://blog.csdn.net/qq_30353203/article/details/81292593
https://blog.csdn.net/qq_30353203/article/details/81292593
evosuite idea
https://juejin.im/post/5c1885c56fb9a049c30b2b77

参考

https://blog.csdn.net/liuxinghao/article/details/77967158
https://www.ibm.com/developerworks/cn/devops/1612_qusm_jenkins/index.html
主要参考:https://blog.csdn.net/flysqrlboy/article/details/80525727

Sonar简介 Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量 通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 sonarQube能带来什么? Developers' Seven Deadly Sins 1.糟糕的复杂度分布 文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试 2.重复 显然程序中包含大量复制粘贴的代码是质量低下的 sonar可以展示源码中重复严重的地方 3.缺乏单元测试 sonar可以很方便地统计并展示单元测试覆盖率 4.没有代码标准 sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写 5.没有足够的或者过多的注释 没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷 6.潜在的bug sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检测出潜在的bug 7.糟糕的设计(原文Spaghetti Design,意大利面式设计) 通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系 可以检测自定义的架构规则 通过sonar可以管理第三方的jar包 可以利用LCOM4检测单个任务规则的应用情况 检测耦合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值