SonarQube 安装及使用

news/2024/11/17 9:38:49/文章来源:https://www.cnblogs.com/machangwei-8/p/18375840

简介

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/786067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基础组件:按钮

Material 组件库中提供了多种按钮组件如ElevatedButton、TextButton、OutlinedButton等,它们都是直接或间接对RawMaterialButton组件的包装定制,所以他们大多数属性都和RawMaterialButton一样。在介绍各个按钮时我们先介绍其默认外观,而按钮的外观大都可以通过属性来自定义,…

线性dp:最长公共子串

最长公共子串本文讲解的题与leetcode718.最长重复子数组,题意一模一样,阅读完本文以后可以去挑战这题。力扣链接 题目叙述: 给定两个字符串,输出其最长公共子串的长度。 输入 ABACCB AACCAB输出 3解释 最长公共子串是ACC,其长度为3。 与最长公共子序列的区别公共子串:字符…

【matplotlib教程】数据可视化

@TOC显示中文和负号matplotlib默认使用英文字库,汉字会乱码,要指定中文字库matplotlib.rcParams[font.family]=simHei #黑体 matplotlib.pyplot.rcParams[axes.unicode_minus] = False # 显示负号1.各种绘图函数 1.1 matplotlib.pyplot.plot def plot(*args, scalex=True, s…

Charles 抓包工具安装下载

下载 下载地址:https://www.charlesproxy.com/latest-release/download.do 激活 激活地址:https://www.zzzmode.com/mytools/charles/ 激活 help-》Register Charles 作者:陈彦斌 出处:https://www.cnblogs.com/chenyanbin/关注: 点我哟(^U^)ノ~YO

api调用工具推荐__hoppscotch(postwomen)

下载地址https://hoppscotch.com/downloadhoppscotch是一款开源api调用工具,该api调用工具之前叫postwomen,大概率是为了蹭postman热度,后来确实在开发者群体中被广泛使用,已经不再需要这种热度了,因此改名hoppscotch 官方给出改名的理由如下Similarity in name with &quo…

C#/.NET这些实用的编程技巧你都会了吗?

DotNet Exercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库、工作业务实操练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core中各种编程常用语法、算法、技巧、中间件、类库、工作业务实操等等。GitHub源码地址:https://gi…

【日记】卸载了黑神话(402 字)

正文黑神话卸载了。电脑太卡了。等换电脑之后再玩吧。不过什么时候换我就不知道了,说实话,我觉得很有可能要把这台电脑用报废之后才会换了,保守估计得有个一年。那时候我还想不想打开这游戏都两说。而且听说剧情不太好,起码目前为止,孙悟空不再是那个正义、嫉恶如仇、惩恶…

PLT绘图

1、绘制不同颜色的点(二维) import matplotlib.pyplot as pltif __name__ == __main__:# 准备数据x = [1, 2, 3, 4, 5] # X轴上的点y = [1, 4, 9, 16, 25] # Y轴上的点,这里以x的平方为例colors = [red, green, blue, yellow, purple] # 点的颜色列表# 绘制点for i in ra…

Clion配置-运行多个单独cpp代码的main函数

修改CMakeLists.txt文件为 project(Your Project Name)set(CMAKE_CXX_STANDARD 11)# 遍历项目二级目录下所有的 .cpp 文件 file (GLOB files */*.cpp) foreach (file ${files})string(REGEX REPLACE ".+/(.+)/(.+)\\..*" "\\1-\\2" exe ${file})add_execut…

CSSpart-2(继续part-1)

CSS2基础 基础 简介 【全称】Cascading Style Sheets,又名层叠样式表层叠:一层一层涂上去 表:列表 样式:如文字大小,颜色,元素宽高等。CSS 描述了在屏幕、纸质、音频等其他媒体上的元素应该如何被渲染的问题。语言类型 标记语言,为HTML结构美化样式,实现语义与效果的分…

Spherical Voxelization

介绍了球面体素化的过程,包括重要的类和方法,如ConvertToSphericalVoxel和spherical_voxel_optimized,详细解释了参数及其作用。球面体素化通过将点云转换为球面坐标系,利用自适应采样权重来平衡不同纬度区域的点密度,从而有效捕捉几何特征。文中还提到C++绑定的sv.comput…