首页 > 其他分享 >SonarQube 安装及使用

SonarQube 安装及使用

时间:2024-08-23 13:53:20浏览次数:10  
标签:scanner 项目 SonarQube 代码 配置 使用 sonar 安装

简介

SonarQube是一款用于代码质量管理的开源工具,是静态代码检查工具,采用 B/S 架构它主要用于管理源代码的质量,可以支持众多计算机语言,比如 php,java, C#, go,C/C++, Cobol, JavaScrip, Groovy 等。sonar 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。

可以从七个维度检测代码质量

1)复杂度分布(complexity):代码复杂度过高将难以理解

2)重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方

3)单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况

4)代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范

5)注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读

6)潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug

7)结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度

架构

SonarQube 平台由 4 个组件组成:

1)一个 SonarQube 服务器启动 3 个主要进程:

  • 供开发人员、管理人员浏览质量快照和配置 SonarQube 实例的 Web 服务器

  • 基于 Elasticsearch 的 Search Server 支持从 UI 进行搜索

  • Compute Engine Server 负责处理代码分析报告并将其保存在 SonarQube 数据库中

     

 

2)一个用于存储的 SonarQube 数据库:

  • SonarQube 实例的配置(安全性、插件设置等)
  • 项目、视图等的质量快照。

3)服务器上安装了多个 SonarQube 插件,包括语言、SCM、集成、身份验证等

4)在您的构建 / 持续集成服务器上运行一个或多个 SonarScanner 来分析项目

一体化

 

 

1)开发人员在他们的 IDE 中编码并使用 SonarLint 运行本地分析。

2)开发人员把代码推送到 Git 等代码管理仓库

3)通过 Jenkens 等持续集成服务器,并使用 sonar-scanner 进行代码分析

4)分析报告被发送到 SonarQube 服务器进行处理。

5)SonarQube Server 将分析报告结果处理并存储在 SonarQube 数据库中,并在 UI 中显示结果。

6)开发人员通过 SonarQube UI 审查、评论、挑战他们的问题,以管理和减少他们的技术债务。

7)使用 API 来自动化配置并从 SonarQube 中提取数据。

安装 sonar

本文安装的版本是 SonarQube 7.6 版本,目前最高版本 (2021 年 7 月 27 日 10:29:21) SonarQube 9.0,2019 年 4 月 10 号,SonarQube 发文称在 7.9 之后,所有的 SonarQube 的版本中将停止对 MySQL 的支持。

1)SonarQube 7.6

2)java 1.8

3)Mysql 5.6

CentOs6.9 安装可参考 博客

安装完后可打开网址:

安装 sonar-scanner

本文使用 Sonar-scanner 进行代码分析

  1. 根据环境 下载,本文以 linux 系统为例

  2. 上传 sonar-scanner-cli-4.6.2.2472-linux.zip 文件到虚拟机或服务器

  3. 解压缩

     `unzip sonar-scanner-cli-4.6.2.2472-linux.zip`
  4. 添加 sonar-scanner-4.6.2.2472-linux/bin 到环境变量

    • vim /etc/profile
      1.   #配置 sonar-scanner
      2.   SONAR_RUNNER_HOME=/opt/sonar-scanner-4.6.2.2472-linux
      3.   PATH=$SONAR_RUNNER_HOME/bin:$PATH
      4.   export SONAR_RUNNER_HOME
      5.   export PATH
    • source /etc/profile
    • sonar-scanner -h 查看是否添加成功
      1.   INFO:
      2.   INFO: usage: sonar-scanner [options]
      3.   INFO:
      4.   INFO: Options:
      5.   INFO: -D,--define <arg> Define property
      6.   INFO: -h,--help Display help information
      7.   INFO: -v,--version Display version information
      8.   INFO: -X,--debug Produce execution debug output
  5. 修改 sonar-scanner 配置文件 sonar-scanner-4.6.2.2472-linux/conf

    • vim sonar-scanner.properties

      1.   #Configure here general information about the environment, such as SonarQube server connection details for example
      2.   #No information about specific project should appear here
      3.    
      4.   #----- Default SonarQube server
      5.   sonar.host.url=http://127.0.0.1:10005
      6.    
      7.   #----- Default source code encoding
      8.   #sonar.sourceEncoding=UTF-8
      9.   sonar.jdbc.url=jdbc:mysql://127.0.0.1:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
      10.   #数据库账号
      11.   sonar.jdbc.username=sonar
      12.   #数据库密码
      13.   sonar.jdbc.password=sonar
      14.   sonar.sorceEncoding=UTF-8

      此配置文件是有关环境的常规信息,例如 SonarQube 服务器连接详细信息。有关特定项目的信息不应该在此处配置

检测代码

SonarQube 创建项目

  1. 打开 SonarQube Web 页面创建项目

    SonarQube 安装及使用

     

    SonarQube 安装及使用

     

    SonarQube 安装及使用

     

    SonarQube 安装及使用


    本文使用 PHP 进行分析

使用 Sonar-scanner 分析代码

  1. 进入需要分析的代码项目路径下

  2. touch sonar-project.properties 在项目路径下创建文件,

  3. vim sonar-project.properties

    1.   # must be unique in a given SonarQube instance
    2.   sonar.projectKey=test
    3.    
    4.   # --- optional properties ---
    5.    
    6.   # defaults to project key
    7.   sonar.projectName=test
    8.   # defaults to 'not provided'
    9.   sonar.projectVersion=1.0
    10.    
    11.   # Path is relative to the sonar-project.properties file. Defaults to .
    12.   # 多个路径可以使用逗号隔开
    13.   sonar.sources=./app,./config
    14.    
    15.   # Encoding of the source code. Default is default system encoding
    16.   sonar.sourceEncoding=UTF-8
    17.   #这个具体作用目前不太清除,官网也没写
    18.   sonar.java.binaries=.
    19.   # SonarQube 创建项目生成的令牌
    20.   sonar.login=6c8148e18e76fbc96e73354
    描述
    sonar.projectKey 项目的唯一键。允许的字符是:字母,数字 - , _ , . 和 : ,与至少一个非数字字符。
    sonar.sources 需要进行代码分析的文件目录,多个使用逗号分割
    sonar.projectName 将显示在 Web 界面上的项目名称。
    sonar.projectVersion 项目版本
    sonar.login 对项目具有执行分析权限的 SonarQube 用户的登录或身份验证令牌
    sonar.password 与 sonar.login 用户名一起使用的密码。如果正在使用身份验证令牌,则应将其留空
    sonar.projectDescription 项目说明
    sonar.sourceEncoding 源文件的编码。例如: UTF-8

    更过参数请参考 官方文档

  4. 在 sonar-project.properties 文件同级目录执行 sonar-scanner

    SonarQube 安装及使用

  5. 查看 SonarQube Web 页面,就可以看到 test 项目有一个 后台任务 正在执行,此时就是 Sonar-scanner 提交数据到 SonarQube 服务器,SonarQube 服务器分析数据

    SonarQube 安装及使用

  6. 后台任务执行完,就可以查看代码分析结果

    SonarQube 安装及使用

SonarQube 简单使用

用户管理

  1. 创建群组

    1. 配置 > 权限 > 群组 > 右上角

      SonarQube 安装及使用

  2. 创建用户

    1. 配置 > 权限 > 用户 > 右上角

      SonarQube 安装及使用

  3. 添加用户到 PHP 群组

    SonarQube 安装及使用

  4. 配置 PHP 群组对 test 项目的权限

    • 项目 -> test 项目 -> 配置 -> 权限

      SonarQube 安装及使用


      权限页面可以设置当前项目是 公开 活 私有 项目
      可以分配给 PHP 群组六个具体权限
  5. 具体的权限分类

    • 浏览:访问一个项目,浏览它的指标,创建 / 编辑它的问题。
    • 查看源码:查看项目的源代码。(用户也需要 “浏览” 权限)
    • 问题管理员:对问题进行额外编辑:设置误判 / 不会修复,修改问题严重级别。(用户也需要 “浏览” 权限)
    • 管理安全热点:通过” 安全热点” 检测漏洞。驳回,清理,接受,重开” 安全热点”(用户也需要” 浏览” 权限)
    • 管理员:查看项目配置,执行管理任务。(用户也需要 “浏览” 权限)
    • 执行分析:可以获取执行分析的所有配置(包含安全配置,比如密码),并可以将分析结果推送至 SonarQube 服务器。

质量配置

质量配置是在分析时使用的 规则集合。每个语言都有默认配置。没有指定其他配置的项目会使用默认配置。

PHP 的质量配置安装后有三个 DrupalPSR-2Sonar way

 

SonarQube 安装及使用

其中 Sonar way 是系统默认使用的质量配置,可以看到规则有 111 种。

自定义质量配置

如果系统默认的满足不了现有条件,点击右上角 创建 按钮

 

SonarQube 安装及使用


可根据现有的质量配置创建一个新的配置,或创建一个空的配置。

 

SonarQube 安装及使用

  1. 新建的配置可以分配权限给群组或个人
  2. 可以把当前配置分配给具体项目,使用此配置进行代码检测
  3. 添加更多的规则

    SonarQube 安装及使用

除此之外还有一些其它基础配置

 

SonarQube 安装及使用

质量阈

质量阈相当于一个代码检测的阈值,代码问题超过阈值会出现提示,或发送邮件通知。
默认的质量阈 Sonar Way,如果一个项目没有指定质量阈,则默认使用此质量阈。

可根据项目不同,创建不同的质量阈

 

SonarQube 安装及使用

  1. 根据具体要求添加不同的指标
  2. 选择适用的项目

 

SonarQube 安装及使用


可看到 bugs 数阈值设定的 10,代码检测出来 92,此时项目状态为 错误级别(没有超阈值为 正常

邮件通知

SonarQube 可以设置在一些事件发生时,通过邮件的方式进行提醒

开启邮箱 SMTP 服务

在 QQ 邮箱 中开启服务

SonarQube 安装及使用

  1. 开启 IMAP/SMTP 服务
  2. 生成授权码
SonarQube 邮箱配置

可以使用有修改配置权限的账号,或管理员账号进行邮件信息配置

 

SonarQube 安装及使用

 

SonarQube 安装及使用

SonarQube 邮件通知配置

可以在 我的账号 -> 提醒 选择需要开启的通知

 

SonarQube 安装及使用

当有新的问题分配时,会进行邮件提醒

 

SonarQube 安装及使用

可以看到邮件下面有个问题的连接,跳转的前缀域名可以在 配置 里面进行配置

 

SonarQube 安装及使用

配置后发送邮件

 

SonarQube 安装及使用

分支扫描

SonarQube Community 版本不支持多分支扫描,所以可以使用 github 的 sonarqube-community-branch-plugin 插件

根据 SonarQube 版本选择插件版本

 

SonarQube 安装及使用

  1. 下载合适的 jar 包,并放置在你安装 SonarQube 的目录下 sonarqube/extensions/plugins

  2. 重启 SonarQube Service 服务

    SonarQube 安装及使用

  3. 切换你需要分析的分支并修改扫描项目下的 sonar-project.properties 文件

    1.   sonar.projectKey=test
    2.    
    3.   # --- optional properties ---
    4.    
    5.   # defaults to project key
    6.   sonar.projectName=test
    7.   # defaults to 'not provided'
    8.   sonar.projectVersion=1.0
    9.    
    10.   # Path is relative to the sonar-project.properties file. Defaults to .
    11.   sonar.sources=./app,./config
    12.    
    13.   # Encoding of the source code. Default is default system encoding
    14.   sonar.sourceEncoding=UTF-8
    15.   #这个具体作用目前不太清除,官网也没写
    16.   sonar.java.binaries=.
    17.   # SonarQube 创建项目生成的令牌
    18.   sonar.login=7eee3f6b73b5cab929c30f5bca7bc0a8bf84ec25
    19.   # 项目所处分支(一般和 jenkins 结合,通过变量动态修改分支名)
    20.   sonar.branch.name=release-1
  4. sonar-scanner 重新扫描

  5. 可在 SonarQube Web 页面看到新的分支信息

    SonarQube 安装及使用

多分支

SonarQube 的分支可分为

  1. 主分支:一般为 master
  2. 短期分支:短期分支的问题和长期分支相比是 增量 的数据
  3. 长期分支:长期维护的分支,如 release 和 develop 分支,问题数据 单独 存储

主分支如果不为 master,可修改主分支名字

 

SonarQube 安装及使用

同时可修改 长期分支 的分支匹配规则

 

SonarQube 安装及使用

Jenkins 使用 SonarQube

自行百度安装 Jenkins

安装 SonarQube Scanner 插件

Manage Jenkins -> Manage Plugins -> Sonarqube Scanner
 

SonarQube 安装及使用


安装完后重启 Jenkins

配置 SonarQube servers

Manage Jenkins -> Configure System -> SonarQube servers
 

SonarQube 安装及使用


填写自己的 SonarQube Web 地址,并创建一个 凭证

凭证添加
  1. SonarQube Web 使用管理员账户生成一个令牌 我的账户 -> 安全

    SonarQube 安装及使用

  2. 在 Jenkins 添加凭证

    SonarQube 安装及使用

配置 SonarQube Scanner

Manage Jenkins -> Global Tool Configuration -> SonarQube Scanner

 

SonarQube 安装及使用

创建 Jenkins 项目

  1. 新建一个 Item
     

    SonarQube 安装及使用


    选择一个自由风格的类型创建

  2. 创建构建信息
     

    基础信息


     

    SonarQube 安装及使用

    基础信息-git参数

     

    源码管理


     

    构建

    构建-参数

    1.   sonar.projectKey=${JOB_BASE_NAME}
    2.   sonar.projectName=${JOB_BASE_NAME}
    3.   sonar.projectVersion=1.0
    4.   sonar.sources=./app
    5.   sonar.sourceEncoding=UTF-8
    6.   sonar.java.binaries=.
    7.   sonar.branch.name=${Branch}

     

    构建后操作


    构建后删除工作区,本案例只是单一的进行代码检测,不进行后续的操作,所以可以选择删除工作区

运行项目

 

SonarQube 安装及使用


 

SonarQube 安装及使用


如果是第一次运行,请务必选择 master 分支,不然会失败,因为 SonarQube Web 默认第一个分支就是 master
 

SonarQube 安装及使用

SonarQube 安装及使用

参考

www.cnblogs.com/ycyzharry/p/116890...
www.cnblogs.com/wangxu01/articles/...

 

 

原文链接: https://learnku.com/articles/59179

 

标签:scanner,项目,SonarQube,代码,配置,使用,sonar,安装
From: https://www.cnblogs.com/machangwei-8/p/18375840

相关文章

  • 使用HWiNFO查看电脑硬件信息
    下载下载网址点击下载并安装即可,应该是需要“上网”才能下载的使用运行HWiNFO打开软件后会显示电脑概要,如图所示我们关闭这个概要界面,点击传感器传感器监控界面CPU功率:62.28WGPU功率:29.44W......
  • get_cli安装及使用
    1.安装flutterpubglobalactivateget_cli它的作用是在Flutter开发环境中激活一个名为get_cli的全局包。该命令的详细解释:flutterpub:这是Flutter命令行工具中的一个子命令,用于管理Flutter包(Package)。globalactivate:这部分表示要执行一个全局激活操作。ge......
  • 使用kubectl创建多实例容器
    使用Kubernetes生成容器的多个实例可以通过以下步骤实现:创建一个Kubernetes集群:首先,需要在云平台上创建一个Kubernetes集群,例如腾讯云的容器服务TKE。在TKE上,可以通过控制台或API创建一个Kubernetes集群,选择合适的地域、可用区、节点配置等。编写容器镜像的描述文件:在生成容器......
  • 阿里巴巴中间件canal的搭建和使用以及linux命令下使用mail发送html格式的邮件
    一、阿里巴巴中间件canal的搭建和使用    canal可以用来监控数据库数据的变化(binlog日志),从而获得指定数据的变化。canal是应阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求时开始逐步的尝试基于数据库的日志解析,获取增量变更进行同步,由此衍生出了增量订阅......
  • minio安装
    一、下载https://min.io/download?license=agpl&platform=docker二、安装直接解压三、启动bin\minio.exeserverdata--console-address"127.0.0.1:9000"--address"127.0.0.1:9005"三、登录控制台控制台地址:http://127.0.0.1:9000四、管理存储桶五、通过批处理修......
  • 如何在Windows下使用make编译Makefile
    最近有小伙伴咨询我去编译运行一个程序。我一开始以为是CMakeLists,结果发现是makefile。 什么是Makefile‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序,从而提高软件开发效率。Makefile的主......
  • 【AI绘画入门】Stable diffusion安装教程,Windows+Mac系统,新手也能学会,看不懂算我输,文
    大家好,我是设计师子衿一、Stablediffusion简介Stablediffusion(简称SD),这是一个文本到图像生成模型,简单来说就是目前一个比较流行且效果较好的AI文生图工具,对比其他AI文生图工具,SD的最大优势就是开源免费,定制化强,目前有很多大佬帮我们弄了sd的安装包,整个安装流程难度几......
  • python安装paramiko报错
    腾讯云上python3.6,使用pip3.6install paramiko报错[root@VM-0-14-centostest]#pip3.6installparamikoWARNING:Runningpipinstallwithrootprivilegesisgenerallynotagoodidea.Try`pip3.6install--user`instead.CollectingparamikoDownloadinghttp://......
  • lvgl 使用demo
    实现效果  代码#defineOBJ_PARENT_WIDTH970#defineOBJ_PARENT_HEIGH446#defineOBJ_BTN_WIDTH150#defineOBJ_BTN_HEIGH50#defineOBJ_BTN_POS_X120#defineOBJ_BTN_POS_Y40#defineOBJ_ITEM_WIDTH420#defineOBJ_ITEM_H......
  • 微前端架构:使用不同框架构建可扩展的大型应用
    随着前端技术的发展,构建和维护大型应用变得愈发复杂。传统的单体前端架构逐渐暴露出诸多问题,如代码臃肿、构建时间过长、团队协作困难等。为了解决这些问题,微前端架构应运而生。微前端架构允许我们将一个大型应用拆分成多个独立的子应用,每个子应用可以使用不同的技术栈独立......