使用SonarQube分析Python代码

12 2025 年 4 月 | 阅读 5 分钟

在本教程中,我们将学习如何在 SonarQube 的帮助下分析 Python 程序代码。但在开始之前,让我们先讨论一下 SonarQube 的基本知识以及如何设置它来分析 Python 代码。

SonarQube 简介

SonarQube 是一个强大的、社区驱动的代码质量和安全分析工具,用于分析存储库。这意味着像其他 SA 工具一样,它在不运行代码的情况下分析代码的各种问题,因此是当前软件开发流程中不可或缺的工具。SonarQube 支持包括 Python 在内的 30 多种编程语言,是代码审查和质量检查的一站式解决方案。

SonarQube 的主要功能

  1. Bug 检测:列出可能导致运行时失败的编码错误。
  2. 代码异味:提醒可能引起对可维护性关注的额外事物,例如过于复杂的步骤或不必要的 变量
  3. 安全漏洞:定期检查潜在威胁,包括 SQL 注入、数据处理不当等。
  4. 技术债务管理:使您能够评估和减少为优化目的修复代码库所需的时间。
  5. 质量门:实施预定的标准,以规范代码是否符合组织的质量标准。

总而言之,SonarQube 提供了开发人员在开发阶段进行有效修复或保持高质量所需的所有代码详细信息。

为什么代码质量和安全在 Python 项目中变得越来越重要?

Python 被用于 Web 开发数据科学、自动化以及其他领域。然而,这项活动具有动态性,如果控制不当,有时会导致与代码质量和安全相关的问题。确保代码的整洁和安全至关重要,原因如下:

  1. 可靠性:良好的代码实现缺陷率低,因此可以提高 软件 的可靠性和可信度。
  2. 可维护性:混乱的代码在更新和添加时产生的麻烦更少,并且在项目生命周期中更能扩展,从而从长远来看可以节省资金。
  3. 安全性:Python 应用程序的安全漏洞会影响数据机密性和用户信任,并可能导致法律和财务后果。
  4. 性能:效率问题确保了资源的合理利用和应用程序速度的提升。
  5. 协作:有条理的代码对其他团队来说更易于访问,这在广泛的转型项目中尤其有用。

为 Python 项目设置 SonarQube:分步指南

本指南将向您展示如何安装 SonarQube 来检查 Python 项目。我们将提供示例代码,详细说明如何进行分析,最后说明如何解读结果。

前提条件

在开始之前,请确保已安装以下软件:

  1. SonarQube:从 SonarQube 下载。使用社区版进行基本功能。
  2. SonarScanner:用于运行代码分析的 CLI 工具。
  3. Python:确保您的 Python 环境已设置(首选 Python 3.x)。

安装和启动 SonarQube

安装 SonarQube 的分步方法:

步骤 1:下载 SonarQube。

步骤 2:解压文件并导航到目录。

步骤 3:启动 SonarQube

  • 在 Linux/Mac 上:./bin/[your OS]/sonar.sh start
  • 在 Windows 上:StartSonar.bat

步骤 4:打开浏览器并导航到 https://:9000。使用默认凭据(admin/admin)登录。

在 SonarQube 中创建 Python 项目

步骤 1:登录 SonarQube 仪表板。

步骤 2:点击“创建项目”并提供项目密钥(例如,python-demo)和显示名称。

步骤 3:生成令牌以进行身份验证。

准备您的 Python 项目

创建示例 Python 项目

目录结构

示例代码 (app.py)

这段代码没有重大问题,但可以对其进行分析以进行潜在改进。

配置 SonarScanner

在项目根目录中,创建一个 sonar-project.properties 文件

sonar-project.properties 文件内容

将 <your-token> 替换为在 SonarQube 仪表板中生成的令牌。

运行 SonarScanner

  • 打开终端并导航到您的项目目录。
  • 运行以下命令
  • 扫描器将分析 Python 代码并将结果上传到 SonarQube 服务器。

查看分析结果

  • 转到 SonarQube 仪表板并打开 python-demo 项目。
  • 审查以下内容:
    • Bug:可能导致运行时错误的潜在问题。
    • 代码异味:改进可维护性的建议。
    • 安全漏洞:代码中的潜在风险。

    输出

    运行 sonar-scanner 后,终端会显示:

     
    INFO: Scanner configuration file: /path/to/sonar-scanner/conf/sonar-scanner.properties
    INFO: Project root configuration file: /path/to/python-demo/sonar-project.properties
    INFO: 2 files indexed
    INFO: Quality profile for py: Sonar way
    INFO: Analysis report uploaded in 0.3s
    INFO: ANALYSIS SUCCESSFUL, you can browse https://:9000/dashboard?id=python-demo   
    

    在仪表板上,您可能会看到:

    • 1 个代码异味:建议改进 greet 函数的可读性。
    • 0 个 Bug:代码无错误。
    • 0 个漏洞:未检测到安全问题。

    说明

    • 代码异味:SonarQube 可能会标记诸如 if does not name 块之类的区域,建议使用替代编码实践以获得更好的清晰度。
    • 指标:显示总代码行数、复杂度和可维护性指数,以帮助评估您的项目。

    使用 SonarQube 的一些优点

    事实上,任何 Python 开发人员都应该将 SonarQube 视为保证其应用程序的可靠性、可持续性和安全性的宝贵工具集。主要好处包括:

    1. 早期问题检测:基本上,SonarQube 会预测可能影响可执行产品的 bug、漏洞和代码异味。在开发过程中花费巨额资金来修复问题,不如将额外的时间、金钱和人力资源投入到预防措施上。
    2. 增强的安全性:SonarQube 拥有识别 Python 特定安全漏洞的内置规则,有助于开发人员保护其应用程序免受常见威胁,如输入验证不当或不安全 API。
    3. 改进的代码标准:因此,SonarQube 中设置的编码标准使不同的开发团队能够遵循通用标准,从而促进代码的可读性。
    4. 技术债务减少:SonarQube 中的低效以纠正问题所需的努力次数来表示,这使得团队可以轻松地确定问题的优先级。
    5. 持续集成:CI/CD 工具的集成可确保有效进行代码质量控制,从而最大程度地减少部署所需的时间。
    6. 可操作的见解:SonarQube 使用任何程序员熟悉的界面,其中问题根据优先级级别进行分组,并包括如何以及由谁来解决这些问题。
    7. 可定制性:SonarQube 可以根据项目偏好或组织标准调整其规则和配置。

    结论

    在上面的教程中,我们学习了 SonarQube 的基础知识。我们还通过一个示例讨论了 SonarQube 如何帮助分析 Python 代码。