首页 > 其他分享 >SonarQube系列-架构与外部集成

SonarQube系列-架构与外部集成

时间:2023-09-10 23:56:23浏览次数:41  
标签:集成 架构 108082 SonarQube 代码 文件夹 sonarqube SONARQUE

介绍

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类似,具体不在赘述。


*   客户端工具,用于扫描项目。
    
*   将扫描结果上传到服务器。
    

![](/i/l/?n=23&i=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服务器
    

![](/i/l/?n=23&i=blog/108082/202309/108082-20230910233936717-211760692.png)

SonarLint
---------

SonarLint是一个Sonar IDE插件,可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer, SonarLint本身也可以基于一些规则对代码IDE中的代码进行即时的检测。它的目的是在您键入代码时提供即时反馈。  
![](/i/l/?n=23&i=blog/108082/202309/108082-20230910233936817-1917286195.png)![](/i/l/?n=23&i=blog/108082/202309/108082-20230910233936719-717063249.png)  
**注意:**为了获得最佳性能,Sonar Qube服务器和数据库应安装在单独的主机上,并且服务器主机应为专用主机。服务器和数据库主机应位于同一网络上。

所有主机都必须进行时间同步

标签:集成,架构,108082,SonarQube,代码,文件夹,sonarqube,SONARQUE
From: https://www.cnblogs.com/FLY_DREAM/p/17692303.html

相关文章

  • 高级系统架构师学习(三)软件架构设计-上篇
    一、软件架构的概念什么是架构?【暂无定论】定义:架构设计就是需求分配,即将满足需求的职责分配到组件上。本质:为软件系统提供了一个结构、行为和属性的高级抽象。【软件架构==软件体系结构】作用:是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开......
  • SonarQube教程:idea配置及使用sonarlint插件扫描项目
    下载插件settings--plugins--marketplace中搜索sonarlint,安装后重启idea配置插件settings中搜索sonarlint配置远程sonarqube服务器地址,及相关鉴权信息使用插件在项目名称上或某个java文件中右击,选择AnalyzewithSonarlint或者在idea底部找到sonarlint,点击绿色开始按钮,即可开......
  • SonarQube教程:使用maven插件的方式扫描项目代码
    sonar扫描代码的三种途径配置Mavensettings.xml增加如下内容,注意pluginGroups和profiles都是settings下面的一级标签<pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>so......
  • 系统架构设计2---架构风格
    为什么要有架构风格?软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。也就是说,在不同的软件系统中,使用同一体系结构。基于这个目标,主要任务是研究和实践软件体系结构风格和类型问题。一、架构风格的定义软件体系结构风格是描述某一特定应用领......
  • Springboot集成OceanBase4.x
    概述    在Springboot项目中使用Oceanbase4.2版本数据库。pomPS:可在maven仓库中搜索oceanbase,第一个就是。<dependency> <groupId>com.oceanbase</groupId> <artifactId>oceanbase-client</artifactId> <version>2.4.4</version></dependency>......
  • hudi-0.12 编译与集成
    环境hadoop:2.7.2 hive:2.3.1 spark:2.4.4 flink:1.13.01.下载hudi源码包Indexof/dist/hudi/0.12.0(apache.org)  hudi-0.12.0.src.tgztar-zxfhudi-0.12.0.src.tgz-C/hadoop/app/2.安装maventar-zxf apache-maven-3.6.1.tar.gz配置settings<mirror> <id&g......
  • 关于软件架构设计的小笔记
    设计良好的计算机软件应该是易于扩展,同时抗拒修改。这就是著名的开闭原则(OCP)。换句话说,一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展。其实这也是我们研究软件架构的根本目的。如果对原始需求的小小延伸就需要对原有的软件系统进行大幅修改,那么这个系统......
  • 安卓核心板的不同核心规格及架构介绍
    安卓核心板是将核心功能封装的一块电子主板,集成芯片、存储器和功放器件等,并提供标准接口的芯片。其特点:●能跑Android等操作系统强大的功能及丰富的接口支持LCD/TP,Audio,Camera,Video,内置WI-Fi/BT/GNSS功能●集成度高,扩展能力强●安卓核心板内部集成基带以及射频,简化了硬件......
  • 制造业数字化转型顶层设计业务架构和应用架构规划方法
     引言   当前制造业产业转型升级已成为国家战略,智能制造的理念也在行业中快速推行和应用。在当下制造业数字化转型的浪潮中,数字化顶层规划以企业架构方法论为依托,围绕数字化转型规划战略,帮助企业识别企业在转型过程中应该具备的核心业务能力,构建企业数字化运营能力总体蓝图,......
  • 金蝶云星空与泛微OA集成的方案落地与实践
    打破信息孤岛,泛微OA集成的方案落地与实践在现代企业内部,不同类型的业务系统和泛微OA平台层出不穷。企业需要找到一种高效的方法来整合和协同这些多样化的系统,同时将它们与泛微OA平台融合,以实现资源整合和高度协同的办公环境。本文将深入探讨泛微OA集成的实际解决方案,借助金蝶云星......