Adding pre-commit

Introduced changes:
- pre-commit config and rules
- Add pre-commit to pep8 gate, Flake8 is covered in the pre-commit hooks.
- Applying fixes for pre-commit compliance in all code.

Also commit hash will be used instead of version tags in pre-commit to
prevend arbitrary code from running in developer's machines.

pre-commit will be used to:
- trailing whitespace;
- Replaces or checks mixed line ending (mixed-line-ending);
- Forbid files which have a UTF-8 byte-order marker (check-byte-order-marker);
- Checks that non-binary executables have a proper
  shebang (check-executables-have-shebangs);
- Check for files that contain merge conflict strings (check-merge-conflict);
- Check for debugger imports and py37+ breakpoint()
  calls in python source (debug-statements);
- Attempts to load all yaml files to verify syntax (check-yaml);
- Run flake8 checks (flake8) (local)

For further details about tests please refer to:
https://github.com/pre-commit/pre-commit-hooks

Change-Id: I7ac1599e903577e28fb64bb07a6b984e1ff8a023
Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
This commit is contained in:
Hervé Beraud 2020-07-21 13:42:48 +02:00
parent 86d1aa8378
commit fbe3f2fe7c
5 changed files with 43 additions and 4 deletions

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

@ -0,0 +1,35 @@
# We from the Oslo project decided to pin repos based on the
# commit hash instead of the version tag to prevend arbitrary
# code from running in developer's machines. To update to a
# newer version, run `pre-commit autoupdate` and then replace
# the newer versions with their commit hash.
default_language_version:
python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: ebc15addedad713c86ef18ae9632c88e187dd0af # v3.1.0
hooks:
- id: trailing-whitespace
# Replaces or checks mixed line ending
- id: mixed-line-ending
args: ['--fix', 'lf']
exclude: '.*\.(svg)$'
# Forbid files which have a UTF-8 byte-order marker
- id: check-byte-order-marker
# Checks that non-binary executables have a proper shebang
- id: check-executables-have-shebangs
# Check for files that contain merge conflict strings.
- id: check-merge-conflict
# Check for debugger imports and py37+ breakpoint()
# calls in python source
- id: debug-statements
- id: check-yaml
files: .*\.(yaml|yml)$
- repo: https://gitlab.com/pycqa/flake8
rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3
hooks:
- id: flake8
additional_dependencies:
- hacking>=3.0.1,<3.1.0

View File

@ -1,3 +1,5 @@
# Copyright (C) 2020 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at

View File

@ -4,17 +4,17 @@
<xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0"
xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:sm="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- template match equals any other url element, keep --> <!-- template match equals any other url element, keep -->
<xsl:template match="node() | @*"> <xsl:template match="node() | @*">
<xsl:copy> <xsl:copy>
<xsl:apply-templates select="node() | @*"/> <xsl:apply-templates select="node() | @*"/>
</xsl:copy> </xsl:copy>
</xsl:template> </xsl:template>
<!-- discard any url/loc that refer to trunk or folsom --> <!-- discard any url/loc that refer to trunk or folsom -->
<xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/trunk')]"/> <xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/trunk')]"/>
<xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/draft')]"/> <xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/draft')]"/>
<xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/folsom')]"/> <xsl:template match="sm:url[starts-with(./sm:loc,'http://docs.openstack.org/folsom')]"/>
</xsl:stylesheet> </xsl:stylesheet>

View File

@ -13,3 +13,5 @@ pylint==1.7.1 # GPLv2
reno>=3.1.0 # Apache-2.0 reno>=3.1.0 # Apache-2.0
openstackdocstheme>=2.2.1 # Apache-2.0 openstackdocstheme>=2.2.1 # Apache-2.0
stestr>=2.0.0 # Apache-2.0 stestr>=2.0.0 # Apache-2.0
pre-commit>=2.6.0 # MIT

View File

@ -21,7 +21,7 @@ commands = stestr run --slowest {posargs}
[testenv:pep8] [testenv:pep8]
commands = commands =
flake8 pre-commit run -a
# Run doc8 to check .rst and .txt files. # Run doc8 to check .rst and .txt files.
# HACKING.rst is the only file that is not referenced from # HACKING.rst is the only file that is not referenced from
# doc/source, so add it explicitly. # doc/source, so add it explicitly.