DevOPS | 代码静态扫描工具SonarQube的安装和初步使用
suiw9 2024-11-06 20:24 62 浏览 0 评论
DevOPS工具链中,在代码静态扫描这一环,SonarQube的使用算的是比较多的了,功能也比较强大。这篇文章,我们先介绍下基于docker的最新版7.9.1的安装、配置和使用。注意,从7.9版本开始,SonarQube只支持Oracle、SQLServer和PostgreSQL,MySQL不在支持,所以如果大家已经安装了旧版本,需要迁移数据库,迁移的方法,大家可以参见:https://github.com/SonarSource/mysql-migrator。另外PostgreSQL的安装和使用,不在本文的介绍范围,后续咋说,或者大家先自行学习。
基于Docker的安装
- 使用如下命令拉下最新的docker镜像
docker pull sonarqube:latest
- 因为我最终会把配置、扩展等存储到宿主机做持续话,所以先在宿主机上创建对应的文件路径
mkdir /sonar mkdir /sonar/data mkdir /sonar/conf mkdir /sonar/extensions mkdir /sonar/logs chown -R 999:999 /sonar
注意最后的更改权限必须做,不然会报权限错误
- 接下来使用如下的脚本创建sonarqube的容器:
docker run -d --name sonarqube \ -p 9000:9000 \ -v /sonar/conf:/opt/sonarqube/conf \ -v /sonar/data:/opt/sonarqube/data \ -v /sonar/logs:/opt/sonarqube/logs \ -v /sonar/extensions:/opt/sonarqube/extensions \ -e sonar.jdbc.username=postgres -e sonar.jdbc.password= -e sonar.jdbc.url="jdbc:postgresql://192.168.10.49/sonar_demo" \ --restart=on-failure:3 sonarqube
简单说下:sonarqube的默认端口为9000,映射到宿主机的端口也是9000;然后使用-v把刚才创建的文件路径挂载到容器的对应路径;最后的-e传入PostgreSQL的地址、用户名、密码和数据库等信息
- 如无错误,容器将启动成功,使用docker ps进行查看:
有错误的话,大家docker logs <容器id>查看下什么错误,自行解决下,或者后台发给我,我们一起看看。
整个安装过程还是很简单啊。完成之后,可以访问http://ip:9000,使用默认的管理员账号admin/admin进行登录:
与OpenLdap集成
上篇文章我们介绍了测试运维 | OpenLdap的安装和使用,今天我们先做和SonarQube的集成:
- 首先我们使用admin账号登录后,在后台的Administration - Security - Groups可以看到如下的Group:
望文生义,sonar-administrators就是sonar的管理员组;sonar-users就是一般权限的组。进一步查看组成员,我们发现admin账号的确在sonar-administrators组下:
从而印证了我们的猜测。
- 使用ApacheDirectoryStudio连接OpenLdap服务器之后,在ou=Groups下建立两个新组,ou=sonar-administrators,ou=sonar-users
- 在ou=People下建立一个新用户cn=superadmin,然后加入到ou=sonar-administrators下面;建立一个新用户cn=normaluser,然后加入到ou=sonar-users下面
- 在SonarQube里面,Administration - Marketplace,搜索并安装LDAP插件:
- 在/sonar/conf/sonar.properties文件里(如果没有则创建),加入如下内容:
- 同时,插件完成安装之后,重启SonarQube
- 重启完成之后,我们用superadmin账号登录,发现是管理员权限;用normaluser账号登录,发现是普通用户权限。
至此,SonarQube的安装和与OpenLdap的集成配置工作已经完成。
代码扫描
- 与jenkins的集成,大家可以参考DevOPS | 基于sonarqube、jenkins和gitlab的持续集成代码检查
- 与Maven项目的集成,修改maven的conf/settings.xml,注意按照如下的节点位置,添加内容:
<settings> <pluginGroups> <pluginGroup>org.sonarsource.scanner.maven</pluginGroup> </pluginGroups> <profiles> <profile> <id>sonar</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <!-- Optional URL to server. Default value is http://localhost:9000 --> <sonar.host.url> http://192.168.10.49:9000 </sonar.host.url> </properties> </profile> </profiles> </settings>
- 运行如下命令进行扫描:
mvn clean verify sonar:sonar
如果得到如下错误:
No quality profiles have been found, you probably don't h
ave any language plugin installed.
那么先在SonarQube的Marketplace里面装下SonarJava插件:
- 扫描完成之后登陆SonarQube即可看到扫描的结果:
- 针对其他项目类型,比如Gradle、ANT等的支持,大家可以自行参考官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-gradle/
总结
文章介绍了基于Docker的SonarQube的安装方法及与OpenLdap的集成步骤,并介绍了Maven项目的扫描方法,给大家在DevOPS中开展代码的静态扫描开了个头,大家最好实际动手用起来。后续将进一步介绍SonarQube的配置和深入使用。
相关推荐
- 5款Syslog集中系统日志常用工具对比推荐
-
一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...
- 跨平台、多数据库支持的开源数据库管理工具——DBeaver
-
简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...
- 强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)
-
NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...
- 3 年 Java 程序员还玩不转 MongoDB,网友:失望
-
一、什么场景使用MongoDB?...
- 拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南
-
作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...
- mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?
-
前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...
- solidworks使用心得,纯干货!建议大家收藏
-
SolidWorks常见问题...
- 统一规约-关乎数字化的真正实现(规范统一性)
-
尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...
- Elasticsearch节点角色配置详解(Node)
-
本篇文章将介绍如下内容:节点角色简介...
- 产前母婴用品分享 篇一:我的母婴购物清单及单品推荐
-
作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...
- 比任何人都光彩照人的假期!水润、紧致的肌肤护理程序
-
图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...
- Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型
-
中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...
- 柔性——面向大规模定制生产的数字化实现的基本特征
-
大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...
- 创建PLC内部标准——企业前进的道路
-
作者:FrankBurger...
- 标准化编程之 ----------- 西门子LPMLV30测试总结
-
PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...
你 发表评论:
欢迎- 一周热门
-
-
Linux:Ubuntu22.04上安装python3.11,简单易上手
-
宝马阿布达比分公司推出独特M4升级套件,整套升级约在20万
-
MATLAB中图片保存的五种方法(一)(matlab中保存图片命令)
-
别再傻傻搞不清楚Workstation Player和Workstation Pro的区别了
-
Linux上使用tinyproxy快速搭建HTTP/HTTPS代理器
-
如何提取、修改、强刷A卡bios a卡刷bios工具
-
Element Plus 的 Dialog 组件实现点击遮罩层不关闭对话框
-
日本组合“岚”将于2020年12月31日停止团体活动
-
SpringCloud OpenFeign 使用 okhttp 发送 HTTP 请求与 HTTP/2 探索
-
tinymce 号称富文本编辑器世界第一,大家同意么?
-
- 最近发表
-
- 5款Syslog集中系统日志常用工具对比推荐
- 跨平台、多数据库支持的开源数据库管理工具——DBeaver
- 强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)
- 3 年 Java 程序员还玩不转 MongoDB,网友:失望
- 拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南
- mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?
- solidworks使用心得,纯干货!建议大家收藏
- 统一规约-关乎数字化的真正实现(规范统一性)
- Elasticsearch节点角色配置详解(Node)
- 产前母婴用品分享 篇一:我的母婴购物清单及单品推荐
- 标签列表
-
- dialog.js (57)
- importnew (44)
- windows93网页版 (44)
- yii2框架的优缺点 (45)
- tinyeditor (45)
- qt5.5 (60)
- windowsserver2016镜像下载 (52)
- okhttputils (51)
- android-gif-drawable (53)
- 时间轴插件 (56)
- docker systemd (65)
- slider.js (47)
- android webview缓存 (46)
- pagination.js (59)
- loadjs (62)
- openssl1.0.2 (48)
- velocity模板引擎 (48)
- pcre library (47)
- zabbix微信报警脚本 (63)
- jnetpcap (49)
- pdfrenderer (43)
- fastutil (48)
- uinavigationcontroller (53)
- bitbucket.org (44)
- python websocket-client (47)