部分内容原文地址:

博客园:玄同太子: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. Scriptable Render Pipeline

    Scriptable Render Pipeline SRP的核心是一堆API集合,使得整个渲染过程及相关配置暴露给用户,使得用户可以精确地控制项目的渲染流程. SRP API为原有的Unity构件提 ...

  2. Azure Service Bus(三)在 .NET Core Web 应用程序发送ServiceBus Queue

    一,引言 在之前上一篇讲解到 Azure ServiceBus Queue 中,我们实地的演示了在控制台中如何操作ServiceBus Queue ,使用 Azure.Messgae.Service ...

  3. Android stdio使用时遇到的一些问题

    (1)android stdio加载布局时 Exception raised during rendering: com/android/util/PropertiesMap             ...

  4. ES6 浅谈Reflect

    Reflect 属于一个静态类,不能通过new的方法去创建实例,只能调用静态类中的一些静态方法,Reflect内部封装了一系列对对象的底层操作, Reflect 成员方法就是Proxy处理对象的默认实 ...

  5. 首秀:Markdown学习笔记

    # Markdown学习 ## 标题 ### 三级标题 #### 四级标题 ## 字体 **Hello,World!** *Hello,World!* ***Hello,World!*** ~~Hel ...

  6. netcore.ydal可能是东半球最好ORM框架

    typora-copy-images-to: static ydal 项目框架介绍 可能是东半球最好netcore ORM框架,目前暂时支持mysql.mssql,其核心设计目标是开发迅速.学习简单. ...

  7. Centos 6 下安装 OSSEC-2.8.1 邮件告警 (二)

    Ossec 配置邮件通知 ## 1 安装软件包: yum install -y sendmail mailx cyrus-sasl cyrus-sasl-plain #安装postfix邮件相关的软件 ...

  8. SQL Server解惑——查询条件IN中能否使用变量

    在SQL Server的查询条件中,能否在IN里面使用变量呢? 如果可以的话,有没有需要注意的地方或一些限制呢?在回答这个问题前,我们先来看看这个例子: IF EXISTS (SELECT 1 FRO ...

  9. MySQL select 查询之分组和过滤

    SELECT 语法 SELECT [ALL | DISTINCT] {* | table.* | [table.field1[as alias1][,table.field2[as alias2]][ ...

  10. dmp文件导入抽取方法

    一.确认dmp文件.oracle客户端和服务端的字符集 (1)dmp文件字符集确认: 使用UE打开dmp文件查看文件第2个和第3个字节内容,这两个字节记录了dmp文件的字符集.如0354,然后用以下s ...