• SonarQube+jenkins-自动化持续代码扫描




    部分内容原文地址:

    博客园:玄同太子: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监测平台

    在这里插入图片描述
    可以看到,每次构建任务都会生成一次报告。

  • 相关阅读:
    【逻辑漏洞技巧拓展】————4、逻辑漏洞之支付漏洞
    【逻辑漏洞技巧拓展】————3、逻辑漏洞之密码重置
    【逻辑漏洞技巧拓展】————2、Web安全测试中常见逻辑漏洞解析(实战篇)
    【逻辑漏洞技巧拓展】————1、逻辑至上之各种酷炫姿势
    【文件上传/解析技巧拓展】————4、文件上传总结
    【文件上传/解析技巧拓展】————3、服务器解析漏洞
    【文件上传/解析技巧拓展】————2、文件上传漏洞(绕过姿势)
    window 杀进程
    URL的三部分
    基本的浏览器连接处理步骤
  • 原文地址:https://www.cnblogs.com/aixing/p/13327208.html
Copyright © 2020-2023  润新知