介绍

Sonar是一个代码质量管理的开源平台,基于Java开发的,用于管理源代码的质量,通过插件形式,可以支持包括java、C#、JavaScript等二十余种编程语言的代码质量管理与检测。



它具有免费的社区版本和其他付费版本。

SonarQube之采购选型参考

利用SonarQube的主要好处是:它集成了数千种自动的静态代码分析规则,旨在提高开发人员的代码质量和安全性,使得开发人员编写更加干净,更加安全的代码。

主要提供了三个比较大的功能:

  • 代码可靠性支持:提前捕获和提示代码中的错误,从而避免未定义的行为影响到终端用户。

  • 应用安全支持:修复可能危害到应用程序的漏洞,并通过安全热点学习AppSec(简单理解就是会学习和识别新的漏洞)。

  • 技术债务支持:确保管理的代码库干净并且可维护,以便提高开发人员的开发效率。

这可以帮助你确保代码在合并之前达到预期的质量!

  • 只需一行命令即可轻松集成到CI/CD管道中。

  • 也可以集成到Maven和Gradle构建周期中

  • 检查几乎所有内容,如代码质量,格式,变量声明,异常处理等。

实际上,研发团队可以基于SonarQube做下面的事情:

  • CI/CD流程加入一个SonarQube扫描的环节

  • 实施代码质量阈值,只有通过了这个质量阈值检测才能进入下一个流程

  • 代码质量低于阈值的项目要及时调整对应的代码

质量阈值可以进行自定义,SonarQube中针对每个项目会有详细的面板信息,里面会给出项目当前的健康状态,不同级别漏洞的分类和明细,漏洞对应提交者等多维度的统计信息,方便进行问题的追踪和修复。

针对不同的项目,SonarQube可设定了不同等级的阈值,对于老项目,会使用最低等级的阈值:阻断性的错误数量要求为0,对于一些新的项目,则严格要求质量如严重性的错误要求为0等,只要无法通过质量阈值检查,那么项目是无法上线的。

组成

1、SonarQube服务器

sonarqube是sonar的服务端,相当于一个web服务器,用来发布应用,在线浏览、配置分析等。

  • 开发人员和管理员操作频繁,用于浏览代码质量和配置服务器。

  • 集成ElasticSearch做搜索服务,用于返回通过UI搜索内容。

  • 集成计算引擎处理代码分析后的报告,并将报告保存到数据库。

image.png

每个文件夹的作用

 bin:sonarqube运行命令文件夹

 conf:sonarqube配置文件夹

 data:嵌入式数据库的数据(H2数据库引擎),建议只用于测试和演示

 extensions:sonarqube的插件等存放文件夹

 lib:sonarqube存放的运行库文件夹(jar)

 logs:sonarqube日志文件夹

 temp:sonarqube临时文件夹  

 web:sonarqube系统UI界面文件夹

 ```

### 2、SonarQube数据库

*   存储代码分析数据报告。

*   支持oracle、PostgreSQL、MySQL。

### 3、Sonarqube-Scanner

sonarqube-scanner相当于sonar客户端, sonarqube-scanner如下图所示。每个文件夹的作用和sonar类似,具体不在赘述。


* 客户端工具,用于扫描项目。 * 将扫描结果上传到服务器。 ![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936421-622703806.png) ### 4、SonarQube Plugins * 通过插件使平台功能更加强大, * 常用的插件分类:SCM、集成、身份验证、管理维护等插件。 外部集成
---- 下面的模式展示了SonarQube如何与其他ALM工具集成,以及使用SONARQUE的各种组件。 1. 开发人员在IDE中编写代码,并使用SonarLint来运行本地分析。 2. 开发人员将他们的代码推到他们最喜欢的SCM:Git,Svn,TFVC,… 3. 连续集成服务器触发自动构建,执行SONARQUE扫描器需要运行SONARQUE分析。 4. 分析报告被发送到SONARQUE服务器进行处理。 5. SONARQUE服务器在SONARQUE数据库中处理和存储分析报告结果,并将结果显示在UI中。 6. 开发人员审查、评论、挑战他们的问题,通过SONARQUE UI管理和减少他们的技术债务。 7. 管理者从分析中得到报告;使用API来自动配置并从SONARQUE中提取数据;使用JMX监控SONARQUBE服务器 ![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936717-211760692.png) SonarLint
--------- SonarLint是一个Sonar IDE插件,可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer, SonarLint本身也可以基于一些规则对代码IDE中的代码进行即时的检测。它的目的是在您键入代码时提供即时反馈。
![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936817-1917286195.png)![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936719-717063249.png)
**注意:**为了获得最佳性能,Sonar Qube服务器和数据库应安装在单独的主机上,并且服务器主机应为专用主机。服务器和数据库主机应位于同一网络上。 所有主机都必须进行时间同步

SonarQube系列-架构与外部集成的更多相关文章

  1. SonarQube系列三、Jenkins集成SonarQube(dotnetcore篇)

    [前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...

  2. SonarQube系列二、分析dotnet core/C#代码

    [前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...

  3. SonarQube系列一、Linux安装与部署

    [前言] 随着项目团队规模日益壮大,项目代码量也越来越多.且不说团队成员编码水平层次不齐,即便是老手,也难免因为代码量的增加和任务的繁重而忽略代码的质量,最终的问题便是bug的增多和代码债务的堆积.因 ...

  4. C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案

    BIMFACE二次开发系列目录     [已更新最新开发文章,点击查看详细] 在我的博客<C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案>.<C#开发BI ...

  5. ldap配置系列二:jenkins集成ldap

    ldap配置系列二:jenkins集成ldap jenkins简介 jenkins是一个独立的.开放源码的自动化服务器,它可以用于自动化与构建.测试.交付或部署软件相关的各种任务. jenkins官方 ...

  6. ldap配置系列三:grafana集成ldap

    ldap配置系列三:grafana集成ldap grafana的简介 grafana是一个类似kibana的东西,是对来自各种数据源的数据进行实时展示的平台,拥有这牛逼的外观.给一个官方的demo体验 ...

  7. Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02

    1.      Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求, ...

  8. SpringBoot系列(六)集成thymeleaf详解版

    SpringBoot系列(六)集成thymeleaf详解版 1. thymeleaf简介  1. Thymeleaf是适用于Web和独立环境的现代服务器端Java模板引擎.  2. Thymeleaf ...

  9. Springboot系列(七) 集成接口文档swagger,使用,测试

    Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...

  10. Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA

    大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...

随机推荐

  1. vscode 注释快捷键 一键注释和取消注释快捷键

    // 注释:ctrl+/ /**/ 注释:alt+shift+a

  2. Anaconda3安装(Win_x64)

    一.获取Anaconda3 链接:https://pan.baidu.com/s/14Imqk1KBsB84Mwzebpv2BA?pwd=no2x 提取码:no2x --来自百度网盘超级会员V4的分享 ...

  3. Python实现猜拳小游戏的多种方式

    简介 猜拳小游戏是一个经典的小游戏项目,也是初学者学习编程的必要练手题目之一.在 Python 中,我们可以使用多种方式来实现一个简单的猜拳小游戏. 本文将依次介绍六种Python实现猜拳小游戏的方法 ...

  4. Linq的所有用法(简单化)

    Linq 是一种强大的查询语言,可以过滤.排序和组合各种数据源.下面我们将讨论 Linq 的各种用法. Linq 的基本语法: Linq 可以应用于任何对象集合,以下是一个示例: var number ...

  5. 【Rust-book】第五章 使用结构体来组织相关联的数据

    第五章 使用结构体来组织相关联的数据 结构,或者结构体,是一种自定义数据类型,它允许我们命名多个相关的值并将它们组成一个有机的结合体. 可以把结构体视作对象中的数据属性 1 对比元组和结构体之间的异同 ...

  6. 前端vue uni-app列表组件 list组件,简单好用

    快速实现uni-app列表组件 list组件,简单好用; 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12675 效果图如下: ...

  7. 蔬菜识别系统Python+TensorFlow+Django+卷积神经网络算法

    一.介绍 蔬菜识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法.并通过对数据集进行训练,最后得到一个识别精度较高的模型.并基于Django框架,开 ...

  8. MultiscaleResNet50:AnEfficientandAccurateApproachforIma

    目录 标题:<51. Multi-scale ResNet-50: An Efficient and Accurate Approach for Image Recognition> 背景 ...

  9. 【Oracle】当条件中存在空值时,同时将空值和非空值的结果查询出来

    [Oracle]当条件中存在空值时,同时将空值和非空值的结果查询出来 如果不是一定要用这个存在空值的条件的话,最好还是不用为好,省的麻烦 正常的查询结果如下 select * from ttt2023 ...

  10. jar包、war包项目部署

    部署 部署 jar包 部署 war包 部署 jar包 环境准备 JDK Tomcat Linux 环境 1.将jar文件上传至服务器 2.编写脚本 启动脚本放在跟jar 一起的路径下,如果不放在同一路 ...