Add pre-commit

This is helpful to automate code style checks at runtime. Some of these
are currently disabled since fixing them requires some work. Those fixes
will come separately.

Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Change-Id: I0eb7bdfe527722b012981a1d6bd15580b6adfe6e
This commit is contained in:
Stephen Finucane 2024-07-30 13:58:24 +01:00
parent 86d3a50926
commit f0a6443883
2 changed files with 67 additions and 7 deletions

53
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,53 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
args: ['--fix', 'lf']
exclude: '.*\.(svg)$'
- id: check-byte-order-marker
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: debug-statements
- id: check-yaml
files: .*\.(yaml|yml)$
exclude: '^zuul.d/.*$'
# - repo: https://github.com/astral-sh/ruff-pre-commit
# rev: v0.5.5
# hooks:
# - id: ruff
# args: ['--fix', '--unsafe-fixes']
# - id: ruff-format
- repo: https://github.com/PyCQA/bandit
rev: 1.7.9
hooks:
- id: bandit
# We ignore the following:
# B110: except: pass
# B410: importing etree
args: ['-x', 'tests', '-s', 'B110,B410']
- repo: https://opendev.org/openstack/hacking
rev: 6.1.0
hooks:
- id: hacking
additional_dependencies:
- flake8-import-order~=0.18.2
exclude: '^(doc|releasenotes|tools)/.*$'
# - repo: https://github.com/pre-commit/mirrors-mypy
# rev: v1.10.1
# hooks:
# - id: mypy
# additional_dependencies:
# - types-decorator
# - types-PyYAML
# - types-requests
# - types-simplejson
# # keep this in-sync with '[mypy] exclude' in 'setup.cfg'
# exclude: |
# (?x)(
# doc/.*
# | examples/.*
# | releasenotes/.*
# )

21
tox.ini
View File

@ -17,17 +17,24 @@ commands =
stestr run {posargs}
[testenv:pep8]
description =
Run style checks.
skip_install = true
deps =
pre-commit
commands =
flake8
# Run security linter
# B110: except: pass
# B410: importing etree
bandit -r keystoneauth1 -x tests -s B110,B410
pre-commit run --all-files --show-diff-on-failure
[testenv:bandit]
# NOTE(browne): This is required for the integration test job of the bandit
# project. Please do not remove.
commands = bandit -r keystoneauth1 -x tests -s B110,B410
[testenv:bandit]
description =
Run bandit security checks.
skip_install = true
deps =
pre-commit
commands =
pre-commit run --all-files --show-diff-on-failure bandit
[testenv:venv]
commands = {posargs}