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