Add pre-commit configuration

'pre-commit' tool [1] provides an extensible way to configure hooks
which can be run automatically before each commit. That way we can make
sure that code send to review is passing base static analysis checks
like e.g. bandit, flake8 or hacking.

For now this is optional to use and not integrated in e.g. tox.ini file
but we can integrate it there too as next step.

[1] https://pre-commit.com/

Change-Id: I39a5302ac076b0b8720e631891b20fcbff56f6df
This commit is contained in:
Slawek Kaplonski 2024-04-29 14:41:41 +02:00
parent e37847c2ff
commit 62d10d9199

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

@ -0,0 +1,47 @@
---
default_language_version:
# force all unspecified python hooks to run python3
python: python3.10
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.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-json
files: .*\.json$
- id: check-yaml
files: .*\.(yaml|yml)$
exclude: '^(rally-jobs)/.*$'
- repo: https://github.com/Lucas-C/pre-commit-hooks
rev: v1.5.4
hooks:
- id: remove-tabs
exclude: '.*\.(svg)$'
- repo: local
hooks:
- id: flake8
name: flake8
additional_dependencies:
- hacking>=4.0.0,<4.1
- flake8-import-order==0.18.1
- isort==4.3.21
language: python
entry: flake8
files: '^.*\.py$'
exclude: '^(doc|releasenotes|tools)/.*$'
# todo(slaweq): enable pylint check once all issues in the current code will
# be solved
# - id: pylint
# name: pylint
# entry: pylint
# files: ^neutron_vpnaas/
# language: system
# types: [python]
# args: ['--rcfile=.pylintrc', '--output-format=colorized']