安装SonarQube:Docker

Ubuntu 20.04.3 LTS

Docker version 20.10.7

 

1、基本介绍

SonarQube 是什么?发布于博客园

代码检测工具,可以检测Java等其它若干种编程语言编写的程序的问题,并以清晰的方式展示给开发团队。结合SCM工具(SVN、Git等),可以定位到具体开发人员——谁写的问题代码。

SonarQube empowers all developers to write cleaner and safer code.

本文介绍使用Docker镜像安装SonarQube,并对一个Java程序做代码扫描。

 

前导知识:Docker、Ubuntu基础命令

 

SonarQube 官网:

https://www.sonarqube.org/

https://www.sonarsource.com/

 

总部在 瑞士日内瓦:发布于博客园

商业版本费用:

还好,有社区版可以使用。

 

2、使用Docker安装

SonarQube可以使用下载软件的方式安装,不过,自己怕麻烦,主要是想体验下SonarQube的代码扫描功能,因此,选择了Docker方式进行安装。

另一个原因是,最新版本的 sonarqube 需要 JDK 11+,如果使用的是 JDK 8(孤还是Java 8程序员的),需要使用 7.8 版本的 SonarQube

 

安装步骤比较简单,如下。发布于博客园

 

搜索 sonarqube 镜像

$ docker search sonar

拉取 最新 的 sonarqube 镜像

$ docker pull sonarqube:latest

注意,这个版本的Java起点是11,后改为拉取 7.8社区版运行。发布于博客园

可以在 Docker官网找到(https://hub.docker.com/) 社区版的 镜像Tag:

搜索 7.8:

当然,有时候点击Tags会的出现下面的错误:发布于博客园

 

拉取 7.8-community 的镜像:

$ docker pull sonarqube:7.8-community

注意,因为网络或其它问题,这个过程会比较慢。孤执行了2次才成功——第2次等待的更耐心了。

 

运行7.8-community 的镜像

$ docker run --rm -p 9000:9000 -v /home/user/sonarqube/extensions:/optsonarqube/extensions sonarqube:7.8-community

先建立了一个 /home/user/sonarqube/extensions 目录。

 

事情并非一帆风顺,运行sonarqube镜像时出现了错误——Docker方面的:发布于博客园

docker: Error response from daemon: driver failed programming external connectivity on endpoint 
awesome_poitras (55b1f5c5ca05988834637b05b65299a75e77c9a27effde47f6aadb66ab2ab32d):  (iptables failed: 
iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.2:9000 ! -i docker0: 
iptables: No chain/target/match by that name.
 (exit status 1)).
ERRO[0000] error waiting for container: context canceled

 此时,重启Docker即可:

$ systemctl restart docker.service

 

再次运行容器,成功:

默认使用 H2 database,重启后数据丢失;可以更换为使用 PostgreSQL数据库,将项目数据永久存储。发布于博客园

默认Web端口是9000。

 

访问Web端口

7.8社区版容器运行后的页面(最新版的不同,更时髦)。

首页

登录、登录后:

默认账号 admin,密码也是 admin。

 

此时没有项目。点击Create new project 创建一个新项目:这里的项目是Java 8、Maven。发布于博客园

复制 黑色背景 下的 mvn命令,拷贝到 项目的根目录下执行。执行成功如下图:发布于博客园

等待若干秒,项目的代码扫描结果就会出现在 SonarQube 的Web页面中了。

如下:

项目扫码结果 显示了 项目的整体情况:可以看到只有350行代码。

具体查看代码扫描的结果,点击进入详情页即可:发布于博客园

SonarQube不光告诉开发者问题代码的数量和类别,还会给出修复问题需要的工作量(技术债务);除了指出错误的地方,还有示例给出 错误的原因和更正策略。

 

结合SonarQube,开发团队可以产出更加优质的软件

这是一个极好的工具,听说不少大厂都在用它,详情见官网介绍。发布于博客园

 

补充信息

最新SonarQube的首页

使用最新版本SonarQube来做Java 8项目的扫描:失败

最新版本支持 Java 11+,而本机只有JDK 8。发布于博客园

Java版本列表:

发布于博客园

SoanrQube的bug

SonarQube漏洞导致源码泄漏,开源网安代码审核平台实现国产化替代

https://cloud.tencent.com/developer/article/1938860

 

【漏洞通告】SonarQube未授权访问漏洞(CNVD-2021-84502)

发布时间 2021-11-24发布于博客园

https://www.venustech.com.cn/new_type/aqtg/20211124/23266.html

 

下一步

体验到SonarQube的强大优雅后,有兴趣可以继续研究下去。

整合PostgreSQL,实现项目数据持久化;

除了使用默认的代码规则,SonarQube还可以自定义代码规则;

页面中文化;发布于博客园

这是个开源软件,也可以定义自己的规则,比如把什么阿里巴巴编程规范整合进去;

……

 

结合 团队的代码评审,SonarQube应该可以让团队取得更好的成绩。

 

参考资料

1、安装SonarQube官文

https://docs.sonarqube.org/latest/setup/install-server/

2、在 Ubuntu 20.04 LTS 上安装SonarQube

https://blog.csdn.net/weixin_44410537/article/details/112686722

3、 

posted @ 2022-09-13 21:05  快乐的欧阳天美1114  阅读(365)  评论(0编辑  收藏  举报