Diff cov lint
Linting and coverage reports for git diff only.
Usage:
diff-cov-lint master new_branch --cov_report=coverage.xml --lint_report=pylint_output.txt
Example output (the command above was run in tests/repo folder):
======================== DIFF COVERAGE ========================
FILE COVERED STMTS PERCENT
src/add.py 5 8 62.5%
src/modify.py 1 2 50.0%
===============================================================
TOTAL DIFF COV 6 10 60.0%
========================== DIFF LINT ==========================
src/add.py:10:0 E0602: Undefined variable 'this_line_makes_no_sense' (undefined-variable)
Arguments:
POSITIONAL ARGUMENTS
TARGET_REF
Target branch in repo
SOURCE_REF
Source branch in repo
FLAGS
--cov_report=COV_REPORT
Path to coverage report in Cobertura (pytest-cov) format, If not stated, coverage report will not be produced.
--lint_report=LINT_REPORT
Path to pylint report. If not stated, linting report will not be produced.
--repo_path=REPO_PATH
Path to repo folder, defaults to "."
--show_missing
Flag to show missing lines, defaults to false
CI Setup
This project's repo uses diff-cov-lint itself. You might want to check .gitlab-ci.yml for full configuration.
Simple scenario
Calculate diff coverage and produce diff pylint reports for merge requests
code_quality_diff:
stage: code_quality_diff
script:
- pytest --cov=your_source_folder --cov-report xml tests # run pytest and produce xml report
- git fetch -a # fetch all branches to calculate diff
- pip install diff-cov-lint # install diff-cov-lint
- pylint --exit-zero diff_cov_lint > pylint_output.txt # get pylint report. --exit-zero needed for job not to fail if pylint give score less than 10.
- diff-cov-lint origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME origin/$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME --cov_report coverage.xml --lint_report pylint_output.txt # run diff-cov-lint on diff between target branch and source branch.
only:
- merge_requests # required to know target branch and source branch
More complicated scenario
- Run tests on each push (test job)
- Calculate diff coverage and produce diff pylint reports for merge requests (code_quality_diff job)
- Get coverage and pylint report on full code on master or manually on any push. (code_quality_full job)
Test job:
test:
stage: test
script:
- pytest --cov=your_source_folder --cov-report xml tests # run pytest and produce xml report
artifacts:
paths:
- coverage.xml # save xml report to use it in further jobs
only:
- tags # tags and branches are default values of "only", so preserve them
- branches
- merge_requests # add merge_requests since code_quality_diff job will use artifacts of this job
Diff code quality job:
code_quality_diff:
stage: code_quality_diff
script:
- git fetch -a # fetch all branches to calculate diff
- pip install diff-cov-lint # install diff-cov-lint
- pylint --exit-zero diff_cov_lint > pylint_output.txt # get pylint report. --exit-zero needed for job not to fail if pylint give score less than 10.
- diff-cov-lint origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME origin/$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME --cov_report coverage.xml --lint_report pylint_output.txt # run diff-cov-lint on diff between target branch and source branch. coverage.xml is used from the artifact.
only:
- merge_requests
Full code quality job:
code_quality_full:
stage:
code_quality_full
script:
- pytest --cov=your_source_folder tests # simply run pytest with coverage and pylint as usual
- pylint --exit-zero diff_cov_lint
rules:
- if: '$CI_COMMIT_REF_NAME == "master"'
- if: $CI_MERGE_REQUEST_ID
when: never #otherwise this job will stuck for merge requests
- when: manual # use manual to make this job optional for all other pipelines.
Release files for diff-cov-lint 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diff_cov_lint-0.1.2.tar.gz | 6.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diff_cov_lint-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:14.4 kB
Release files / diff_cov_lint-0.1.2.tar.gz
| Download URL | diff_cov_lint-0.1.2.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49a3ddd072c8b3eb3479fe374b78f6d557d50c3f60f6ba99071f98a713cc784c
|
|
BLAKE2b-256 checksum How to use checksums |
87ae0a2681bfd4e7f72267ce269f10b2d946b6d32b669ae2f6881b83a845b742
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6
|
Release files / diff_cov_lint-0.1.2-py3-none-any.whl
| Download URL | diff_cov_lint-0.1.2-py3-none-any.whl |
|---|---|
| Size | 8.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5639d09524b4e15a8ab2801ce581695202547f8829eb8d1e8171d52b20b6f401
|
|
BLAKE2b-256 checksum How to use checksums |
81bd3b24da7845c3fca9bbaa5e57fb76637bdf6c2f617fe0042ccd3122dedd5b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.6
|