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.hqwc.cn/news/512158.html

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

相关文章

Jmeter中给请求计数

1.添加counter计数器&#xff0c;注意定义引用的变量 2.在http请求上加上自定义的计数器变量 3.

哈希的简单介绍

unordered系列关联式容器 在C98中&#xff0c;STL提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 l o g 2 N log_2 N log2​N&#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的…

在Java中处理JSON数据:Jackson与Gson库比较

引言 JSON&#xff0c;作为一种轻量级的数据交换格式&#xff0c;因其易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff0c;而被广泛应用于网络通信和配置文件中。在Java中&#xff0c;有两个强大的工具帮助咱们处理JSON数据——Jackson和Gson。这两个库各有千秋…

windows ping长包命令显示时间、记录日志

windows ping长包命令显示时间、记录日志 写一个windows的bat脚本&#xff0c;可以执行网络状态监控&#xff0c;查看网站是否丢包&#xff0c;在后台一直执行&#xff0c;记录日志和时间 1、新建ping_test.txt文档&#xff0c;将以下命令粘贴进去 echo off set /p hosthost…

Java并发基础:原子类之AtomicMarkableReference全面解析

内容概要 AtomicMarkableReference类能够确保引用和布尔标记的原子性更新&#xff0c;有效避免了多线程环境下的竞态条件&#xff0c;其提供的方法可以轻松地实现基于条件的原子性操作&#xff0c;提高了程序的并发安全性和可靠性。 核心概念 场景举例 AtomicMarkableRefer…

2.3_6 生产者消费者问题

文章目录 2.3_6 生产者消费者问题&#xff08;一&#xff09;问题描述&#xff08;二&#xff09;问题分析&#xff08;三&#xff09;如何实现&#xff08;四&#xff09;思考&#xff1a;能否改变相邻P、V操作的顺序&#xff1f; 总结 2.3_6 生产者消费者问题 &#xff08;一…

安卓开发:计时器

一、新建模块 二、填写应用名称和模块名称 三、选择模块&#xff0c;Next 四、可以保持不变&#xff0c;Finish 五、相关目录文件 六、相关知识 七、&#xff1f;

【自然语言处理六-最重要的模型-transformer-上】

自然语言处理六-最重要的模型-transformer-上 什么是transformer模型transformer 模型在自然语言处理领域的应用transformer 架构encoderinput处理部分&#xff08;词嵌入和postional encoding&#xff09;attention部分addNorm Feedforward & add && NormFeedforw…

IDEA创建Sping项目只能勾选17和21,却无法使用Java8

报错信息 The required java version 17 is not supported by the project SDK 1.8.The maximum supported Java version is 8. 想创建一个springboot项目&#xff0c;本地安装jdk版本为1.8&#xff0c;但是在使用 Spring Initializr创建项目时,版本只能选择21或17&#xff0c;…

H3C 路由过滤路由引入实验

H3C 路由过滤&路由引入实验 实验拓扑 ​​ 实验需求 按照图示配置 IP 地址&#xff0c;R1&#xff0c;R3&#xff0c;R4 上使用 loopback 口模拟业务网段R1 和 R2 运行 RIPv2&#xff0c;R2&#xff0c;R3 和 R4 运行 OSPF&#xff0c;各自协议内部互通在 RIP 和 OSPF …

【促销定价】背后的算法技术3-数据挖掘分析

【促销定价】背后的算法技术3-数据挖掘分析 01 整体分析1&#xff09;整体概览2&#xff09;类别型特征概览3&#xff09;数值型特征概览 02 聚合分析1&#xff09;天维度2&#xff09;品维度3&#xff09;价格维度4&#xff09;数量维度 03 相关分析1&#xff09;1级品类2&…

从零开始学单片机,该怎么入门?

从零开始学单片机&#xff0c;该怎么入门&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己…