部分内容原文地址:

博客园:玄同太子:Docker方式安装SonarQube

CSDN:KissedBySnow:SonarQube:SonarQube 汉化/SonarQube 中文包安装

博客园:废物大师兄:Jenkins 集成 SonarQube Scanner

Java云库:Jenkins集成SonarQube 实现构建项目同时审查代码

CSDN:yan_zuoyu:Sonarqube7.6 + Jenkins +Docker 部署



1.SonarQube

1.1 SonarQube介绍

SonarQube 是 一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测,

如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:

  • 检查代码是否遵循编程标准:如命名规范,编写的规范等。
  • 检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。
  • 检测代码的重复代码量:SonarQube 可以展示项目中存在大量复制粘贴的代码。
  • 检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
  • 检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。

SonarQube 平台是由 4 个部分组成:

  • SonarQube Server
  • SonarQube Database
  • SonarQube Plugins
  • SonarQube Scanner

1.1.1 SonarQube 工作流程

SonarQube 在进行代码质量管理时,会从下图 所示的七个纬度来分析项目的质量。



SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。下图是使用SonarQube做代码持续审查的流程图:



开发人员把代码push到SCM(如gitlab)【上图第2步】,jenkins构建定义好的job,然后通过jenkins 插件(sonar scanner)分析源码【上图第3步】,jenkins把分析报告发到sonarqube server【上图第4步】。

1. 2 Docker方式安装SonarQube

获取镜像:

docker pull postgres:10
docker pull sonarqube

启动镜像

docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=1 --name postgres postgres:10
docker run -d -p 9000:9000 -e "SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.114.131:5432/sonar" -e "SONARQUBE_JDBC_USERNAME=postgres" -e "SONARQUBE_JDBC_PASSWORD=1" --name sonarqube sonarqube

此处启动,我这边遇到一个报错,提示的是sonar数据库不存在,通过SQL命令或者Navicat等工具,创建sonar数据库即可。

PostgreSQL 创建数据库:

  1. 使用 CREATE DATABASE SQL 语句来创建。(CREATE DATABASE dbname;)
  2. 使用 createdb 命令来创建。(createdb [option…] [dbname [description]])

之前本地使用的是mysql:5.7的数据库,然后通过docker方式启动。

docker run -d --name sonarqube -p 9999:9000 -p 9992:9092 -e "SONARQUBE_JDBC_USERNAME=sonar" -e "SONARQUBE_JDBC_PASSWORD=123456" -e "SONARQUBE_JDBC_URL=jdbc:mysql://192.168.0.xx:3307/sonar?useUnicode=true&characterEncoding=utf8&useSSL=false"   -v /etc/localtime:/etc/localtime  sonarqube

结果发现启动不了,最后docker pull下来的镜像是7.9+的版本,错误信息提示,7.9或者更高的版本不支持mysql,后进行了修正,改用Postgresql。

2.SonarQube的使用

SonarQube搭建成功后,通过网址访问

http://localhost:9999

初始账号密码:admin

2.1 SonarQube汉化

登录进入后:

Administration->Marketplace->Plugins:



页面往下翻,找到 Chinese Pack 然后点击 Install



下载成功后,点击 Restart,然后出来的弹窗也点 Restart。

然后重新输入账号密码即可进入。

3.SonarQube+Jenkins集成

3.1 Jenkins安装SonarQube插件

安装完成后重启Jenkins。

通过网页重启:

http://ip:8080/restart

重新加载配置:

http://ip:8080/reload

3.2 Jenkins配置Sonar插件

在Jenkins中配置连接sonarqube服务器的地址。



token,我这边直接配置了无。



最后,配置全局工具配置。



3.3 Jenkins构建任务扫描代码质量





最重要的是,配置SonarQube analysis properties。

可以将其单独写到一个配置文件(sonar-project.properties)里面,也可以像这样每次都写一遍。

sonar.projectKey=ks-cms-unicorn
sonar.projectName=ks-cms-unicorn
sonar.projectVersion=1.0 sonar.language=java
sonar.sourceEncoding=UTF-8 sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

第一次构建时,没有构建成功,错误信息大概意思为缺少sonar.java.binaries,在最后添加一下二进制文件的路径地址即可。

sonar.projectKey=service-xxx
sonar.projectName=service-xxx
sonar.language=java
sonar.java.source=1.8
sonar.sources=${WORKSPACE}/src/main/java
sonar.java.binaries=${WORKSPACE}/target/classes

3.4 查看SonarQube监测平台



可以看到,每次构建任务都会生成一次报告。

SonarQube+jenkins-自动化持续代码扫描的更多相关文章

  1. SonarQube+Jenkins,搭建持续交付平台

    前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...

  2. 03 . Jenkins构建之代码扫描

    Sonar简介 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具,以及持续集成工具.与持续集成工具(例如 Hudson/Jenkins 等)不 ...

  3. 使用jenkins+sonar进行代码扫描,并发送自定义邮件

    jenkins架构 1.一台机器作为jenkins master不进行构建操作,只负责调度其他slave节点执行任务 2.一台slave机器作为执行机器存放从gitlab上拉取的代码,使用sonar- ...

  4. Jenkins自动化部署代码

    通过jenkins自动化部署项目代码可以大幅度节省打包上传部署的时间,提高开发测试的工作效率 ========== 完美的分割线 =========== 1.Jenkins是什么 1)Jenkins是 ...

  5. 搭建Jenkins自动化持续构建和部署系统

    什么是Jenkins? Jenkins是一个持续集成和持续交付的java应用程序,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.简单得说就是一款自动化构建测试和部署的 ...

  6. JMeter+ant+jenkins自动化持续集成

    一.ant安装配置 1.官网下载地址:http://ant.apache.org/bindownload.cgi 对应的操作系统选择对应的版本下载,本文以windows为列,下载后解压到本地 2.设置 ...

  7. 终端curl调用jenkins自动化持续集成

    1.curlcurl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 1.1 获取url指向的页 ...

  8. SonarQube+Jenkins+Cppcheck实现C++代码扫描

    背景:公司部分项目是由C++进行开发,因此对此有需求. sonarqube:docker化安装(alpine系统),版本8.3.1 (build 34397) jenkins:docker化安装,版本 ...

  9. 手把手教你用SonarQube+Jenkins搭建--前端项目--代码质量管理平台 (Window系统)

    前言 网上教程大多介绍的是Linux系统下SonarQube+Jenkins如何使用,这是因为这两款软件一般都是部署在服务器上,而大多数服务器,采用的都是Linux系统.大多数服务器用Linux的原因 ...

随机推荐

  1. 4.简单的 GNU 汇编语法

    芯片启动时很多设备没有初始化,需要汇编语言进行准备. 简单的GNU汇编语法: 1 label: instruction @ comment label :标号,类似于外号,为所在位置做标号,可以通过这 ...

  2. 使用docker制作Mysql镜像

     一.过程说明 通过Dockerfile创建mysql镜像,使用的mysql软件包为mariadb二进制分发版,最终在宿主机启动mysql容器从而能在mysql容器外部访问mysql服务. 宿主机IP ...

  3. MySQL [ERROR] Table 'mysql.user' doesn't exist

    问题描述: 在安装MYsql时,/etc/init.d/mysqld start时报错: [root@master data]# /etc/init.d/mysqld start Starting M ...

  4. 风炫安全WEB安全学习第十八节课 使用SQLMAP自动化注入(二)

    风炫安全WEB安全学习第十八节课 使用SQLMAP自动化注入(二) –is-dba 当前用户权限(是否为root权限) –dbs 所有数据库 –current-db 网站当前数据库 –users 所有 ...

  5. 测试如何区分前后端bug

    当我们测试到前后端分离的项目时,可能就会想这个bug我到底应该指给谁,是前端的问题还是后端的呢,为了让自己更专业,分清前后端问题还是很重要的. 1.如图商品详情中显示[件装:1,中包装:2 ]但是在后 ...

  6. python后端开发面试总结

    网络协议 通信计算机双方必须共同遵从的一组约定,只有遵守这个约定,计算机之间才能相互通信交流 TCP / IP TCP/IP(传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇.TC ...

  7. Head First 设计模式 —— 10. 迭代器 (Iterator) 模式

    思考题 public void printMenu() { PancakeHouseMenu pancakeHouseMenu = new PancakeHouseMenu(); ArrayList ...

  8. Mac使用HomeBrew

    前言 考虑许久终于决定入手mac耍耍,还是因为要找工作了,手上的win本大学入的,现在使用卡顿太多,另外就是mac作为程序员之友仰慕已久.决定在PDD入了.到手后发现mac真的跟win有很大差别.还是 ...

  9. python学习笔记 | macOS Big Sur动态壁纸食用指南

    目录 前言 爬虫篇 壁纸使用篇 后记 前言 北京时间23日凌晨1点,苹果WWDC2020大会开幕.在发布会上,苹果正式发布了新版macOS,并将其命名为"Big Sur". 相比于 ...

  10. 四:WEB源码扩展

    前言:WEB源码在安全测试中是非常重要的信息来源,可以用来进行代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析,获取某ASP源码后就可以采用默认数据库下载为突破,获取某其他脚本 ...