zoukankan      html  css  js  c++  java
  • SonarQube环境搭建

    SonarQube简介

    SonarQube是一款开源的代码质量检查工具,主要用于源代码的质量检查,是devops流水线中很常用的一个工具,以插件化的形式,支持多种编程/脚本语言的代码分析,同时也提供了对常用IDE工具的支持。

    Sonar环境搭建

    Linux下环境搭建

    安装包下载地址:https://www.sonarqube.org/downloads/

    工具分为社区免费版和开发版,官网下载可能比较慢,我已经下载好的版本存放在网盘中,有需要的可以从百度网盘下载即可:

    链接:https://pan.baidu.com/s/1vKUlViVPzHCW8Q_14yE4PA

    提取码:1234

    SonarQube的安装包下载下来是一个zip压缩包,windows和linux下的安装包都是同一个,压缩包中会有针对不同系统的启动脚本:

    • linux环境搭建:(需提前安装好jdk )

    # 先创建一个sonar用户,用来启动sonar,具体可见注意事项第3点 
    groupadd sonar
    useradd sonar -g sonar -p sonar
    # 使用unzip命令解压压缩包使用unzip命令解压压缩包
    unzip sonarqube-8.4.2.36762.zip -d /home/sonar/devopstools
    
    
    # 把sonar所需用到的目录都授权给sonar
    chown -R sonar:sonar /home/sonar/devopstools/sonarqube-8.4.2.36762
    chown -R sonar:sonar jdkpath
    # 执行bin目录下的启动脚本
    cd /home/sonar/devopstools/sonarqube-8.4.2.36762/bin/linux-x86-64
    sh  sonar.sh start
    

    注意事项;

    1、sonarqube是需要依赖于jdk的,目前我所使用的sonarqube-8.4的版本,需要依赖于java11的版本,否则在启动的时候会报错 :

    2、sonarqube安装后,数据默认是存储在H2数据库引擎中的,可以在配置文件中修改数据存储的相关信息,配置文件存放于conf/sonar.properties文件中,目前支持H2(默认使用这个,但是官方推荐仅用于测试 ,商业环境中不推荐使用)、Oracle、PostgreSQL和SQLServer。

    在以前的版本中,会看到支持mysql,网上有很多教程都写的是配置mysql的数据源 ,从SonarQube v7.9版本开始,将不再支持mysql,具体可参考下面的官方申明:

    https://community.sonarsource.com/t/end-of-life-of-mysql-support/8667

    3、sonarqube启动的时候,会默认启动elasticsearch,elasticsearch现在默认不能以root用户启动 ,因为不能用root身份去启动sonar,否则执行sh sonar.sh start命令后,在logs文件中会出现如下的错误信息:

    sonar.log:

    es.log:

    Linux下通过Docker搭建SonarQube环境

    # 下载sonarqube的docker镜像:
    docker pull sonarqube
    docker run -itd --name sonarqube -p 9000:9000 sonarqube
    

    执行以上命令后,即可成功安装sonarqube,然后在浏览器中输入ip+端口9000访问即可。安装后,默认的登录用户名和密码是admin /  admin 。登录后初始化页面如下:

    Windows下安装SonarQube

    直接下载安装包解压后, 进入bin目录下的windows-x86-64文件夹中,然后执行bat脚本启动就行。(需提前安装好jdk并配置环境变量,新版本需依赖jdk11)

    Sonarqube安装目录介绍

    sonar安装目录常用的几个目录介绍:

    bin:下面存放了windows、linux和mac电脑的启动脚本

    conf:里面存放的是配置文件,其中sonar.properties里面可以更改sonar的数据源配置,端口等重要信息,wrapper.conf里面可以指定java的路径和一些其他的参数

    extensions:这个里面常关注的是plugins文件夹里面的内容,可以从官网下载其他插件放进去,扩展sonar的功能

    SonarQube基本操作

    1、生成token

    2、找一个java的maven工程,在pom所在目录直接执行下面的命令扫描:

    mvn sonar:sonar 
     -Dsonar.projectKey=demo 
     -Dsonar.host.url=http://106.53.29.33:9000 
     -Dsonar.login=27b9c784671905425be75c580f5ed818c9533bc5
    

    不同的语言,使用方法不一样,可以通过下图去筛选不通的语言,得到扫描的命令:

    3、查看扫描结果

    可以看到扫描出来的bug以及各种语言的代码行数,圈复杂度,代码重复率等指标的数据。

    总结

    1、以上已为大家介绍了SonarQube环境搭建,要注意 ,新的版本需要依赖jdk11,以后的版本可能依赖的会更高 ,遇到启动报错,要学会查看日志进行分析,linux下安装的时候,不能用root用户去安装,不然会报elasticsearch启动错误。

    2、SonarQube主要用来展示各个项目的扫描结果和数据,目前搭建的是sonar的服务端, 如果是扫描其他语言,可能需要下载安装sonar-scanner的插件,可以结合jenkins实现持续集成,能够在开发提交代码后自动触发扫描。

    3、更多Sonar的用法请持续关注,后面有时间再分享其他用法,随着版本的升级,很多的用法也需要及时去学习和更新 ,最好的办法就是参考官网的文档学习,可以少踩很多坑。

    往期精彩回顾

    Postman+Newman+Git+Jenkins实现接口自动化测试持续集成


    Fiddler Everywhere v1.0.1版本基础功能介绍


    App自动化测试之Appium环境搭建


    一篇文章为你揭秘pytest的基本用法


    Jenkins自动部署测试环境之jar包部署


    特定场景下才能复现的bug案例分享之--前端排序字段的锅

  • 相关阅读:
    mysql之数据库数据导入EXCEL表格
    Docker 删除所有容器
    Docker之Docker文件,一篇就够了
    Docker 安装与基本操作指令
    shell实例:九九乘法表,各种图形,幸运大抽奖
    Firewalld防火墙(包含firewall-config图形工具和firewall-cmd命令行工具如何使用)
    shell脚本--循环语句、(概念及实例)
    华为ENSP------access、trunk、hybrid配置连载2
    2020-11-16T11:13:27.991012Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 2020-11-16T11:13:27.991065Z 0 [ERROR] Aborting
    华为ESPN-------MSTP连载(4)
  • 原文地址:https://www.cnblogs.com/xiaobotester/p/13906150.html
Copyright © 2011-2022 走看看