为了账号安全,请及时绑定邮箱和手机立即绑定

为Python应用搭建SonarQube讲解

为 Python 项目配置 SonarQube

本文旨在介绍 SonarQube 的基本概念,并学习如何为 Python 应用程序部署 SonarQube。

静态测试是什么?

一种在程序运行前检查源代码的方法,即在不运行代码的情况下测试它。这种方法通过对比代码与预设的编码规则,确保代码符合这些规则。

SonarQube是什么?

这是一个开源平台,通过静态代码分析帮助管理代码质量。它支持多种编程语言,并且能很好地与持续集成/持续交付(CI/CD)流水线集成,确保代码在部署前符合标准。简单来说,它就是一个分析、存储和报告代码的中心。SonarQube 提供代码相关的洞察:

  • 代码异味-_非关键问题,表明代码可能存在维护上的隐患。
  • 错误-_可能导致程序行为错误的代码段。
  • 漏洞-_可能使应用暴露于攻击的安全漏洞。
  • 覆盖率-_代码被测试覆盖的比例。
  • 重复代码-_重复的代码。

每个发现都根据严重程度从严重到轻微进行评分。

什么是声纳扫描?

它是一个命令行工具,用于分析源代码并将结果发送到SonarQube。它在代码库和SonarQube之间架起了一座桥梁。Sonar扫描器提取源代码度量、违规等信息,然后将这些数据准备好,以便在SonarQube中进行可视化和管理。它可以通过简单的属性文件进行配置。

声呐扫描器

开始吧

我们将创建一个简单的项目,通过构建一个通知系统来实现,并使服务能够通过API向客户发送电子邮件,同时将SonarQube集成到服务中。

步骤 1:安装指南 - 安装和下载

  • 下载 SonarQubeSonar Scanner
  • 下载 couchbase server 的社区版。下载完成后,创建一个新的集群,一个新的桶和一个新的用户。给桶和用户名自定义命名,并在 .env 文件中使用相同的名称(bucketname, username 和 password)
  • Mailjet 网站上登录/注册,生成 API 密钥和 API 密码。将 .env 文件中的通知网关服务相关值替换为上述生成的值
  • 安装以下包:couchbaseload_dotenvflaskflask-restxmailjet_rest
2. 项目结构:

2. 项目结构介绍

项目结构

3. 编程
  • .env.env 文件)

(Optional explanation can be added here if deemed necessary for context, but in this case, the structure follows the source text closely.)

.env

  • cb.py

cb.py

  • app.py(一个Python应用文件)

app.py

4 配置 SonarQube
  • 解压下载的 sonarqube 文件夹(Java 17 是前提)后,在 bin 目录启动 sonarqube 服务。在终端中输入以下命令,然后在浏览器中访问网址 <http://localhost:9000 (本地主机的端口号是9000)>。
运行Sonar服务
./sonar.sh start

开始SonarQube

localhost:9000

  • 默认的用户名和密码是 admin. 在 SonarQube 控制台点击创建项目,选择本地导入,并输入项目名称和项目密钥。然后,点击下一步按钮。

搞个项目

  • 选择“使用默认设置”选项,再点击“新建项目”。

选项设置

5. 如何配置 Sonar Scanner?\n注:Sonar Scanner 是一款代码质量管理工具。
  • 将下载的 Sonar 扫描器文件夹解压后, 在 conf/sonar-scanner.properties 文件中添加以下行并保存。

sonar-scanner.properties

  • 打开一个新的终端,进入 bin 文件夹里并运行下面的命令。
    ./sonar-scanner -Dsonar.projectKey=<你的项目键> -Dsonar.projectBaseDir=<Python项目路径>

运行Sonar扫描

成功的分析

6. 读懂 SonarQube 报告.

一旦分析完成后,SonarQube 的仪表板将提供详细的分析信息。

仪表盘洞察

关于问题数量和严重性等级的分析

重复的情况

维护性问题

安全问题

报告中的问题可以使用 SonarQube 提供的建议来修复。修复问题后重新运行 Sonar 扫描以生成新的报告(分析结果)。

总结

在这段故事里,我们了解了 SonarQube 的基本概念,并学习了如何以简单的方式将 SonarQube 集成到 Python 应用程序中。SonarQube 能够有效提升团队的生产力,改善应用性能,并减少长期的技术债务,最终带来更高质量的 Python 项目。希望一切都清晰明了!

[ Github ] [ 官网 ] [ LinkedIn ]

更多资源
感谢您的加入

你要走了,还有件事:

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消