jenkins+ SonarQube(代码质量测试)从gitlab拉取若依代码进行检测

一、SonarQube 概述

1、简介

SonarQube支持多种开发语言,包括但不限于Java、Python、PHP、JavaScript、CSS、C、C++、Go等,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞等问题。其检测范围涵盖了从细微的样式选择到设计错误等多个方面,可以确保代码可靠性,减少技术债务。

SonarQube具有多种功能特性,例如能够结合静态和动态分析工具,持续扫描项目的代码质量;与用户的开发工作流程集成,实现跨项目分支和拉取请求的持续代码检查;提供项目代码质量报告,使开发人员能够更清楚地了解代码的健康状况。

SonarQube可以与多种软件整合进行代码扫描,如Maven、Gradle、Git、Jenkins等,并且会将代码检测结果推送回SonarQube,并在系统提供的UI界面上显示出来。这使得SonarQube成为了一个跨平台、跨语言的代码质量管理工具,能够满足多种场景下的代码质量管理需求。

sonarqube是一个自我管理的自动代码管理工具,SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码,潜在bug,代码规范,安全性漏洞等问题,并通过SonarQube web UI展示出来。

2、组件

SonarQube主要由四个核心组件组成,它们共同协作以实现代码质量管理。

1、SonarQube服务器:这是SonarQube系统的核心,负责管理代码质量管理流程。它接收来自SonarScanner的数据,处理这些分析结果,并将它们存储在数据库中。此外,SonarQube服务器还提供Web界面,用于配置、管理和查看代码质量报告。开发人员可以通过Web界面浏览查看代码分析结果,进行相应的配置。计算引擎服务器则主要处理代码分析报表,并将这些数据存储在数据库中。

2、SonarQube数据库:这个数据库用于存储SonarQube服务器生成的所有数据。这些数据包括项目元数据、代码质量度量、检测到的问题等。

3、SonarScanner:这是与开发环境接口的工具,负责执行代码的静态分析。它从源代码管理系统中获取代码,根据预定义的规则和标准对代码进行分析,然后将分析结果发送给SonarQube服务器。SonarScanner可以单独部署,也可以集成在如Maven、Gradle等构建工具中。

4、多个Sonar插件:SonarQube通过插件来扩展其核心功能,以支持更多种类的编程语言和代码分析规则。这些插件包括分析各种语言的插件,可以根据项目的需求进行选择和配置。

其基本架构图如下:

 

sonarqube server上主要有3个应用:

Web服务:为SonarQube用户界面提供服务的。

搜索服务:基于 Elasticsearch 器。

计算引擎:负责处理代码分析报告并将其保存在SonarQube数据库中。

3、sonarQube的作用

  1. 代码质量和安全扫描和分析平台。
  2. 多维度分析代码:代码量、安全隐患、编写规范隐患、重复度、复杂度、代码增量、测试覆盖率等。
  3. 支持25+编程语言的代码扫描和分析,包含java\python\C#\javascript\go\C++等。
  4. 涵盖了编程语言的静态扫描规则: 代码编写规范+安全规范。
  5. 能够与代码编辑器、CI/CD平台完美集成。
  6. 能够与SCM集成,可以直接在平台上看到代码问题是由哪位开发人员提交。
  7. 帮助程序猿写出更干净、更安全的代码。

SonarQube 可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

(1)不遵循代码标准:sonar 可以通过 PMD、CheckStyle、Findbugs 等知名的静态代码规则分析工具规范代码编写。

(2)潜在的缺陷:sonar 可以通过 PMD、CheckStyle、Findbugs 等知名的静态代码规则分析工具检测出潜在的缺陷。

(3)糟糕的复杂度分布:文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员难以理解它们,且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。

(4)重复:显然程序中包含大量复制粘贴的代码是质量低下的,sonar 可以展示源码中重复严重的地方。

(5)注释不足或者过多:没有注释将使代码可读性变差,特别是当不可避免地出现人员变动时,程序的可读性将大幅下降,而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。

(6)缺乏单元测试:sonar可以很方便地统计并展示单元测试覆盖率。

(7)糟糕的设计:通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则,通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况,检测耦合。

      另外 SonarQube 也可以生成详细的代码分析质量报告,并通过强大的仪表盘展示出来,使我们能够根据角色的不同,查看不同维度的度量标准。

4、工作原理

sonar静态代码扫描由2部分组成:sonarQube平台,sonar-scanner扫描器。

sonarQube: web界面管理平台。

 1)展示所有的项目代码的质量数据。

 2)配置质量规则、管理项目、配置通知、配置SCM等。

sonarScanner: 代码扫描工具

   专门用来扫描和分析项目代码。支持20+语言。

   代码扫描和分析完成之后,会将扫描结果存储到数据库当中,在sonarQube平台可以看到扫描数据。

sonarQube和sonarScanner之间的关系:

5、工作流程

工作流程介绍

1.开发人员在IDE中开发和合并代码,并将代码签入到DevOps平台。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值