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