为 Python 项目配置 SonarQube
本文旨在介绍 SonarQube 的基本概念,并学习如何为 Python 应用程序部署 SonarQube。
静态测试是什么?一种在程序运行前检查源代码的方法,即在不运行代码的情况下测试它。这种方法通过对比代码与预设的编码规则,确保代码符合这些规则。
SonarQube是什么?这是一个开源平台,通过静态代码分析帮助管理代码质量。它支持多种编程语言,并且能很好地与持续集成/持续交付(CI/CD)流水线集成,确保代码在部署前符合标准。简单来说,它就是一个分析、存储和报告代码的中心。SonarQube 提供代码相关的洞察:
- 代码异味-_非关键问题,表明代码可能存在维护上的隐患。
- 错误-_可能导致程序行为错误的代码段。
- 漏洞-_可能使应用暴露于攻击的安全漏洞。
- 覆盖率-_代码被测试覆盖的比例。
- 重复代码-_重复的代码。
每个发现都根据严重程度从严重到轻微进行评分。
什么是声纳扫描?它是一个命令行工具,用于分析源代码并将结果发送到SonarQube。它在代码库和SonarQube之间架起了一座桥梁。Sonar扫描器提取源代码度量、违规等信息,然后将这些数据准备好,以便在SonarQube中进行可视化和管理。它可以通过简单的属性文件进行配置。
声呐扫描器
开始吧我们将创建一个简单的项目,通过构建一个通知系统来实现,并使服务能够通过API向客户发送电子邮件,同时将SonarQube集成到服务中。
步骤 1:安装指南 - 安装和下载
- 下载 SonarQube,Sonar Scanner
- 下载 couchbase server 的社区版。下载完成后,创建一个新的集群,一个新的桶和一个新的用户。给桶和用户名自定义命名,并在 .env 文件中使用相同的名称(bucketname, username 和 password)
- 在 Mailjet 网站上登录/注册,生成 API 密钥和 API 密码。将 .env 文件中的通知网关服务相关值替换为上述生成的值
- 安装以下包:couchbase、load_dotenv、flask、flask-restx 和 mailjet_rest
或
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 ]
更多资源 感谢您的加入你要走了,还有件事:
- 记得点赞并关注作者👏️
- 关注我们:X | 领英 | YouTube | 新闻通讯邮件订阅 | 在Spotify上收听我们的播客
- 试试 CoFeed,智能地关注最新科技讯息 🧪
- 在 Differ 上免费启动你自己的 AI 博客 🚀
- 加入我们的 Discord 社区,与内容创作者们一起 🧑💻
- 更多内容,请访问 plainenglish.io 和 stackademic.com
共同学习,写下你的评论
评论加载中...
作者其他优质文章