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

记一次SonarQube的踩坑

一、什么是SonarQube

SonarQube® 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。 它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查。 SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。

二、使用背景

为什么使用它?那必须是因为搬砖工作需要。因有一些代码需要审计,那自动化必须走起。

三、踩坑与问题解决

考虑快速试用,我在官网上下载了它的社区版,并在我的电脑(Windows)平台上跑,它的软件包相当简洁。
SonarQube目录
“很好,我现在就想炸死驾驶运行它!”

虽然……但是……
JDK版本错误

Unrecognized option: --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED

出错了,jdk版本错误,经查,我的JAVA_HOME给了Java 8,这不够高大上啊……
JAVA8
那就让17上吧。
Elasticsearch died
正当我满怀希望的时候,突然发现……还是出错。
于是,我狠狠地查看sonarqube.log日志记录,然而仅仅时提示ElasticSearch出错,它不干了,于是我又查看了es.log,找到了它罢工的原因:

org.elasticsearch.http.BindHttpException: Failed to bind to 127.0.0.1:9001
at org.elasticsearch.http.AbstractHttpServerTransport.bindAddress(AbstractHttpServerTransport.java:227) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.http.AbstractHttpServerTransport.bindServer(AbstractHttpServerTransport.java:194) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.http.netty4.Netty4HttpServerTransport.doStart(Netty4HttpServerTransport.java:231) ~[?:?]
at org.elasticsearch.common.component.AbstractLifecycleComponent.start(AbstractLifecycleComponent.java:51) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.node.Node.start(Node.java:426) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch.start(Elasticsearch.java:445) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch.initPhase3(Elasticsearch.java:255) ~[elasticsearch-8.16.3.jar:?]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:75) ~[elasticsearch-8.16.3.jar:?]
Caused by: java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
at sun.nio.ch.Net.bind(Net.java:555) ~[?:?]
at sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337) ~[?:?]
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294) ~[?:?]
at io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:141) ~[?:?]
at io.netty.channel.AbstractChannel A b s t r a c t U n s a f e . b i n d ( A b s t r a c t C h a n n e l . j a v a : 561 )   [ ? : ? ] a t i o . n e t t y . c h a n n e l . D e f a u l t C h a n n e l P i p e l i n e AbstractUnsafe.bind(AbstractChannel.java:561) ~[?:?] at io.netty.channel.DefaultChannelPipeline AbstractUnsafe.bind(AbstractChannel.java:561) [?:?]atio.netty.channel.DefaultChannelPipelineHeadContext.bind(DefaultChannelPipeline.java:1281) ~[?:?]
at io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:600) ~[?:?]
at io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:579) ~[?:?]
at io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:922) ~[?:?]
at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:259) ~[?:?]
at io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:380) ~[?:?]
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173) ~[?:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[?:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[?:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[?:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[?:?]
at java.lang.Thread.run(Thread.java:833) ~[?:?]

9001端口被绑了?于是我默念输入了如下咒语命令:

netstat -ano | findstr :9001

9001端口被占用
9001端口被15572号进程占用了……马上查查究竟是谁,是谁啊?

tasklist | findstr 15572

Python
原来是Python,那么我有两个选择,一是关掉这个Python(我正在打开Jupyter notebook,它侦听了端口9000),二是给es改个端口。
其中,es端口可以通过SonarQubeconf文件夹sonar.properties属性文件修改,如下图:
在这里插入图片描述
然而,我选择了先退出PythonO(∩_∩)O,然后起来了。
起来了
运行起来了,默认用户名admin,默认密码admin,登录后需要重置密码。
嗯,今天就先写到这里了,后续再慢慢体验。


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

相关文章:

  • 信用卡欺诈检测:数据降维与分类算法的实践对比
  • 无人机多人点对点控制技术解析
  • 单目3d detection算法记录
  • 滑动窗口思想的介绍与单调队列代码实现
  • IDA调试时对异常的处理
  • 三层交换机实验
  • MyBatis-Plus 优雅实现数据库单字段加密存储
  • 云原生高级实验
  • vivo 湖仓架构的性能提升之旅
  • 星越L_后尾门使用及应急开启讲解
  • vulhub靶机----基于docker的初探索,环境搭建
  • 【NPU 系列专栏 3.0 -- scale-out 和 scale-in 和 scale-up 和 scale-down
  • Guava:Google开源的Java工具库,太强大了
  • K8S-etcd备份还原操作手册
  • 第一讲 | 解锁C++编程能力:基础语法解析
  • 基于koajsAdmin+mongodb的后台管理快速开发框架安装运行记录
  • SpringCloud-创建项目
  • SpringMVC全局异常处理机制
  • 调用feapder作为子程序时setting.py文件不起作用
  • 基于Python的智联招聘数据可视化分析推荐系统