|
|
|
# tox (https://tox.readthedocs.io/) is a tool for running tests
|
|
|
|
# in multiple virtualenvs. This configuration file will run the
|
|
|
|
# test suite on all supported python versions. To use it, "pip install tox"
|
|
|
|
# and then run "tox" from this directory.
|
|
|
|
|
|
|
|
[tox]
|
|
|
|
envlist = py39
|
|
|
|
|
|
|
|
[flake8]
|
|
|
|
# E501 Line length. Ignored here. But still: please do not abuse the freedom
|
|
|
|
# W291 trailing whitespace
|
|
|
|
ignore = E501,
|
|
|
|
W291
|
|
|
|
|
|
|
|
exclude =
|
|
|
|
.git,
|
|
|
|
vm_images,
|
|
|
|
venv,
|
|
|
|
vagrant_templates,
|
|
|
|
vagrantboxes,
|
|
|
|
.vagrant
|
|
|
|
systems,
|
|
|
|
real_machines_to_build_vagrant_boxes_from,
|
|
|
|
__pycache__,
|
|
|
|
.idea,
|
|
|
|
htmlcov,
|
|
|
|
.tox,
|
|
|
|
|
|
|
|
|
|
|
|
max-complexity = 10
|
|
|
|
|
|
|
|
[testenv]
|
|
|
|
deps = -r requirements.txt
|
|
|
|
flake8
|
|
|
|
safety
|
|
|
|
bandit
|
|
|
|
pylint
|
|
|
|
argcomplete
|
|
|
|
mypy
|
|
|
|
|
|
|
|
|
|
|
|
commands =
|
|
|
|
# python -m unittest discover -s tests
|
|
|
|
coverage run --source=app -m unittest discover -s tests
|
|
|
|
# Gotta ignore some flake8 warnings, because they are maskerading real issues.
|
|
|
|
# Ignoring:
|
|
|
|
# C901 complex code. Reduce complexitiy. But this thing is over-reacting
|
|
|
|
# E501: line too long. Please: Still keep it short. But 80 chars is just incredibly short nowadays
|
|
|
|
# W601: TODO: has_key in config_verifier.py should be replaced by an iterator
|
|
|
|
flake8 --ignore C901,E501,W601
|
|
|
|
# Check if dependencies are vulnerable
|
|
|
|
safety check -r requirements.txt
|
|
|
|
# Check for common vulnerabilities
|
|
|
|
bandit -ll -r app/ plugins/ *.py
|
|
|
|
# pylint check (linter, basic checks only)
|
|
|
|
pylint --rcfile=pylint.rc app/ plugins/base/ caldera_control.py doc_generator.py experiment_control.py machine_control.py metasploit_control.py plugin_manager.py
|
|
|
|
# Own plugin checker
|
|
|
|
python3 ./plugin_manager.py check
|
|
|
|
# mypy checks (type checker)
|
|
|
|
mypy --strict-optional app/ plugins/base/
|