玩转微服务-SonarQube

这里写目录标题

  • [第一节 SonarQube](#第一节 SonarQube)
    • [1.1 简介](#1.1 简介)
    • [1.2 四个组成部分](#1.2 四个组成部分)
      • [1.2.1 SonarQube服务器](#1.2.1 SonarQube服务器)
      • [1.2.2 SonarQube数据库](#1.2.2 SonarQube数据库)
      • [1.2.3 插件](#1.2.3 插件)
      • [1.2.4 Scanner](#1.2.4 Scanner)
    • [1.3 工作流程](#1.3 工作流程)
  • [第二节 SonarQube的安装](#第二节 SonarQube的安装)
    • [2.1 安装](#2.1 安装)
    • [2.2 插件](#2.2 插件)
  • [第三节 P3C规范](#第三节 P3C规范)
    • [3.1 简介](#3.1 简介)
    • [3.2 SonarQube 配置 P3C规范](#3.2 SonarQube 配置 P3C规范)
    • [3.3 IDEA配置 P3C规范](#3.3 IDEA配置 P3C规范)
  • [第四节 Maven项目代码检查](#第四节 Maven项目代码检查)
    • [4.1 根项目POM.xml修改](#4.1 根项目POM.xml修改)
    • [4.2 代码扫描提交](#4.2 代码扫描提交)
  • [第五节 nodejs项目代码检查](#第五节 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-community
    ports:
      - "9000:9000"
    networks:
      - sonarnet
    restart: always
    privileged: true
    volumes:
      - /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/plugins
    environment:
      - TZ=Asia/Shanghai
      - SONARQUBE_JDBC_USERNAME=xxxx
      - SONARQUBE_JDBC_PASSWORD=xxxx
      - SONARQUBE_JDBC_URL=jdbc:postgresql://postgresdb:5432/sonar
  postgresdb:
    image: postgres:bullseye
    ports:
      - 5432:5432
    networks:
      - sonarnet
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: xxxxx
      POSTGRES_PASSWORD: xxxxx
      POSTGRES_DB: sonar
    volumes:
      - /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容器

第三节 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

  2. 创建 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

  3. 运行SonarScanner扫描项目:

    复制代码
    # 在项目根目录执行
    sonar-scanner

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

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

相关推荐
短剑重铸之日8 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
学嵌入式的小杨同学9 小时前
STM32 进阶封神之路(十九):ADC 深度解析 —— 从模拟信号到数字转换(底层原理 + 寄存器配置)
c++·stm32·单片机·嵌入式硬件·mcu·架构·硬件架构
C澒9 小时前
微前端容器标准化 —— 公共能力篇:通用打印
前端·架构
麦聪聊数据9 小时前
QuickAPI 在系统数据 API 化中的架构选型与集成
数据库·sql·低代码·微服务·架构
爱学习的大牛12310 小时前
软件架构设计模式:七大范式的系统性审视
架构·审视
cxr82811 小时前
PaperclipAI 组织关系与智能体协作指南
数据库·人工智能·架构·ai智能体·openclaw
Dola_Zou12 小时前
工业软件安全架构向模块化授权演进的解析
安全·自动化·安全架构·软件加密
JicasdC123asd13 小时前
并行双分支瓶颈架构改进YOLOv26异构卷积核协同特征提取与残差学习双重突破
学习·yolo·架构
老毛肚13 小时前
八股微服务
微服务·云原生·架构
2501_9411495013 小时前
2026年云原生架构演进全景录:从单体拆解到 Serverless 落地,深度复盘百亿级中台的重构之路
云原生·架构·serverless