SonarQube入门 - 搭建本地环境

news2025/1/16 4:03:20

一、SonarQube是什么?

SonarQube是一种自我管理的自动代码审查工具,可以系统地帮助您交付干净的代码。作为我们Sonar 解决方案的核心元素 ,SonarQube 集成到您现有的工作流程中并检测代码中的问题,以帮助您对项目执行持续的代码检查。该工具可分析 30 多种不同的编程语言 ,并集成到您的 CI 管道 和 DevOps 平台中 ,以确保您的代码符合高质量标准。

二、SonarQube 实例包含三个组件::

  1. SonarScanner:扫描器,负责将源文件进行代码分析,并将分析后的报告发送给SonarQube服务器
  2. SonarQube Server:SonarQube服务器,负责处理分析报告,后台管理等
  3. Database server:数据库服务器,负责存储数据

三 、安装

1. Java 环境
$~ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
2. SonarQube 镜像下载
$> docker pull sonarqube
$> docker volume create --name sonarqube_data
$> docker volume create --name sonarqube_logs
$> docker volume create --name sonarqube_extensions
$> docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

您现在可以通过 http://localhost:9000 浏览 SonarQube (默认系统管理员凭据是 admin/ admin

3. 安装中文插件
3.1 在线安装 (需点击 I understand the risk

3.2 手动安装

        1.sonar-|10n-zh-plugin。该版本需要与您的 SonarQube 版本兼容。

        2.将下载的 jar 放入 中 <SONARQUBE_HOME>/extensions/plugins,并删除相同插件的所有以前版本。

        3.重新启动您的 SonarQube 服务器。

四、搭建项目

1. 选择手动创建项目,根据提示一步步去创建项目...

2. 接下来要生成Token, 并且最好是把生成token事先保存下来:

Plain Text
sqp_603a34460857921938f47eb9e11757d821a9d6c2

3. 然后选择配置选项,选择项目构建技术, 选选择当前系统环境  
4. 根据提示下载并安装 SonarScanner
5. 下载后解压重命名后拷贝到 /usr/local/ 目录下,并设置环境变量
$ vi ~/.bash_profile

export SONAR_RUNNER_HOME=/usr/local/sonar-scannerexport
PATH=$PATH:$SONAR_RUNNER_HOME/bin

$ source ~/.bash_profile
6. 设置好以后,通过以下方式验证一下,看到如下信息就表示设置成功
~ sonar-scanner -v
INFO: Scanner configuration file: /usr/local/Cellar/sonar-scanner/4.8.0.2856/libexec/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.8.0.2856
INFO: Java 11.0.17 Homebrew (64-bit)
INFO: Mac OS X 13.4.1 x86_64
7. 修改sonar-scanner文件夹下的 conf/sonar-scanner.properties配置文件,打开以下两行代码注释,后保存
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8

五、扫描项目

1. 进入到项目要目录执行以下命令
sonar-scanner \
    -Dsonar.projectKey=test-project \
    -Dsonar.sources=. \
    -Dsonar.host.url=http://localhost:9000 \
    -Dsonar.login=sqp_603a34460857921938f47eb9e11757d821a9d6c2

或 在项目根目录创建 sonar-project.properties文件:

// Properties
# 本地自己起的sonarqube服务地址
sonar.host.url=http://127.0.0.1:9000/
# Sonar 令牌
sonar.login=sqp_603a34460857921938f47eb9e11757d821a9d6c2
# Sonar项目标识,在 SonarQube实例下必须唯一
sonar.projectKey=test-project
sonar.projectName=test-project

# 项目版本
sonar.projectVersion=1.4.0
# 代码文件的编码
sonar.sourceEncoding=UTF-8
# 项目代码与 sonar-project.properties 文件的相对路径
sonar.sources=./src
# 排除不参与代码分析的文件或目录
sonar.exclusions=/node_modules/
sonar.tests=./src
sonar.test.inclusions=**/*.spec.ts
2. 运行sonar-scanner命令,看到类似以下输出就说明扫描成功~

3. 刷新 http://localhost:9000 查看报告

六、高级进阶

  • 更换数据库,如PostgreSQL、MySQL...
  • GitLab integration
  • GitLab 关联 SonarQube 实现CI/CD代码扫描
  • SonarQube结合GitLab CI/CD自动检测Push和Merge Request的增量代码质量
  • SonarQube集成gitlab/jenkins

七、补充

1. SonarQube 和 eslint 区别

  • ESLint:它主要用于JavaScript和TypeScript代码的Linting(即语法检查和代码风格检查)。ESLint是一个可扩展的工具,允许你自定义规则,以适应特定的编码风格和规范。ESLint的重点是实时反馈,它可以轻松集成到IDE和编辑器中,通常用于开发过程中。
  • SonarQube:它是一个多语言的代码质量检查工具,支持包括Java,C#,JavaScript,TypeScript在内的30多种语言。SonarQube不仅检查语法错误和代码风格,还分析代码的复杂性,检测可能的漏洞,做代码覆盖率统计等。它的主要目标是长期的代码质量跟踪和管理,通常在CI/CD流水线中使用。

简单来说,ESLint主要用于JavaScript/TypeScript的语法和风格检查,强调的是实时反馈;而SonarQube是一种多语言支持,更全面的代码质量管理工具,强调的是代码质量的长期跟踪和管理。

参考文档:

  • Docs SonarQube
  • macOS sonar-scanner环境搭建
  • SonarQube代码质量检查平台

其他类似工具:

  • DeepSource
  • DeepScan

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GD32F103VE点灯

GD32F103VE点灯主要用来学习端口引脚的输出配置。它由LED.c&#xff0c;LED.h&#xff0c;SoftDelay.c和main.c组成。 #include "gd32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t #include "SoftDelay.h"#include …

企业微信小程序在调用wx.qy.login时返回错误信息qy.login:fail

原因是大概是绑定了多个企业但是在开发者工具中没有选择正确的企业 解决方法&#xff1a; 重新选择企业后即可成功获取code

BS框架说明

B/S架构 1.B/S框架&#xff0c;意思是前端&#xff08;Browser 浏览器&#xff0c;小程序、app、自己写的&#xff09;和服务器端&#xff08;Server&#xff09;组成的系统的框架结构 2.B/S框架&#xff0c;也可理解为web架构&#xff0c;包含前端、后端、数据库三大组成部分…

考研/面试 数据结构大题必会代码(理解+记忆,实现使用C++,STL库)

文章目录 一. 线性表1. 逆置顺序表所有元素2. 删除线性链表中数据域为 item 的所有结点3. 逆转线性链表(递归(快速解题)非递归)4. 复制线性链表&#xff08;递归&#xff09;5. 将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表 二. 树1. 建立二叉树&#xff08;…

【快应用】同时传递事件对象和自定义参数 ,无法正确接收事件对象

【关键词】 事件绑定、自定义参数、事件对象 【问题背景】 在快应用中采用如下方式绑定组件的事件方法&#xff0c;同时传递事件对象和自定义参数&#xff0c;发现回调方法中没有正确接收到事件对象。 问题代码如下&#xff1a; <template><!-- Only one root nod…

2023年信息系统项目管理师-粗略了解整体主要知识脉络

1. 五大过程组 2.十大知识领域 3. 十大知识领域与五大过程组的关系 4. 十大知识领域的关系图

Meta 烧掉百亿豪赌的未来:元宇宙,还有出路吗?

社交平台的下一步是什么&#xff1f; 2021年10月&#xff0c;Facebook联合创始人兼CEO马克扎克伯格在年度 Connect 开发者大会上正式宣布&#xff0c;Facebook公司将更名为Meta。这一举动标志着扎克伯格决心将公司转型为一家“元宇宙公司”&#xff0c;全力投入到元宇宙的技术…

【物联网】DMA传输原理与实现详解(超详细)

DMA&#xff08;Direct Memory Access&#xff0c;直接内存访问&#xff09;是一种计算机数据传输方式&#xff0c;允许外围设备直接访问系统内存&#xff0c;而无需CPU的干预。 文章目录 Part 1: DMA的工作原理配置阶段&#xff1a;数据传输阶段&#xff1a; Part 2: DMA数据…

java读写properties文件和xml文件,解决中文乱码问题

文章目录 前言一、properties文件1.1properties格式介绍1.2读取项目resource/templates下面properties并处理中文乱码问题1.3读取本地properties并处理中文乱码问题1.4修改properties文件 二、XML文件2.1xml文件格式2.2读取xml文件2.3写xml文件 前言 在开发当中我们经常需要用…

【NX】NX二次开发中拉伸曲线完整范例

之前做项目测试用到的代码&#xff0c;开发的版本是NX8.5的32位版本&#xff0c;这个代码实现起来也不难&#xff0c;其实就是调用了UG的API而已。 那么我在这里提供完整的代码&#xff1a; //author&#xff1a;autumoon //邮箱&#xff1a;9506163.com //日期&#xff1a;20…

spring AOP学习

概念 面向切面编程横向扩展动态代理 相关术语 动态代理 spring在运行期&#xff0c;生成动态代理对象&#xff0c;不需要特殊的编译器 Spring AOP的底层就是通过JDK动态代理或者CGLIb动态代理技术为目标Bean执行横向织入 目标对象实现了接口&#xff0c;spring使用JDK的ja…

利用微软Bing AI语言大模型辅助提高写代码、阅读代码、解bug的效率

目录 1 怎么才能使用Bing AI 2 Bing AI使用举例 2.1 代码没看懂&#xff0c;可以问Bing AI 2.2 当你不确定你程序理解的是否正确时&#xff0c;可以问Bing AI 2.3 程序编译出现bug&#xff0c;可以问Bing AI 1 怎么才能使用Bing AI 要想使用Bing AI&#xff0c;必须用微软…

【学会动态规划】剑指 Offer II 091. 粉刷房子(14)

目录 动态规划怎么学&#xff1f; 1. 题目解析 2. 算法原理 1. 状态表示 2. 状态转移方程 3. 初始化 4. 填表顺序 5. 返回值 3. 代码编写 写在最后&#xff1a; 动态规划怎么学&#xff1f; 学习一个算法没有捷径&#xff0c;更何况是学习动态规划&#xff0c; 跟我…

arm交叉编译lmbench

一、下载lmbench www.bitmover.com/lmbench 官网下载&#xff0c;http://www.bitmover.com/lmbench/lmbench3.tar.gz 我没有下载下来&#xff0c;找的别人的百度云下载 链接: https://pan.baidu.com/s/1tGo1clCqY-jQPN8G1eWSsg 提取码: f6jd 二、修改makefile 修改三个文件…

CrossOver2023虚拟机下载及如何安装软件教程

在当今数字化时代&#xff0c;虚拟机技术被广泛应用于软件开发、系统测试、网络安全等领域。虚拟机提供了一个隔离的虚拟环境&#xff0c;使得我们能够在一台物理计算机上同时运行多个操作系统和应用程序。下面我们就来看虚拟机软件怎么安装&#xff0c;虚拟机怎么使用吧&#…

浅析:单板静态数据分析功能在足底压力步态测量分析系统的应用

时代在不断进步&#xff0c;健康成为了现代人最重要的追求之一。而在我们繁忙的生活中&#xff0c;您是否关注过自己的足部健康&#xff1f;它不仅影响着我们的行走姿态、脊椎健康&#xff0c;还影响着我们的整体健康状态。 足底压力测量分析系统A30是一项采集人体足底压力的装…

【并发专题】单例模式的线程安全(进阶理解篇)

目录 背景前置知识类加载运行全过程 单例模式的实现方式一、饿汉式基本介绍源码分析 二、懒汉式基本介绍源码分析改进 三、懒汉式单例终极解决方案&#xff08;静态内部类&#xff09;&#xff08;推荐使用方案&#xff09;基本介绍源码分析 感谢 背景 最近学习了JVM之后&…

【HMS Core】位置服务逆地理编码请求错误问题

【关键字】 HMS、位置服务、逆地理编码 【问题描述】 有开发者反馈在集成位置服务-逆地理编码时&#xff0c;出现了请求报错的问题。 后端请求逆地理编码 错误 { "returnCode": "010010", "returnDesc": "INVALID_REQUEST" } 【问…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板9

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

rest-apiV2.0.0升级为simplest-api开源框架生态之simplest-jpa发布

什么是 simplest simplest 追求存粹简单和极致。 旨在为项目快速开发提供一系列的基础能力&#xff0c;方便用户根据项目需求快速进行功能拓展 不在去关心一些繁琐。重复工作&#xff0c;而是把重点聚焦到业务。 前言 程序 10 年。作为一个多年程序。深知每个项目和程序&a…