百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

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的集成配置工作已经完成。

代码扫描

<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的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...

取消回复欢迎 发表评论: