持续集成 (CI)#
持续集成 (CI) 是软件开发中不可或缺的一环,涉及集成更改并自动对其进行测试。CI 让我们能够通过在开发过程中尽早且频繁地发现问题来维护高质量代码。在 Ultralytics,我们使用各种 CI 测试来确保代码库的质量和完整性。
CI 操作#
下面简要介绍我们的 CI 操作:
- CI: 这是我们的主要 CI 测试,包括运行单元测试、代码 lint 检查,以及根据代码库的不同有时执行更全面的测试。
- Docker 部署: 此测试通过 Docker 检查项目的部署,以确保 Dockerfile 和相关脚本正常工作。
- 损坏链接: 此测试会扫描代码库,查找 Markdown 或 HTML 文件中的损坏或失效链接。
- CodeQL: CodeQL 是 GitHub 提供的工具,可对代码执行语义分析,帮助查找潜在的安全漏洞并维护高质量代码。
- PyPI 发布: 此测试会检查项目能否无错误地打包并发布到 PyPI。
CI 结果#
下面的表格显示了我们主要代码库中这些 CI 测试的状态:
| 代码库 | CI | Docker 部署 | 损坏链接 | CodeQL | PyPI 和文档发布 |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| sdk | |||||
| yolo-ios-app | |||||
| yolo-flutter-app | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
每个徽章显示相应代码库的 main 分支上对应 CI 测试最近一次运行的状态。如果测试失败,徽章会显示“失败”状态;如果测试通过,则会显示“通过”状态。
如果你发现某项测试失败,如果能通过相应代码库中的 GitHub issue 报告该问题,将对我们大有帮助。
请记住,CI 测试成功并不意味着一切都完美无缺。在部署或合并更改之前,始终建议手动审查代码。
代码覆盖率#
代码覆盖率是一项指标,表示运行测试时执行的代码库代码所占的百分比。它可以帮助你了解测试对代码的覆盖程度,对于识别应用中未经测试的部分至关重要。较高的代码覆盖率通常意味着出现错误的可能性较低。不过,必须明白代码覆盖率并不能保证不存在缺陷,它只能表示测试执行了代码中的哪些部分。
与 codecov.io 集成#
在 Ultralytics,我们已将代码库与热门的在线代码覆盖率测量和可视化平台 codecov.io 集成。Codecov 提供详细的分析、提交之间的覆盖率比较,以及直接在代码上显示哪些代码行已被覆盖的可视化叠加层。
通过与 Codecov 集成,我们旨在重点关注可能容易出错或需要进一步测试的区域,从而维护并提升代码质量。
覆盖率结果#
为了快速了解代码库的代码覆盖率状态,我们为每个受跟踪的项目添加了 Codecov 徽章和旭日图预览。每个旭日图最内层的圆代表整个项目,从中心向外依次是文件夹,最后是单个文件。每个切片的大小和颜色分别代表语句数量和覆盖率。完整详情请访问 Ultralytics Codecov 组织。
| 代码库 | 代码覆盖率 | 旭日图 |
|---|---|---|
| actions | ||
| ultralytics | ||
| inference | ||
| yolo-flutter-app | ||
| yolo-ios-app | ||
| llm | ||
| profile | ||
| template | ||
| template-rust | ||
| replicate |
常见问题#
Ultralytics 中的持续集成 (CI) 包括自动集成和测试代码更改,以确保高质量标准。我们的 CI 设置包括运行单元测试、代码 lint 检查和全面测试。此外,我们还会执行 Docker 部署、损坏链接检查、用于发现安全漏洞的 CodeQL 分析,以及用于打包和分发软件的 PyPI 发布。
Ultralytics 使用专门的 CI 操作来检查 Markdown 和 HTML 文件中的损坏链接。该操作会扫描并识别失效或损坏的链接,帮助维护文档的完整性,确保用户始终能够访问准确且有效的资源。
Ultralytics 通过专用 CI 操作使用 Docker 验证项目部署。此流程确保我们的 Dockerfile 和相关脚本正常运行,从而提供一致且可复现的部署环境,这对于可扩展且可靠的 AI 解决方案至关重要。
自动化的 PyPI 发布可确保项目能够无错误地打包和发布。这一步对于分发 Ultralytics 的 Python 包至关重要,用户可以通过 Python 包索引 (PyPI)轻松安装和使用我们的工具。