玩转微服务-SonarQube

2024-04-25 13:36
文章标签 服务 玩转 sonarqube

本文主要是介绍玩转微服务-SonarQube,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写目录标题

  • 第一节 SonarQube
    • 1.1 简介
    • 1.2 四个组成部分
      • 1.2.1 SonarQube服务器
      • 1.2.2 SonarQube数据库
      • 1.2.3 插件
      • 1.2.4 Scanner
    • 1.3 工作流程
  • 第二节 SonarQube的安装
    • 2.1 安装
    • 2.2 插件
  • 第三节 P3C规范
    • 3.1 简介
    • 3.2 SonarQube 配置 P3C规范
    • 3.3 IDEA配置 P3C规范
  • 第四节 Maven项目代码检查
    • 4.1 根项目POM.xml修改
    • 4.2 代码扫描提交
  • 第五节 nodejs项目代码检查

第一节 SonarQube

1.1 简介

SonarQube是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且可以集成在IDEA、Jenkins、GIt等服务中,方便随时查看代码质量分析报告。支持的语言:
在这里插入图片描述

SonarQube通过配置的代码分析规则,从可靠性、安全性、可维护性、覆盖率、重复率等方面分析项目,风险等级从A~E划分为5个等级,同时SonarQube可以集成pmd、findbugs、checkstyle等插件来扩展使用其他规则来检验代码质量;SonarQube还设置了质量阈,通过设置的质量阈评定此次提交分析的项目代码是否达到了规定要求。

其他的静态代码分析工具:PMD,CheckStyle,FindBug

1.2 四个组成部分

1.2.1 SonarQube服务器

  1. Web服务:供开发者,管理者,浏览质量快照和配置SonarQube实例
  2. 搜索服务:基于ElasticSearch的Search Server从UI进行后退搜索
  3. 计算引擎服务:负责处理代码分析报告并将其保存在SonarQube数据库中

1.2.2 SonarQube数据库

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

1.2.3 插件

多个SonarQube插件,可能包括语言,SCM,集成,身份验证和管理插件

1.2.4 Scanner

一个或多个SonarQube Scanners:可以与CI服务进行集成

在这里插入图片描述

1.3 工作流程

  1. 开发人员的代码在自己的IDE和使用SonarLint运行局部分析;

  2. 开发人员推代码到Git服务器;

  3. 持续集成服务器触发自动构建和SonarQube扫描仪的运行SonarQube分析所需的执行。

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

  5. SonarQube服务器处理和存储分析报告导致SonarQube数据库,并显示结果在UI中。

  6. 开发者审核,评论问题,减少他们的技术债务问题。

  7. 团队负责人收到的分析报告。 OPS使用API​​从SonarQube自动化配置和提取数据。

在这里插入图片描述

第二节 SonarQube的安装

2.1 安装

我们采用docker,docker-compose的方式进行安装

version: '3'
services:sonarqube:image: sonarqube:9.9.0-communityports:- "9000:9000"networks:- sonarnetrestart: alwaysprivileged: truevolumes:- /docker/sxhm/sonarqube/conf/sonar.properties:/opt/sonarqube/conf/sonar.properties- /docker/sxhm/sonarqube/pdf-files:/opt/sonarqube/pdf-files- /docker/sxhm/sonarqube/extensions/plugins:/opt/sonarqube/extensions/pluginsenvironment:- TZ=Asia/Shanghai- SONARQUBE_JDBC_USERNAME=xxxx- SONARQUBE_JDBC_PASSWORD=xxxx- SONARQUBE_JDBC_URL=jdbc:postgresql://postgresdb:5432/sonarpostgresdb:image: postgres:bullseyeports:- 5432:5432networks:- sonarnetenvironment:TZ: Asia/ShanghaiPOSTGRES_USER: xxxxxPOSTGRES_PASSWORD: xxxxxPOSTGRES_DB: sonarvolumes:- /docker/sxhm/sonarqube/postgresql/data:/usr/postgres/data- /etc/localtime:/etc/localtime:ro
networks:sonarnet:driver: bridge

2.2 插件

下载需要的插件,放到挂载目录下:/docker/sxhm/sonarqube/extensions/plugins 下 重启docker容器

  • sonar-pdf-plugin
  • sonar-pmd
  • sonar-pmd-p3c

第三节 P3C规范

3.1 简介

源自《阿里巴巴Java编码指南》,该指南汇集了阿里巴巴集团技术团队多年来的最佳编程实践。大量的Java编程团队对项目中的代码质量提出了苛刻的要求,因为我们鼓励重用和更好地理解彼此的程序。我们在过去看到过许多编程问题。例如,有缺陷的数据库表结构和索引设计可能会导致软件体系结构缺陷和性能风险。另一个例子是难以维护的混乱代码结构。此外,没有身份验证的易受攻击的代码容易受到黑客的攻击。

https://github.com/alibaba/p3c

3.2 SonarQube 配置 P3C规范

首先需要登录 sonarqube 管理员账号,然后在 Marketplace 中搜索“pmd”并安装。

安装完成后,在 Quality Profiles 中选择“Sonar way”规则集,然后点击“Activate more rules”按钮,搜索“p3c”并勾选相应规则,点击“Activate”即可。

这样就完成了在 sonarqube 中集成阿里 P3C 规则的操作。

3.3 IDEA配置 P3C规范

安装插件“Alibaba Java Coding Guidelines”即可

第四节 Maven项目代码检查

4.1 根项目POM.xml修改

    <properties><sonar.host.url>http://10.10.10.108:9000</sonar.host.url><sonar.plugin.version>3.4.0.905</sonar.plugin.version><sonar.projectKey>${project.groupId}:${project.artifactId}</sonar.projectKey><sonar.moduleKey>${project.artifactId}</sonar.moduleKey><sonar.projectName>${project.artifactId}</sonar.projectName><sonar.login>xxxx</sonar.login><sonar.password>xxxxx</sonar.password></properties><build><plugins><!--sonar 代码扫描插件--><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>${sonar.plugin.version}</version></plugin></plugins></build>

确保项目使用的maven setting.xml 文件中未配置任何关于sonar的配置项

4.2 代码扫描提交

mvn clean package sonar:sonar

也可以借助idea 的maven图形化界面, 若出现编译问题, 可先clean package 修改编译的环境,如jdk11,再执行sonar:sonar

第五节 nodejs项目代码检查

  1. 安装SonarScanner(确保SonarQube服务器正在运行):
# 下载
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip# 解压
unzip sonar-scanner-cli-4.6.2.2472-linux.zip# 配置环境变量
echo "export PATH=$PATH:/path/to/sonar-scanner-4.6.2.2472-linux/bin" >> ~/.bashrc
source ~/.bashrc
  1. 创建 sonar-project.properties
# 必要属性
sonar.projectKey=your-project-key
sonar.projectName=your-project-name
sonar.projectVersion=1.0# 源代码位置
sonar.sources=.
sonar.exclusions=**/node_modules/**
sonar.language=js
sonar.sourceEncoding=UTF-8# 数据库认证
sonar.login=your-sonarqube-login
sonar.password=your-sonarqube-password# SonarQube服务器
sonar.host.url=http://localhost:9000
  1. 运行SonarScanner扫描项目:

    # 在项目根目录执行
    sonar-scanner
    

确保替换your-project-keyyour-project-nameyour-sonarqube-loginyour-sonarqube-password为实际值,并且设置正确的sonar.host.url

这个过程会将Vue项目的代码扫描完毕,并上传到SonarQube服务器进行分析。你可以在SonarQube的界面上查看扫描结果。

这篇关于玩转微服务-SonarQube的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934825

相关文章

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

秒变高手:玩转CentOS 7软件更换的方法大全

在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

Java后端微服务架构下的API限流策略:Guava RateLimiter

Java后端微服务架构下的API限流策略:Guava RateLimiter 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在微服务架构中,API限流是保护服务不受过度使用和拒绝服务攻击的重要手段。Guava RateLimiter是Google开源的Java库中的一个组件,提供了简单易用的限流功能。 API限流概述 API限流通过控制请求的速率来防止

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

java后端服务监控与告警:Prometheus与Grafana集成

Java后端服务监控与告警:Prometheus与Grafana集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的微服务架构中,监控和告警是确保服务稳定性的关键组成部分。Prometheus和Grafana是两个强大的工具,它们可以集成在一起,为Java后端服务提供实时监控和可视化告警。 服务监控的重要性 服务监控可以帮助我们实时了解服务的健

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版