blob: 1193df8c3e4c150277ed42366c85200b4143f252 [file] [log] [blame]
Jon Halle1b478d2015-01-12 11:31:56 -08001#!/bin/bash
2
3#These are from the Mininet coding style
4P8IGN=E251,E201,E302,E202,E126,E127,E203,E226,W391
5
6# help text function
7help ()
8{
9 echo "Usage: codecheck [FILE]... [OPTION]..."
10 echo "Simple script that runs some python code check tools on a file or folder"
11 echo "Note that for now, options must come after the file/folder path"
12 echo -e "\nOptions include:"
13 echo -e " --fix\tRun the automatic style scripts on a file and save the output to FILE.fixed"
14 echo -e " --reason\tShow a short snippit for each PEP8 violation"
15 echo -e " --help\tDisplays this help text and exits"
16}
17
18
19if [ -z "$1" ] || [[ "$1" =~ --* ]]; then
20 help
21elif [ "$2" = "--fix" ]; then
22 file=$1.fixed
23 echo "Fixing PEP8 errors. WARNING: This may be harmful to your code."
24 echo "For safety, the new code is written to $file"
25 #autopep8 -a -a $1
26 autopep8 -a -a $1 --ignore=E501 | $(dirname "${BASH_SOURCE}")/unpep8 > $file
27 autopep8 --in-place -a -a $file --ignore=$P8IGN
28elif [ -z "$2" ] || [ "$2" = "--reason" ]; then
29 echo "Running pyflakes..."
30 #Pyflakes is a source checker. It doesn't run the code so it is safer than other programs
31 #ignoring some errors due to TestON
32 pyflakes $1 | grep -v "undefined name 'main'" | grep -v "undefined name 'utilities'"
33 echo "Running pylint..."
34 #Pylint is a static code checker
35 #ignoring some errors due to TestON
36 pylint -E --rcfile=$(dirname "${BASH_SOURCE}")/.pylint $1 | grep -v "Undefined variable 'main'" | grep -v "Undefined variable 'utilities'"
37
38 echo "Running PEP8..."
39 #PEP8 is a the most common python coding style standard
40 if [ -z "$2"]; then
41 pep8 --repeat --show-source --ignore=$P8IGN $1
42 else
43 pep8 --repeat --show-source --show-pep8 --ignore=$P8IGN $1
44 fi
45else
46 help
47fi
48
49
50