经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
SonarQube系列-架构与外部集成
来源:cnblogs  作者:DevOps在路上  时间:2023/9/10 23:47:08  对本文有异议

介绍

Sonar是一个代码质量管理的开源平台,基于Java开发的,用于管理源代码的质量,通过插件形式,可以支持包括java、C#、JavaScript等二十余种编程语言的代码质量管理与检测。

它具有免费的社区版本和其他付费版本。

SonarQube之采购选型参考

利用SonarQube的主要好处是:它集成了数千种自动的静态代码分析规则,旨在提高开发人员的代码质量和安全性,使得开发人员编写更加干净,更加安全的代码。

主要提供了三个比较大的功能:

  • 代码可靠性支持:提前捕获和提示代码中的错误,从而避免未定义的行为影响到终端用户。

  • 应用安全支持:修复可能危害到应用程序的漏洞,并通过安全热点学习AppSec(简单理解就是会学习和识别新的漏洞)。

  • 技术债务支持:确保管理的代码库干净并且可维护,以便提高开发人员的开发效率。

这可以帮助你确保代码在合并之前达到预期的质量!

  • 只需一行命令即可轻松集成到CI/CD管道中。

  • 也可以集成到Maven和Gradle构建周期中

  • 检查几乎所有内容,如代码质量,格式,变量声明,异常处理等。

实际上,研发团队可以基于SonarQube做下面的事情:

  • CI/CD流程加入一个SonarQube扫描的环节

  • 实施代码质量阈值,只有通过了这个质量阈值检测才能进入下一个流程

  • 代码质量低于阈值的项目要及时调整对应的代码

质量阈值可以进行自定义,SonarQube中针对每个项目会有详细的面板信息,里面会给出项目当前的健康状态,不同级别漏洞的分类和明细,漏洞对应提交者等多维度的统计信息,方便进行问题的追踪和修复。

针对不同的项目,SonarQube可设定了不同等级的阈值,对于老项目,会使用最低等级的阈值:阻断性的错误数量要求为0,对于一些新的项目,则严格要求质量如严重性的错误要求为0等,只要无法通过质量阈值检查,那么项目是无法上线的。

组成

1、SonarQube服务器

  1. sonarqubesonar的服务端,相当于一个web服务器,用来发布应用,在线浏览、配置分析等。
  • 开发人员和管理员操作频繁,用于浏览代码质量和配置服务器。

  • 集成ElasticSearch做搜索服务,用于返回通过UI搜索内容。

  • 集成计算引擎处理代码分析后的报告,并将报告保存到数据库。

image.png

每个文件夹的作用

  1. binsonarqube运行命令文件夹
  2. confsonarqube配置文件夹
  3. data:嵌入式数据库的数据(H2数据库引擎),建议只用于测试和演示
  4. extensionssonarqube的插件等存放文件夹
  5. libsonarqube存放的运行库文件夹(jar
  6. logssonarqube日志文件夹
  7. tempsonarqube临时文件夹
  8. websonarqube系统UI界面文件夹
  9. ```
  10. ### 2、SonarQube数据库
  11. * 存储代码分析数据报告。
  12. * 支持oracle、PostgreSQL、MySQL。
  13. ### 3、Sonarqube-Scanner

sonarqube-scanner相当于sonar客户端, sonarqube-scanner如下图所示。每个文件夹的作用和sonar类似,具体不在赘述。

  1. * 客户端工具,用于扫描项目。
  2. * 将扫描结果上传到服务器。
  3. ![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936421-622703806.png)
  4. ### 4、SonarQube Plugins
  5. * 通过插件使平台功能更加强大,
  6. * 常用的插件分类:SCM、集成、身份验证、管理维护等插件。
  7. 外部集成
  8. ----
  9. 下面的模式展示了SonarQube如何与其他ALM工具集成,以及使用SONARQUE的各种组件。
  10. 1. 开发人员在IDE中编写代码,并使用SonarLint来运行本地分析。
  11. 2. 开发人员将他们的代码推到他们最喜欢的SCMGitSvnTFVC,…
  12. 3. 连续集成服务器触发自动构建,执行SONARQUE扫描器需要运行SONARQUE分析。
  13. 4. 分析报告被发送到SONARQUE服务器进行处理。
  14. 5. SONARQUE服务器在SONARQUE数据库中处理和存储分析报告结果,并将结果显示在UI中。
  15. 6. 开发人员审查、评论、挑战他们的问题,通过SONARQUE UI管理和减少他们的技术债务。
  16. 7. 管理者从分析中得到报告;使用API来自动配置并从SONARQUE中提取数据;使用JMX监控SONARQUBE服务器
  17. ![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936717-211760692.png)
  18. SonarLint
  19. ---------
  20. SonarLint是一个Sonar IDE插件,可以接收和连接SonrarQube对代码库扫描的结果从而通知Developer, SonarLint本身也可以基于一些规则对代码IDE中的代码进行即时的检测。它的目的是在您键入代码时提供即时反馈。
  21. ![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936817-1917286195.png)![](https://img2023.cnblogs.com/blog/108082/202309/108082-20230910233936719-717063249.png)
  22. **注意:**为了获得最佳性能,Sonar Qube服务器和数据库应安装在单独的主机上,并且服务器主机应为专用主机。服务器和数据库主机应位于同一网络上。
  23. 所有主机都必须进行时间同步

原文链接:https://www.cnblogs.com/FLY_DREAM/p/17692303.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号