Link to this section継続的インテグレーション (CI)#
継続的インテグレーション (CI) は、変更を統合して自動的にテストを行う、ソフトウェア開発において不可欠な側面です。CI を活用することで、開発プロセスの初期段階かつ頻繁に問題を検出し、高品質なコードを維持することができます。Ultralytics では、コードベースの品質と整合性を確保するために、さまざまな CI テストを使用しています。
Link to this sectionCI アクション#
以下は、当社の CI アクションの概要です:
- CI: これは当社の主要な CI テストであり、ユニットテストの実行、リンティングチェック、そしてリポジトリに応じて、より包括的なテストを行うものです。
- Docker Deployment: このテストは、Docker を使用したプロジェクトのデプロイをチェックし、Dockerfile や関連スクリプトが正しく動作することを確認します。
- Broken Links: このテストは、Markdown または HTML ファイル内の壊れたリンクや無効なリンクがないか、コードベースをスキャンします。
- CodeQL: CodeQL は GitHub のツールで、コードのセマンティック分析を実行し、潜在的なセキュリティ脆弱性の発見や高品質なコードの維持に役立ちます。
- PyPI Publishing: このテストは、プロジェクトがエラーなくパッケージ化され、PyPI に公開可能かどうかをチェックします。
Link to this sectionCI 結果#
以下に、当社メインリポジトリの CI テストのステータスを示す表を記載します:
| リポジトリ | CI | Docker Deployment | Broken Links | CodeQL | PyPI and Docs Publishing |
|---|---|---|---|---|---|
| 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 テストが成功したからといって、すべてが完璧であるとは限らない点にご留意ください。デプロイや変更のマージを行う前に、手動でコードをレビューすることを常にお勧めします。
Link to this sectionコードカバレッジ#
コードカバレッジとは、テスト実行時にコードベースの何パーセントが実行されたかを示す指標です。これは、テストがどれだけ適切にコードを網羅しているかについての洞察を提供し、アプリケーションのテストされていない部分を特定するために不可欠です。コードカバレッジ率が高いほど、バグが発生する可能性が低いと一般的にみなされます。しかし、コードカバレッジは欠陥がないことを保証するものではないという点を理解しておくことが重要です。これは単に、テストによってどのコード部分が実行されたかを示しているに過ぎません。
Link to this sectioncodecov.io との統合#
Ultralytics では、当社のリポジトリをコードカバレッジを測定・可視化するための一般的なオンラインプラットフォームである codecov.io と統合しています。Codecov は、詳細な洞察、コミット間のカバレッジ比較、そしてコードに直接反映される視覚的なオーバーレイを提供し、どの行がカバーされたかを示します。
Codecov との統合により、エラーが発生しやすい領域やさらなるテストが必要な領域に焦点を当てることで、コードの品質を維持・向上させることを目指しています。
Link to this sectionカバレッジ結果#
ultralytics Python パッケージのコードカバレッジステータスを素早く把握できるよう、ultralytics カバレッジ結果のバッジとサンバースト図を含めています。これらの画像は、テストによってカバーされたコードの割合を示しており、テスト状況の指標をひと目で確認できます。詳細については、Ultralytics Codecov レポートをご覧ください。
| リポジトリ | コードカバレッジ |
|---|---|
| ultralytics |
下のサンバースト図では、中心の円がプロジェクト全体であり、中心から離れるにつれてフォルダー、最終的には個別のファイルを表しています。各スライスのサイズと色は、それぞれステートメントの数とカバレッジを表しています。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionUltralytics における継続的インテグレーション (CI) とは何ですか?#
Ultralytics における継続的インテグレーション (CI) には、高品質な基準を維持するために、コードの変更を自動的に統合しテストすることが含まれます。当社の CI セットアップには、ユニットテスト、リンティングチェック、包括的なテストの実行が含まれます。さらに、Docker デプロイ、壊れたリンクのチェック、セキュリティ脆弱性のための CodeQL 分析、およびソフトウェアをパッケージ化して配布するための PyPI 公開を実行しています。
Link to this sectionUltralytics はどのようにしてドキュメントやコード内の壊れたリンクをチェックしていますか?#
Ultralytics は、Markdown および HTML ファイル内の 壊れたリンクをチェックする ための特定の CI アクションを使用しています。これは、死んだリンクや壊れたリンクをスキャン・特定することでドキュメントの整合性を維持し、ユーザーが常に正確で最新のリソースにアクセスできるように支援します。
Link to this sectionUltralytics のコードベースにおいて CodeQL 分析が重要なのはなぜですか?#
CodeQL 分析 は、潜在的なセキュリティ脆弱性を発見し高品質な基準を維持するためにセマンティックコード分析を実行するため、Ultralytics にとって不可欠です。CodeQL を使用することで、コード内のリスクを事前に特定・軽減し、堅牢でセキュアな ソフトウェアソリューション を提供するのに役立ちます。
Link to this sectionUltralytics はどのようにして Docker をデプロイに利用していますか?#
Ultralytics は Docker を使用して、専用の CI アクションを通じてプロジェクトのデプロイを検証しています。このプロセスにより、当社の Dockerfile および関連スクリプト が正常に機能していることを確認し、スケーラブルで信頼性の高い AI ソリューションに不可欠な、一貫性があり再現可能なデプロイ環境を実現しています。
Link to this sectionUltralytics における自動 PyPI 公開の役割は何ですか?#
自動化された PyPI 公開 は、プロジェクトがエラーなくパッケージ化され公開されることを保証します。このステップは Ultralytics の Python パッケージを配布するために不可欠であり、ユーザーが Python Package Index (PyPI) を通じて当社のツールを容易にインストールして使用できるようにします。
Link to this sectionUltralytics はどのようにコードカバレッジを測定し、なぜそれが重要なのでしょうか?#
Ultralytics は Codecov との統合によりコードカバレッジを測定し、テスト中にコードベースのどれだけが実行されたかについての洞察を提供します。高いコードカバレッジは十分にテストされたコードであることを示し、バグが発生しやすいテストされていない領域を発見する助けとなります。詳細なコードカバレッジ指標は、当社の主要リポジトリに表示されているバッジ、または Codecov 上で直接確認できます。