当前位置: 首页 > article >正文

Sonar Qube介绍和安装(三)

Sonar Qube介绍

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

Sonar Qube环境搭建

Sonar Qube安装

Sonar Qube在7.9版本中已经放弃了对MySQL的支持,并且建议在商业环境中采用PostgreSQL,那么安装Sonar Qube时需要依赖PostgreSQL。
并且这里会安装Sonar Qube的长期支持版本8.9

  • 拉取镜像
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

在这里插入图片描述

  • 浏览器访问9000端口,发现容器启动失败,查看docker日志
docker  logs -f sonarqube

在这里插入图片描述

  • 设置sysctl.conf文件信息
vi /etc/sysctl.conf

设置完成后执行: sysctl -p

sysctl -p

在这里插入图片描述
在这里插入图片描述

  • 重启容器: docker-compose up -d,访问9000端口登录SonarQube
    SonarQube 默认密码和账号均为: admin
    在这里插入图片描述

安装中文插件

Sonar Qube的基本使用

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

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.43.141:9000</sonar.host.url>
	</properties>
</profile>

在这里插入图片描述

  • 在代码位置执行命令:mvn sonar:sonar
    在这里插入图片描述
    这里执行可能会报错:
java.lang.TypeNotPresentException: Type org.sonarsource.scanner.maven.SonarQubeMojo not present
Caused by: java.lang.UnsupportedClassVersionError: org/sonarsource/scanner/maven/SonarQubeMojo : Unsupported major.minor version 52.0

只需要在pom.xml文件加上

 <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sonar-maven-plugin</artifactId>
          <version>3.7.0.1746</version>
 </plugin>

在这里插入图片描述

  • 查看Sonar Qube界面检测结果
    在这里插入图片描述

Sonar-scanner实现代码检测

  • 下载Sonar-scanner:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
    下载4.6.x版本即可,要求Linux版本
  • 解压并配置sonar服务端信息
    1. 由于是zip压缩包,需要安装unzip解压插件

      yum -y install unzip
      
    2. 解压压缩包

      unzip sonar-scanner-cli-4.6.0.2311-linux.zip
      
    3. 将 sonar-scanner 移动到 Jenkins 容器数据卷中

      cd /usr/local/docker/jenkins_docker/data
      mv /sonar-scanner ./
      
    4. 配置sonarQube服务端地址,修改conf下的sonar-scanner.properties
      在这里插入图片描述
      在这里插入图片描述

    5. 在项目所在目录执行以下命令
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      Ps:主要查看我的sonar-scanner执行命令的位置

      /usr/local/docker/jenkins_docker/data/sonar-scanner/bin/sonar-scanner -Dsonar.sources=./ -Dsonar.projectname=linux-test -Dsonar.projectKey=linux-test -Dsonar.java.binaries=target/ -Dsonar.login=718e3d1d21ae6a55ddea5e0979d5eb762d9d51fc
      
    6. 查看结果
      在这里插入图片描述

Jenkins集成Sonar Qube

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

Jenkins安装插件

  • 安装SonarQube Scanner插件
    在这里插入图片描述
  • Jenkins配置Sonar Qube
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 配置Sonar-scanner
    将Sonar-scaner添加到Jenkins数据卷中并配置全局配置
    在这里插入图片描述
    配置任务的Sonar-scanner
    在这里插入图片描述
    在这里插入图片描述

构建任务

  • 构建任务报错
    在这里插入图片描述
  • 删除工作目录下 mytest 项目,再次重新构建
    由于之前测试生成了 .scannerwork 文件,也可以只删除 .scannerwork 文件
    在这里插入图片描述
  • 成功构建

http://www.kler.cn/a/407052.html

相关文章:

  • “AI玩手机”原理揭秘:大模型驱动的移动端GUI智能体
  • Python 中的三重引号
  • 科研深度学习:如何精选GPU以优化服务器性能
  • Mysql的UPDATE(更新数据)详解
  • 【ubuntu24.04.1最简洁安装方案】
  • 面试小札:Java的类加载过程和类加载机制。
  • uni-app 认识条件编译,了解多端部署
  • 雷电模拟器charles代理抓包
  • 分层架构 IM 系统之 Entry 部署模式
  • 【线程】Java线程操作
  • 【论文笔记】LLaVA-KD: A Framework of Distilling Multimodal Large Language Models
  • 自动化测试用例编写详解
  • 机器学习杂笔记1:类型-数据集-效果评估-sklearn-机器学习算法分类
  • PH热榜 | 2024-11-23
  • RabbitMQ高可用延迟消息惰性队列
  • Unity图形学之法线贴图原理
  • Python设计模式详解之10 —— 外观模式
  • 1123--日期类
  • 华为防火墙技术基本概念学习笔记
  • 医学AI公开课·第一期|Machine LearningTransformers in Med AI
  • D77【 python 接口自动化学习】- python基础之HTTP
  • 对撞双指针(七)三数之和
  • Jetpack Compose 如何布局解析
  • 系统设计---RBAC模型与ABAC模型
  • 【H2O2|全栈】JS进阶知识(九)ES6(5)
  • 大语言模型---Llama模型文件介绍;文件组成