玩转微服务-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

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例