使用 Jenkins 与 Sonar 集成对代码进行持续检测
SonarQube 与 Jenkins 简介
SonarQube是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测, 如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:
- 检查代码是否遵循编程标准:如命名规范,编写的规范等。
- 检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle等 工具检测代码存在的缺陷。
- 检测代码的重复代码量:SonarQube可以展示项目中存在大量复制粘贴的代码。
- 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
- 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。
SonarQube 平台是由4个部分组成:
- SonarQube Server
- SonarQube Database
- SonarQube Plugins
- SonarQube Scanner
Jenkins 与 SonarQube 集成插件的安装与配置
Jenkins 是一个支持自动化框架的服务器,我们这里不做详细介绍。Jenkins 提供了相关的插件,使得 SonarQube 可以很容易地集成 。
登陆 jenkins,点击"系统管理",如图。

Jenkins 管理插件

Jenkins 安装 SonarQube 插件

进入 Jenkins 系统管理 – 系统设置,配置 SonarQube Server 信息

进入 Jenkins 系统管理 - Global Tool Configuration,配置 SonarQube Scanner

新建 Jenkis 项目

在 Jenkins 项目构建过程中加入 SonarScanner 进行代码分析
首先需要在新建的 Jenkins 项目的构建环境标签页中勾选"Prepare SonarQube Scanner evironment"

增加 Execute SonarQube Scanner 构建步骤

配置 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 参数
sonar.projectKey=testSonar
sonar.projectName=testSonar
sonar.projectVersion=1.0
sonar.language=java
sonar.java.binaries=$WORKSPACE/testSonar/target/test-classes/
sonar.sources=$WORKSPACE/testSonar/src
配置 Execute SonarQube Scanner 构建步骤

Jenkins 项目构建结果

分析结果报告

具体问题展示

参考资源
**如感觉文章对你有所帮助,可以关注微信公众号鼓励一下**

使用 Jenkins 与 Sonar 集成对代码进行持续检测的更多相关文章
- Jenkins+Sonar集成对代码进行持续检测
介绍 SonarQube(曾用名Sonar(声纳)[1])是一个开源的代码质量管理系统. 特征 支持超过25种编程语言[2]:Java.C/C++.C#.PHP.Flex.Groovy.JavaScr ...
- Jenkins和Sonar集成
Jenkins可以通过插件的形式和Sonar很好的集成. (1)Jenkin安装Sonar插件(这里我估计安装的插件有点多) 注意:之前安装Jenkins的时候我用的是JDK系统环境环境变量jdk1. ...
- Jenkins+Sonar搭建持续集成和代码质量检查环境
Jenkins+Sonar搭建 一.相关环境及下载地址 系统:Ubuntu JDK:1.8 MySQL:5.7 软件包: jenkins_2.121.3_all.deb sonarqube-7.3.z ...
- Jenkins+Maven+Sonar系统持续集成环境部署以及配置
一.Jenkins介绍以及安装 什么是持续集成? 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Ag ...
- Jenkins+Gradle+Sonar进行Java项目代码分析
Jenkins+Maven+Sonar与Jenkins+Gradle+Sonar配置方法很相似,区别就是Java项目所用的编译工具不同,一个是maven,一个是gradle 使用maven编译工具的可 ...
- 持续集成之代码质量管理-Sonar [三]
转载:https://www.abcdocker.com/abcdocker/2053 摘要 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工 ...
- Jenkins之Sonar 代码检查
一.简介 SonarQube 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等 ...
- 持续集成之代码质量管理-Sonar
原文:http://blog.csdn.net/abcdocker/article/details/53840582 Sonar介绍 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Son ...
- 在Jenkins中使用sonar进行静态代码检查
要解决的问题 jenkins自动构建完成后,希望能通过sonar静态代码检查生成一份报告,给与开发人员对当前代码的做一个质量评估和修改意见 1.安装并配置sonar服务器 懒得说,跟着官方文档走就行, ...
随机推荐
- HDU-2089不要62-暴力或数位DP入门
不要62 题意:给定区间,求在这个区间中有多少个数字,不包含4且不包含62: 这道题作为数位DP的入门题: 暴力也是可以过 #include<cstdio> #include <io ...
- 牛客-2018多校算法第五场D-集合问题+并查集
集合问题 题意: 给你a,b和n个数p[i],问你如何分配这n个数给A,B集合,并且满足: 若x在集合A中,则a-x必须也在集合A中. 若x在集合B中,则b-x必须也在集合B中. 思路:并查集操作,自 ...
- codeforces E. Mahmoud and Ehab and the function(二分+思维)
题目链接:http://codeforces.com/contest/862/problem/E 题解:水题显然利用前缀和考虑一下然后就是二分b的和与-ans_a最近的数(ans_a表示a的前缀和(奇 ...
- hdu6333 Harvest of Apples 离线+分块+组合数学(求组合数模板)
Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K ...
- CodeForces 1082 D Maximum Diameter Graph
题目传送门 题意:现在有n个点,每个点的度数最大为di,现在要求你构成一棵树,求直径最长. 题解:把所有度数为2的点先扣出来,这些就是这颗树的主干,也就是最长的距离. 然后我们把度数为2的点连起来,之 ...
- NOIP 2009 最优贸易 题解
一道最短路的题,找一个买入和卖出相差最高的点即可,我们先以1为起点跑spfa,d1[x]不再表示距离而表示能够经过权值最小的节点的权值即 if(d1[y]>min(d1[x],price[y]) ...
- Git暂存本地代码,强制获取远程最新代码
一:git stash // 把本地修改的代码压到git栈中去 二:git pull // 本地代码压栈之后,pull远程代码会完全覆盖本地代码 三:git stash list // 可以查看 ...
- MATLAB之基本语法
常用命令 dir:列出当前目录下的所有文件 clc:清除命令窗 clear all:清除环境(从内存中清除所有变量) who:将内存中的当前变量以简单形式列出 close all: 关闭所有的 Fig ...
- Python连载37-多进程、进程子类、进程父子id
一.线程替代方案 1.subprocess (1)完全跳过线程,使用进程 (2)是派生进程的主要替代方案 (3)python2.4后引入 2.multiprocessing (1)使用threadin ...
- [币严BIZZAN区块链]数字货币交易所钱包对接之比特币(BTC)
在币严BIZZAN开发数字货币交易所的过程中,一共有两大难点,一个是高速撮合交易引擎,另一个是钱包对接,这两者是我们团队以前没有接触过的.这个系列的文章主要介绍数字货币交易所钱包对接实现技术.第一个要 ...