草庐IT

【云原生】4.3 DevOps 精讲篇——Sonar Qube

Coder.追 2023-04-03 原文

CSDN话题挑战赛第2期
参赛话题:学习笔记

目录

一、前言

 二、SonarQube 安装

1、介绍

2、安装

 三、Sonar Qube基本使用

1、安装中文插件

2、Maven 代码检测

3、Sonar-scanner 代码检测

三、SonarQube 整合 Jenkinsb

1、Jenkins 安装插件

2、构建任务


一、前言

之前写的一个项目(可以看看之前的博客)代码时十分的冗余,在 4.2 写到 DevOps 的原理及安装需要的插件,最后的流程图就是下面的。但是如果以后的项目代码没有一定的规范,很容易形成所谓的“屎山”。代码如何的质量检测,就要用到下面的SonarQube了。

 二、SonarQube 安装

1、介绍

Sonar Qube是一个开源的代码分析平台,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。
Sonar Qube可以与多种软件整合进行代码扫描,比如Maven,Gradle,Git,Jenkins等,并且会将代码检测结果推送回Sonar Qube并且在系统提供的UI界面上显示出来。

官网地址

2、安装

Sonar Qube 7.9 版本中已经放弃了对 MySQL 的支持,并且建议在商业环境中采用 PostgreSQL, 那么 安装Sonar Qube 时需要依赖 PostgreSQL
拉取镜像
docker pull postgres 
docker pull sonarqube:8.9.3-community
编写docker-compoe.yml
version: "3.1" 
services: 
	db:image: postgres 
	container_name: db 
	ports: 
		- 5432:5432 
	networks: 
		- sonarnet 
	environment: 
		POSTGRES_USER: sonar 
		POSTGRES_PASSWORD: sonar 
	sonarqube: 
		image: sonarqube:8.9.3-community 
		container_name: sonarqube 
		depends_on: 
			- db 
		ports: 
			- "9000:9000" 
		networks: 
			- sonarnet 
		environment: 
			SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar 
			SONAR_JDBC_USERNAME: sonar 
			SONAR_JDBC_PASSWORD: sonar 
networks:
	 sonarnet: 
		driver: bridge

设置好了之后就开始启动了

启动容器
docker-compose up -d

以 ip 地址 + 设置的端口号就能进入页面了

修改密码

默认的账号与密码都是admin

 第一次登录,系统会要求更改密码,这里就看自己的习惯修改密码了

 

 三、Sonar Qube基本使用

1、安装中文插件

简称汉化,安装之后记得重启下

Sonar Qube 的使用方式很多, Maven 可以整合,也可以采用 sonar-scanner 的方式,再查看 Sonar
Qube 的检测效果

2、Maven 代码检测

修改  Maven  的  settings.xml  文件配置  Sonar Qube  信息
<profile> 
	<id>sonar</id> 
	<activation> 
		<activeByDefault>true</activeByDefault> 
	</activation> 
	<properties> 
		<sonar.login>admin</sonar.login> 
		<sonar.password>123456789</sonar.password> 
		<sonar.host.url>http://192.168.11.11:9000</sonar.host.url> 
	</properties> 
</profile>

IDEA 控制台检测

mvn sonar:sonar

 如果有“异味”,就是我们代码不规范的地方了

3、Sonar-scanner 代码检测

下载 Sonar-scanner
解压并配置 sonar 服务端信息
注: 由于是 zip 压缩包,需要安装 unzip 解压插件
yum -y install unzip
解压压缩包
unzip sonar-scanner-cli/sonar-scanner-cli-4.6.0.2311-linux.zip
配置 sonarQube 服务端地址,修改 conf 下的 sonar-scanner.properties
追加一些配置

执行命令检测代码

# 在项目所在目录执行以下命令 
~/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ - 
Dsonar.projectname=demo -
Dsonar.projectKey=java - 
Dsonar.java.binaries=target/

三、SonarQube 整合 Jenkinsb

Jenkins 继承 Sonar Qube 实现代码扫描需要先下载整合插件

1、Jenkins 安装插件

进入 Jenkins ,系统管理——> 系统配置 ——> 找到 Sonar ——> 追加配置——> 添加凭据

注:Secret 在SonarQube里面 “生成令牌” 
进入 Jenkins ,系统管理——>全局工具配置

 

2、构建任务

 

下一篇预告:集成Harbor  

 不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

有关【云原生】4.3 DevOps 精讲篇——Sonar Qube的更多相关文章

  1. 映宇宙2022年营收63亿元:同比下降三成,毛利率提升4.3个百分点 - 2

    3月26日,映宇宙(HK:03700,即“映客”)发布截至2022年12月31日的2022年度业绩财务报告。财报显示,映宇宙2022年的总营收为63.19亿元,较2021年同期的91.76亿元下降31.1%。2022年,映宇宙的经营亏损为4698.7万元,2021年同期则为净利润4.57亿元;期内亏损(净亏损)为1.68亿元,2021年同期的净利润为4.33亿元;非国际财务报告准则经调整净利润为3.88亿元,2021年同期为4.82亿元,同比下降19.6%。 映宇宙在财报中表示,收入减少主要是由于行业竞争加剧,该集团对旗下产品采取更为谨慎的运营策略以应对市场变化。不过,映宇宙的毛利率则有所提升

  2. 【云原生】SpringCloud-Spring Boot Starter使用测试 - 2

    目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一

  3. IDC最新MarketScape报告:DevOps市场需求广泛 - 2

    日前,全球著名咨询机构IDC最新MarketScape报告《中国DevOps平台市场厂商评估,2022》正式发布,此报告中对中国主流DevOps云厂商分别从现有能力和未来战略维度两个层面对厂商进行评估,IDC对具有代表性的8家提供商进行了深度研究,他们分别是(按照拼音字母顺序):AWS、阿里云、百度、博云、华为云、京东云、微软、腾讯云(CODING)。华为云、阿里云和腾讯云CODING均在战略和能力两大维度表现强势,成功入席领导者(Leaders)位置。IDC MarketScape:中国DevOps平台市场厂商评估,2022华为云软件开发生产线DevCloud在市场份额和发展战略两大维度均排

  4. ruby - 如何让 Ruby 找到原生库? - 2

    我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI

  5. 云原生(十八) | Kubernetes篇之Kubernetes(k8s)工作负载 - 2

    文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制

  6. iphone - iPhone 原生应用的测试驱动设计 - 2

    我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'

  7. 【云原生 • Kubernetes】kubernetes 核心技术 - Ingress - 2

    本文导读一、前言二、Ingress和pod有什么关系三、使用Ingress对外暴露应用1.创建应用并使用NodePort暴露端口2.应用Ingress(1)部署IngressController(2)创建Ingress规则(3)在Windows系统的hosts文件添加域名访问规则一、前言在以往的操作过程中,我们都是将某端口号对外暴露,然后再使用IP+端口号进行访问服务,这是通过Service中的NodePort实现的。但是NodePort有着明显的缺陷:NodePort会在每一个node节点都启用一个端口,也就是说在集群中的任何一个node节点中,使用节点IP+端口号都能访问到该服务;每个端口

  8. PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数的实现(多图长文详解) - 2

    目录一、打开数据库表1.写打开数据库的槽函数2.运行后发现数据库可以打开了

  9. javascript - 在网络浏览器中,窗口对象是原生 ECMAScript 对象吗? - 2

    ECMAScript规范定义了一个"uniqueglobalobjectthatiscreatedbeforecontrolentersanyexecutioncontext".此全局对象是ECMAScript的标准内置对象,因此是native对象。规范还指出:Inadditiontothepropertiesdefinedinthisspecificationtheglobalobjectmayhaveadditionalhostdefinedproperties.Thismayincludeapropertywhosevalueistheglobalobjectitself;for

  10. javascript - 使用 Moment.js 制作原生 ELM 模块 - 2

    我已经使用Elm玩了几天,我想移植Moment.JS,因为我发现缺少我想要的库,而Moment拥有我需要的一切.问题是我总是遇到同样的错误。我的native文件夹中有Moment.JS(名为MomentJS.js)和另一个名为Moment.js的文件(我的包装器)。问题是,当我在Moment.js中调用moment时,我收到一条错误消息,指出该moment未定义。我也尝试在我的elm文件中导入MomentJS.js,在Moment.js之前和/或之后。我还尝试将整个JS复制到Moment.js并在其末尾添加我的包装器。这些都没有用。你知道我能做什么吗?我一直在互联网上寻找类似的repo

随机推荐