Checking the Django project for quality
Project description
eqator
Checking the Django project for quality. It can be convenient if you include it in CI.
Used packages:
- django unittest - unit testing in Django.
- flake8 - linter of source code.
- radon - tool that computes various metrics from the source code.
- bandit - a security linter from PyCQA.
- coverage - a test coverage for unittest.
Quickstart
Install with pip:
pip install eqator
Add the eqator
to your INSTALLED_APPS
:
# settings.py
INSTALLED_APPS = [
# ...
'eqator',
]
To use Lighthouse scoring, install Lighthouse CI
with npm
:
npm install -g @lhci/cli
Check your project (default run all the checks excluding Lighthouse CI):
python manage.py qa
Check your project by separate options.
Run checking style guide with flake8:
python manage.py qa -f
python manage.py qa --flake
Run checking cyclomatic complexity with radon
python manage.py qa -r
python manage.py qa --radon
Run security lint with bandit
python manage.py qa -l
python manage.py qa --linter
Run django project migrations check
python manage.py qa -m
python manage.py qa --migrations
Run django unittest
python manage.py qa -t
python manage.py qa --tests
Run django unit tests for garpix_page
python manage.py qa -p
python manage.py qa --garpix_page
Run test coverage check
python manage.py qa -c
python manage.py qa --test_coverage
Note, that you need to add TEST_COVERAGE_RATE
variable to your settings.py
file (default value is 70):
TEST_COVERAGE_RATE = 70
Check your project with Lighthouse CI:
(requires Lighthouse CI installed)
python manage.py qa -a
python manage.py qa --all
Optionally, do not save Lighthouse CI report files:
python manage.py qa --all --clear-reports
Check your project with all logs:
python manage.py qa --verbose
Example output with OK
Input
Directory: /Users/aleksejkuznecov/projects/garpix_packages/eqator/backend
Start at: 2021-02-27 12:09:30.999142
Checking
Checking style guide with flake8 (see ".flake8") OK
Django unit tests OK
Cyclomatic complexity with radon (see "radon.cfg") OK
Security lint with bandit (only high-severity issues, see ".bandit") OK
Result
Problems found: 0
End at: 2021-02-27 12:09:33.789880
Duration: 0:00:02.790738
Example output with problems
Input
Directory: /Users/aleksejkuznecov/projects/garpix_packages/eqator/backend
Start at: 2021-02-27 12:23:41.066752
Checking
Checking style guide with flake8 (see ".flake8") ERROR
/Users/aleksejkuznecov/projects/garpix_packages/eqator/backend/eqator/constants.py:18:4: W292 no newline at end of file
/Users/aleksejkuznecov/projects/garpix_packages/eqator/backend/eqator/helpers.py:38:1: E302 expected 2 blank lines, found 1
/Users/aleksejkuznecov/projects/garpix_packages/eqator/backend/eqator/colors.py:9:1: W391 blank line at end of file
Django unit tests OK
Cyclomatic complexity with radon (see "radon.cfg") OK
Security lint with bandit (only high-severity issues, see ".bandit") ERROR
[main] INFO Found project level .bandit file: /Users/aleksejkuznecov/projects/garpix_packages/eqator/backend/.bandit
[main] INFO profile include tests: None
[main] INFO cli include tests: None
[main] INFO cli exclude tests: None
[main] INFO running on Python 3.8.2
Run started:2021-02-27 12:23:45.044503
Test results:
>> Issue: [B602:subprocess_popen_with_shell_equals_true] subprocess call with shell=True identified, security issue.
Severity: High Confidence: High
Location: /Users/aleksejkuznecov/projects/garpix_packages/eqator/backend/eqator/helpers.py:39
More Info: https://bandit.readthedocs.io/en/latest/plugins/b602_subprocess_popen_with_shell_equals_true.html
38 def shell_run(cmd):
39 ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
40 lines = ps.communicate()[0]
--------------------------------------------------
Code scanned:
Total lines of code: 285
Total lines skipped (#nosec): 0
Run metrics:
Total issues (by severity):
Undefined: 0.0
Low: 1.0
Medium: 0.0
High: 1.0
Total issues (by confidence):
Undefined: 0.0
Low: 0.0
Medium: 0.0
High: 2.0
Files skipped (0):
Result
Problems found: 2
End at: 2021-02-27 12:23:45.098015
Duration: 0:00:04.031263
Configure Lighthouse CI
Edit lighthouserc.json
to set URL and configure assertions.
Reference: https://github.com/GoogleChrome/lighthouse-ci/blob/main/docs/configuration.md
Changelog
See CHANGELOG.md.
Contributing
See CONTRIBUTING.md.
License
Developed by Garpix / https://garpix.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file eqator-2.2.0.tar.gz
.
File metadata
- Download URL: eqator-2.2.0.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24ea2ff019c9e7bde4e01c51adf08feee7241b7bd538329ac7e814f7b7448f66 |
|
MD5 | 2f516828c461b5ae13d8d82506f6b0e6 |
|
BLAKE2b-256 | 4a586056428fe99097c8de9941364608f22c3c79c5733cda1824d8d78fc6051c |
File details
Details for the file eqator-2.2.0-py3-none-any.whl
.
File metadata
- Download URL: eqator-2.2.0-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51bae6b1ed03e37a6a787d72dff4420e80ebd890ada11d4a2cc46dbe22c6f015 |
|
MD5 | c3e5a557ad13a574083bc09d95b6f33e |
|
BLAKE2b-256 | 3b422975da7375e29f96105e6b78bd26a16cffded6250eae790e0d01b844341b |