| #!/bin/bash |
| |
| # See http://pep8.readthedocs.io/en/release-1.7.x/intro.html#error-codes |
| # These are from the Mininet coding style and modified slightly |
| P8INDENT=E126,E127 # Ignoring overindenting of continuing lines to allow for readability |
| P8IGN=E251,E201,E302,E202,E126,E127,E203,E226,W391 # Turned off on second pass, corrected by unpep8 script |
| EXCLUDE=$P8INDENT,E501,E265 # Always exclude these |
| |
| # help text function |
| help () |
| { |
| echo "Usage: codecheck [FILE]... [OPTION]..." |
| echo "Simple script that runs some python code check tools on a file or folder" |
| echo "Note that for now, options must come after the file/folder path" |
| echo -e "\nOptions include:" |
| echo -e " --fix\tRun the automatic style scripts on a file and save the output to FILE.fixed" |
| echo -e " --reason\tShow a short snippit for each PEP8 violation" |
| echo -e " --relaxed\tIgnore some rules such as line length" |
| echo -e " --help\tDisplays this help text and exits" |
| } |
| |
| |
| if [ -z "$1" ] || [[ "$1" =~ --* ]]; then |
| help |
| elif [ "$2" = "--fix" ]; then |
| file=$1.fixed |
| echo "Fixing PEP8 errors. WARNING: This may be harmful to your code." |
| echo "For safety, the new code is written to $file" |
| autopep8 -a -a $1 --ignore=$EXCLUDE | $(dirname "${BASH_SOURCE}")/unpep8 > $file |
| autopep8 --in-place -a -a $file --ignore=$EXCLUDE,$P8IGN |
| elif [ -z "$2" ] || [ "$2" = "--reason" ] || [ "$2" = "--relaxed" ]; then |
| echo "Running pyflakes..." |
| #Pyflakes is a source checker. It doesn't run the code so it is safer than other programs |
| #ignoring some errors due to TestON |
| pyflakes $1 | grep -v "undefined name 'main'" | grep -v "undefined name 'utilities'" |
| echo "Running pylint..." |
| #Pylint is a static code checker |
| #ignoring some errors due to TestON |
| pylint -E --rcfile=$(dirname "${BASH_SOURCE}")/.pylint $1 | grep -v "Undefined variable 'main'" | grep -v "Undefined variable 'utilities'" |
| |
| echo "Running PEP8..." |
| #PEP8 is a the most common python coding style standard |
| if [ "$2" = "--reason" ]; then |
| pep8 --repeat --show-source --show-pep8 --ignore=$P8IGN $1 |
| elif [ "$2" = "--relaxed" ]; then |
| pep8 --repeat --show-source --ignore=$P8IGN,$EXCLUDE $1 |
| else |
| pep8 --repeat --show-source --ignore=$P8IGN $1 |
| fi |
| else |
| help |
| fi |
| |
| |
| |