2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描

文章目录

  • 前言
  • 一、docker方式安装sonar
  • 二、启动容器
  • 三、创建数据库
  • 四、启动sonarqube
  • 五、访问sonar
  • 六、如果访问报错-通过sonar日志定位问题
  • 七、修改密码
  • 八、汉化(看个人选择)
  • 九、扫描
    • 十、我遇到的Sonar报错以及解决办法
  • 总结


前言

这是2024新版SonarQube+JenKins+Github联动代码扫描专题的第二部分,也是核心内容,SonarQube目前是半开源,可以自定义漏洞扫描规则,这个后面有时间可以出一篇教程,本文主要是讲2024最新版的配置和如何进行代码扫描。


提示:以下是本篇文章正文内容,下面案例可供参考

一、docker方式安装sonar

经过实践,最方便的还是docker安装,简单又快捷,可以节省很多时间。依次输入两条命令:

docker pull postgres:latest
docker pull sonarqube

二、启动容器

docker run --name db -p 5432:5432 -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

三、创建数据库

进入容器命令:

docker exec -it db /bin/bash

进入postgres命令行:

psql -U sonar

创建sonar数据库:

create database sonar;

给sonar授权:

alter role sonar createdb;alter role sonar superuser;alter role sonar createrole;

更改sonar数据库拥有者(这一步是必须的,否则会sonarqube会连接失败):

alter database sonar owner to sonar;

在这里插入图片描述

退出postgres命令行:

\p

退出docker进入linux命令行:

exit

一套操作下来,就完成安装了。这都是踩过很多坑才总结出来0报错,又快又简单的方法,我很惨的🐶。

四、启动sonarqube

docker run --name sq -e sonar.jdbc.password=sonar -e sonar.jdbc.username=sonar -e sonar.jdbc.url=jdbc:postgresql://postgres/sonar --link db:postgres -p 9000:9000 -d sonarqube

五、访问sonar

启动成功后登录ip:9000端口就可以访问了 默认账号密码:admin

六、如果访问报错-通过sonar日志定位问题

docker logs -f -t --tail==100 容器ID

七、修改密码

在这里插入图片描述

八、汉化(看个人选择)

插件市场搜索chinese,然后下载即可。
在这里插入图片描述

然后sonar会弹出重启服务的按钮,点击就行。刷新后就会变成中文版。

九、扫描

新建项目,显示名可以随意填写,能够清晰理解即可:
在这里插入图片描述

点击下一步->使用全局设置->创建projects:
在这里插入图片描述

选择本地后,创建令牌,然后选择Maven或者其他,我选择的是Maven的:
在这里插入图片描述

有一个执行SonarQube扫描的命令,直接进入到项目的根目录,用这条命令运行即可,如果不加sudo可能会报错,所以建议大家加上sudo:
sudo mvn clean verify sonar:sonar
-Dsonar.projectKey=zangccJavaDemo
-Dsonar.projectName=‘zangccJavaDemo’
-Dsonar.host.url=
-Dsonar.token=

记得在运行上面命令之前,切换好当前的jdk版本,根据项目的jdk来决定:

在这里插入图片描述

切换好jdk之后,再运行扫描命令即可:
在这里插入图片描述

命令运行成功会显示BUILD SUCCESS,否则运行失败。Sonarqube的主界面会自动刷新,显示扫描的结果:
在这里插入图片描述

十、我遇到的Sonar报错以及解决办法

问题1:[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin::sonar (default-cli) on project cmdb-nettopo-ftp-c1bb-connector: Execution default-cli of goal org.sonarsource.scanner.maven:sonar-maven-plugin::sonar failed: An API incompatibility was encountered while executing org.sonarsource.scanner.maven:sonar-maven-plugin::sonar: java.lang.UnsupportedClassVersionError: org/sonar/batch/bootstrapper/EnvironmentInformation has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

解决办法:
mvn命令前添加sudo即可解决,还有就是记得对应好当前命令终端的jdk版本。

问题2:报错“maven 打包 不再支持源选项 5。请使用 7 或更高版本”。
解决办法:这是由于没有指定java的版本造成的。我们可以在pom.xml中添加如下的属性。

<properties><!-- 这里的{jdk_version}填入你的jdk版本,我使用的是openjkd14 --><maven.compiler.target>{jdk_version}</maven.compiler.target><maven.compiler.source>{jdk_version}</maven.compiler.source>
</properties>

也可以在原本pom.xml文件中修改java.version:
在这里插入图片描述

问题3:报错Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2
解决办法:是因为 maven-war-plugin:2.2这个插件版本太低导致将项目打成war包失败了,然后在pom.xml文件中引入更新版本的插件项目就能正常安装了。到此问题解决。

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.2.1</version>
</plugin>

总结

JenKins安装与配置是SonarQube+JenKins+Github联动代码扫描的第二步。完整内容为:

2024新版SonarQube+JenKins+Github联动代码扫描(1)-JenKins安装与配置.

2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描.

2024新版SonarQube+JenKins+Github联动代码扫描(3)-三者联动配置最终章.

欢迎大家关注EureKaSec,无论是技术交流还是有兴趣加入我们团队,都欢迎随时联络沟通。
在这里插入图片描述

    文章原创,欢迎转载,请注明文章出处: 2024新版SonarQube+JenKins+Github联动代码扫描(2)-SonarQube代码扫描.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

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

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

相关文章

Python算法题集_分割回文串

Python算法题集_分割回文串 题131&#xff1a;分割回文串1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【参数回退回溯单行回文检测】2) 改进版一【参数回退回溯lambda回文检测】3) 改进版二【参数回退回溯函数回文检测】4) 改进版三【堆栈回退…

Python - getpass

文章目录 关于 getpass基本使用语法说明其它 关于 getpass getpass 是 Python 自带标准库 Python 官方文档 - getpass https://docs.python.org/3/library/getpass.html 基本使用 我们在看视频教程中&#xff0c;老师如果不想在代码中暴露 token、密码之类的信息&#xff0c…

Leet code 611 有效三角形个数

简单有效的思路&#xff1a;双指针解法 比如给出一个nums{4&#xff0c;3&#xff0c;2&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;8&#xff0c;10} 先将nums排序 -> { 2, 3, 4, 4, 5, 6, 8, 10} for(int inums.size()-1;i>2;i--) i的下标为当前最大值的下…

【C++】继续学习 string类 吧

开始使用 string类 吧 1 继续学习1.1 扩容机制1.2 string类对象的访问及遍历操作1.3 string类对象的修改操作1.4 其他一些成员函数 2 实践解决问题&#xff1a;Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇文章见&…

钉钉h5应用 环境报错Error: Do not support the current environment:notInDingTalk

钉钉h5应用 环境报错 Error: Do not support the current environment&#xff1a;notInDingTalk problem Error: Do not support the current environment&#xff1a;notInDingTalk reason 前端页面运行在普通浏览器 solution 需要将h5页面在后台发布后&#xff0c;在钉…

L2-001 紧急救援(Java)

作为一个城市的应急救援队伍的负责人&#xff0c;你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候&#xff0c;你的任务是带领你的…

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时&#xff0c;我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式&#xff1f; 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…

自建Redis蜜罐以捕获和分析潜在攻击

一、引言 随着网络攻击的日益频繁和复杂&#xff0c;传统的防御措施往往难以应对。蜜罐作为一种主动防御技术&#xff0c;通过模拟有价值的服务来吸引攻击者&#xff0c;从而收集和分析攻击数据&#xff0c;提高网络安全性。本文将介绍如何自建一个Redis蜜罐&#xff0c;以捕获…

纷争不断的低代码平台

在IT行业&#xff0c;技术的更新换代总是伴随着争议和质疑。低代码平台&#xff0c;作为一种旨在简化软件开发过程的技术&#xff0c;也不例外。但是&#xff0c;就像任何新兴技术一样&#xff0c;真正的价值往往在于实际应用中得到验证。今天&#xff0c;我要分享的故事&#…

docker 安装 Jenkins

一、安装 jenkins 中文文档&#xff1a; https://www.jenkins.io/zh/doc/book/installing/#docker jenkins 提供了详细的安装方式和步骤&#xff0c;这里咱们使用 docker 进行安装 根据文档上的命令&#xff0c;自己修改如下&#xff1a; docker run \ -u root \ --name jenki…

嵊州吃喝玩乐篇

1. 豆腐馒头 胖大姐豆腐馒头&#xff08;推荐&#xff09; 地址: 嵊州市越秀路96-98号 高德地图搜 “胖大姐黄泽豆腐馒头” 黄泽豆腐馒头 地址&#xff1a;嵊州市越秀路111号 高德地图搜 “嵊州市玉英豆腐馒头店” 2. 烧烤 老张烧烤&#xff08;推荐&#xff09; 地址&a…

【IDEA】2023版IDEA安装破解教程

2023版IDEA安装破解教程 第一步&#xff1a;IDEA的卸载 这里以Windows11系统为例&#xff0c;首先我们打开控制面板&#xff0c;点击程序&#xff0c;找到自己的IDEA&#xff0c;双击卸载。&#xff08;或者可以直接找到idea所在文件位置&#xff0c;直接delete文件夹&#x…

vue实现xml,sql,JSON自动格式化高亮

实现xml&#xff0c;json&#xff0c;sql代码组件格式化高亮&#xff1a; 需要下载的依赖&#xff1a; <template><div class"box"><div class"top" v-if"flag"><span class"text">Theme:</span><…

惠普 DsekJet GT 5810/5820常见问题及解决方法

1、HP DeskJet GT 5810/5820机器的屏幕出现“P”时&#xff0c;该如何操作&#xff1f; 当屏幕出现“P”时&#xff0c;放入A4纸&#xff0c;按住“进纸键”3秒即可&#xff0c;打印机会打印出一张校准页。 2、HP DeskJet GT 5810/5820机器的屏幕出现“A”时&#xff0c;该如何…

【开源】JAVA+Vue.js实现食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

Redis常见的15个【坑】,避坑指南

一、常见命令 1.1 过期时间意外丢失 原因&#xff1a; SET命令如果不设置过期时间&#xff0c;那么Redis会自动【擦除】这个key的过期时间 1.2 DEL命令阻塞redis key是String类型时&#xff0c;DEL时间复杂度是O(1)key是List/Hash/Set/ZSet类型&#xff0c;DEL时间复杂度是…

开发知识点-前端-layUI

layui layertabletable render <script type"text/html" id"buttonTpl">{{# if(d.check true){ }}<button class"layui-btn layui-btn-xs">已审核</button>{{# } else { }}<button class"layui-btn layui-btn-prim…

#include “stdafx.h“代码的位置,导致编译通不过

1.先上代码: #include <iostream> //std::cout #include <iterator> //std::distance #include <list> //std::list using namespace std;#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { list<int> mylist; …

神经网络算法详解

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 引言 神经网络&#xff0c;作为人工智能和机器学习领域的核心技术之一&#xff0c;具有极其重要的意义。它们通过模拟人类大脑的工作机制&#…

【鸿蒙 HarmonyOS 4.0】弹性布局(Flex)

一、介绍 弹性布局&#xff08;Flex&#xff09;提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴&#xff0c;子元素默认沿主轴排列&#xff0c;子元素在主轴方向的尺寸称为主轴尺寸&#xff0c;在交叉轴方向的尺寸称为交叉轴尺寸…