Link to this section持续集成 (CI)#
持续集成 (CI) 是软件开发中的一个重要环节,它涉及自动集成和测试代码变更。CI 使我们能够通过在开发过程中尽早且频繁地发现问题来保持高质量的代码。在 Ultralytics,我们使用各种 CI 测试来确保代码库的质量和完整性。
Link to this sectionCI 操作#
以下是我们 CI 操作的简要描述:
- CI: 这是我们的核心 CI 测试,包括运行单元测试、Linting 检查,以及根据存储库的不同进行更全面的测试。
- Docker 部署: 该测试检查项目使用 Docker 的部署情况,以确保 Dockerfile 和相关脚本运行正常。
- 损坏链接: 该测试扫描我们的 Markdown 或 HTML 文件,查找其中任何损坏或无效的链接。
- CodeQL: CodeQL 是 GitHub 的一款工具,它对我们的代码执行语义分析,有助于发现潜在的安全漏洞并维护高质量代码。
- PyPI 发布: 该测试检查项目是否可以无错误地打包并发布到 PyPI。
Link to this sectionCI 结果#
下表显示了我们主要存储库的 CI 测试状态:
| 存储库 | CI | Docker 部署 | 损坏链接 | CodeQL | PyPI 和文档发布 |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
每个徽章都显示了相应存储库 main 分支上最近一次 CI 测试运行的状态。如果测试失败,徽章将显示“失败”状态;如果通过,则显示“通过”状态。
如果你发现测试失败,如果能在相应的存储库中通过 GitHub issue 进行反馈,那将是极大的帮助。
请记住,CI 测试通过并不意味着一切完美。在部署或合并变更之前,始终建议手动审查代码。
Link to this section代码覆盖率#
代码覆盖率是一个衡量指标,表示运行测试时执行的代码库百分比。它提供了对测试执行代码程度的深入见解,对于识别应用程序中未经测试的部分至关重要。高代码覆盖率通常意味着较低的错误概率。然而,必须理解代码覆盖率并不保证没有缺陷。它仅仅指出了代码中哪些部分已被测试执行。
Link to this section与 codecov.io 集成#
在 Ultralytics,我们将我们的存储库与 codecov.io 进行了集成,这是一个用于衡量和可视化代码覆盖率的流行在线平台。Codecov 提供详细的见解、提交之间的覆盖率比较,并直接在代码上提供视觉叠加,指示哪些行被覆盖。
通过与 Codecov 集成,我们旨在通过关注可能容易出错或需要进一步测试的领域来维护和提高代码质量。
Link to this section覆盖率结果#
为了快速了解 ultralytics Python 包的代码覆盖率状态,我们包含了一个徽章和 ultralytics 覆盖率结果的旭日图。这些图片显示了被我们测试覆盖的代码百分比,提供了一目了然的测试工作指标。有关完整详情,请访问 Ultralytics Codecov 报告。
| 存储库 | 代码覆盖率 |
|---|---|
| ultralytics |
在下方的旭日图中,最内圈是整个项目,从中心向外依次是文件夹,最后是单个文件。每一片的大小和颜色分别代表语句的数量和覆盖率。
Link to this section常见问题解答#
Link to this section什么是 Ultralytics 中的持续集成 (CI)?#
Ultralytics 中的持续集成 (CI) 涉及自动集成和测试代码变更,以确保高质量标准。我们的 CI 设置包括运行 单元测试、Linting 检查和全面测试。此外,我们还执行 Docker 部署、损坏链接检查、针对安全漏洞的 CodeQL 分析 以及用于打包和分发我们软件的 PyPI 发布。
Link to this sectionUltralytics 如何检查文档和代码中的损坏链接?#
Ultralytics 使用特定的 CI 操作来 检查 我们 Markdown 和 HTML 文件中的损坏链接。这有助于通过扫描和识别死链接或损坏链接来维护文档的完整性,确保用户始终能够访问准确且有效的资源。
Link to this section为什么 CodeQL 分析对 Ultralytics 的代码库很重要?#
CodeQL 分析 对 Ultralytics 至关重要,因为它执行语义代码分析以发现潜在的安全漏洞并维护高质量标准。通过 CodeQL,我们可以主动识别并降低代码中的风险,从而帮助我们交付强大且安全的 软件解决方案。
Link to this sectionUltralytics 如何利用 Docker 进行部署?#
Ultralytics 通过专门的 CI 操作采用 Docker 来验证我们项目的部署。此过程确保我们的 Dockerfile 和相关脚本 运行正常,从而实现一致且可重复的部署环境,这对可扩展且可靠的 AI 解决方案至关重要。
Link to this section自动 PyPI 发布在 Ultralytics 中扮演什么角色?#
自动 PyPI 发布 确保我们的项目可以无错误地打包和发布。此步骤对于分发 Ultralytics 的 Python 包至关重要,让用户可以通过 Python Package Index (PyPI) 轻松安装和使用我们的工具。
Link to this sectionUltralytics 如何衡量代码覆盖率,为什么这很重要?#
Ultralytics 通过与 Codecov 集成来衡量代码覆盖率,从而深入了解在测试过程中执行了多少代码库。高代码覆盖率可以表明代码经过了充分测试,有助于揭示可能容易出现 Bug 的未经测试区域。详细的代码覆盖率指标可以通过我们主要存储库上显示的徽章或直接在 Codecov 上查看。