TestEngineering/Web/Automation/Flake8 Pre Commit Hook: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Created page with "= Introduction = The style guide specifies that all Python code adheres to [http://www.python.org/dev/peps/pep-0008/ PE...")
 
 
(2 intermediate revisions by one other user not shown)
Line 18: Line 18:


     flake8 --install-hook
     flake8 --install-hook
== Git Template ==
You can add this hook to the git template, which means it will be active for all freshly initialised git repositories (unless they already contain a pre-commit hook):
    cd ~/workspace/mygitrepo
    git config --global init.templatedir ~/.git_template
    mkdir ~/.git_template/hooks
    cp .git/hooks/pre-commit ~/.git_template/hooks/


= Usage =
= Usage =
Line 34: Line 42:


Note that by default the warnings are displayed but the commit is still allowed.
Note that by default the warnings are displayed but the commit is still allowed.
== Running the Hook ==
To run the hook directly instead of attempting a commit:
    ./.git/hooks/pre-commit


== Preventing Commits ==
== Preventing Commits ==
Line 39: Line 52:


     export FLAKE8_STRICT=true
     export FLAKE8_STRICT=true
You may want to add this to your default profile.


== Ignoring Warnings ==
== Ignoring Warnings ==
To ignore certain warnings:
To ignore certain warnings:


     export FLAKE8_IGNORE=E501,E128
     export FLAKE8_IGNORE=E501
 
You may want to add this to your default profile.

Latest revision as of 20:23, 26 August 2016

Introduction

The style guide specifies that all Python code adheres to PEP8. To prevent committing code that does not pass PEP8, follow these steps to installing a pre-commit to run staged files using the flake8 checker. For further assistance on this pre-commit hook please refer the the official documentation.

Installation

Install flake8 into your global site packages:

    sudo pip install pep8

Change directory to your git repository:

   cd ~/workspace/mygitrepo

Remove any existing pre-commit hooks:

   rm .git/hooks/pre-commit

Install the pre-commit hook:

   flake8 --install-hook

Git Template

You can add this hook to the git template, which means it will be active for all freshly initialised git repositories (unless they already contain a pre-commit hook):

   cd ~/workspace/mygitrepo
   git config --global init.templatedir ~/.git_template
   mkdir ~/.git_template/hooks
   cp .git/hooks/pre-commit ~/.git_template/hooks/

Usage

Once installed, the pre-commit hook will be run whenever you attempt to commit changes to your local repository. Here's an example of it in action:

   git checkout -b TestFlake8
   echo "import os; # comment" > flake8-warnings.py
   git add flake8-warnings.py
   git commit -m 'my commit'
   .../flake8-warnings.py:1:1: F401 'os' imported but unused
   .../flake8-warnings.py:1:10: E703 statement ends with a semicolon
   .../flake8-warnings.py:1:11: E261 at least two spaces before inline comment
   [TestFlake8 ...] my commit
    1 file changed, 1 insertion(+)
    create mode 100644 flake8-warnings.py

Note that by default the warnings are displayed but the commit is still allowed.

Running the Hook

To run the hook directly instead of attempting a commit:

   ./.git/hooks/pre-commit

Preventing Commits

To abort a commit if errors are found:

   export FLAKE8_STRICT=true

You may want to add this to your default profile.

Ignoring Warnings

To ignore certain warnings:

   export FLAKE8_IGNORE=E501

You may want to add this to your default profile.