From f6b58e9d75946ebb324b87954cba1a30028be7e2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Aug 2023 16:21:02 +0200 Subject: [PATCH] Add Code Coverage Reports (#4336) --- .github/workflows/ci.yaml | 11 ++++++++--- README.md | 1 + README.zh-CN.md | 1 + docs/help/CI.md | 31 +++++++++++++++++++++++++++++-- docs/index.md | 1 + 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aae4bc0..96a9e31 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -165,9 +165,9 @@ jobs: run: | # CoreML must be installed before export due to protobuf error from AutoInstall python -m pip install --upgrade pip wheel if [ "${{ matrix.torch }}" == "1.8.0" ]; then - pip install -e . torch==1.8.0 torchvision==0.9.0 pytest "coremltools>=7.0.b1" --extra-index-url https://download.pytorch.org/whl/cpu + pip install -e . torch==1.8.0 torchvision==0.9.0 pytest-cov "coremltools>=7.0.b1" --extra-index-url https://download.pytorch.org/whl/cpu else - pip install -e . pytest "coremltools>=7.0.b1" --extra-index-url https://download.pytorch.org/whl/cpu + pip install -e . pytest-cov "coremltools>=7.0.b1" --extra-index-url https://download.pytorch.org/whl/cpu fi - name: Check environment run: | @@ -182,7 +182,12 @@ jobs: pip list - name: Pytest tests shell: bash # for Windows compatibility - run: pytest tests + run: pytest --cov=ultralytics/ --cov-report xml tests/ + - name: Upload coverage reports to Codecov + if: github.repository == 'ultralytics/ultralytics' && matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' + uses: codecov/codecov-action@v3 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} Summary: runs-on: ubuntu-latest diff --git a/README.md b/README.md index 86f3b96..83e6d35 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@
Ultralytics CI + Ultralytics Code Coverage YOLOv8 Citation Docker Pulls
diff --git a/README.zh-CN.md b/README.zh-CN.md index a7d4dc3..a11868a 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -9,6 +9,7 @@
Ultralytics CI + Ultralytics Code Coverage YOLOv8 Citation Docker Pulls
diff --git a/docs/help/CI.md b/docs/help/CI.md index fdfd468..55e5dc9 100644 --- a/docs/help/CI.md +++ b/docs/help/CI.md @@ -8,7 +8,9 @@ keywords: continuous integration, software development, CI tests, Ultralytics re Continuous Integration (CI) is an essential aspect of software development which involves integrating changes and testing them automatically. CI allows us to maintain high-quality code by catching issues early and often in the development process. At Ultralytics, we use various CI tests to ensure the quality and integrity of our codebase. -Here's a brief description of our CI tests: +## CI Actions + +Here's a brief description of our CI actions: - **CI:** This is our primary CI test that involves running unit tests, linting checks, and sometimes more comprehensive tests depending on the repository. - **Docker Deployment:** This test checks the deployment of the project using Docker to ensure the Dockerfile and related scripts are working correctly. @@ -16,6 +18,8 @@ Here's a brief description of our CI tests: - **CodeQL:** CodeQL is a tool from GitHub that performs semantic analysis on our code, helping to find potential security vulnerabilities and maintain high-quality code. - **PyPi Publishing:** This test checks if the project can be packaged and published to PyPi without any errors. +### CI Results + Below is the table showing the status of these CI tests for our main repositories: | Repository | CI | Docker Deployment | Broken Links | CodeQL | PyPi and Docs Publishing | @@ -32,4 +36,27 @@ If you notice a test failing, it would be a great help if you could report it th Remember, a successful CI test does not mean that everything is perfect. It is always recommended to manually review the code before deployment or merging changes. -Happy coding! +## Code Coverage + +Code coverage is a metric that represents the percentage of your codebase that is executed when your tests run. It provides insight into how well your tests exercise your code and can be crucial in identifying untested parts of your application. A high code coverage percentage is often associated with a lower likelihood of bugs. However, it's essential to understand that code coverage doesn't guarantee the absence of defects. It merely indicates which parts of the code have been executed by the tests. + +### Integration with [codecov.io](https://codecov.io/) + +At Ultralytics, we have integrated our repositories with [codecov.io](https://codecov.io/), a popular online platform for measuring and visualizing code coverage. Codecov provides detailed insights, coverage comparisons between commits, and visual overlays directly on your code, indicating which lines were covered. + +By integrating with Codecov, we aim to maintain and improve the quality of our code by focusing on areas that might be prone to errors or need further testing. + +### Coverage Results + +To quickly get a glimpse of the code coverage status of the `ultralytics` python package, we have included a badge and and sunburst visual of the `ultralytics` coverage results. These images show the percentage of code covered by our tests, offering an at-a-glance metric of our testing efforts. For full details please see https://codecov.io/github/ultralytics/ultralytics. + +| Repository | Code Coverage | +|-----------------------------------------------------------|----------------------------------------------------------------------| +| [ultralytics](https://github.com/ultralytics/ultralytics) | [![codecov](https://codecov.io/gh/ultralytics/ultralytics/branch/main/graph/badge.svg?token=HHW7IIVFVY)](https://codecov.io/gh/ultralytics/ultralytics) | + +In the sunburst graphic below, the inner-most circle is the entire project, moving away from the center are folders then, finally, a single file. The size and color of each slice is representing the number of statements and the coverage, respectively. + + + Ultralytics Codecov Image + + diff --git a/docs/index.md b/docs/index.md index 8252794..4d25648 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,6 +10,7 @@ keywords: Ultralytics, YOLOv8, object detection, image segmentation, machine lea

Ultralytics CI + Ultralytics Code Coverage YOLOv8 Citation Docker Pulls