安装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 官网:
总部在 瑞士日内瓦:发布于博客园
商业版本费用:
还好,有社区版可以使用。
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、