summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchecks.sh53
-rw-r--r--pylintrc42
2 files changed, 95 insertions, 0 deletions
diff --git a/checks.sh b/checks.sh
new file mode 100755
index 00000000..f54cad36
--- /dev/null
+++ b/checks.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+set -u
+
+function find_src {
+ files=`find bin cloudinit -type f | grep "py\$"`
+ echo $files
+}
+
+function run_pep8 {
+ echo "Running pep8 ..."
+ files=$(find_src)
+ ignores="E202,E501"
+ output_filename="pep8.log"
+ opts="--ignore=$ignores --repeat"
+ pep8 ${opts} ${files} 2>&1 > $output_filename
+ if [ "$?" -ne "0" ]; then
+ echo "Some badness was found!"
+ fi
+ echo "Check '$output_filename' for a full report."
+}
+
+function run_pylint {
+ echo "Running pylint ..."
+ opts="--rcfile=pylintrc --output-format=parseable"
+ files=$(find_src)
+ output_filename="pylint.log"
+ pylint ${opts} ${files} 2>&1 > $output_filename
+ if [ "$?" -eq "1" ]; then
+ # pylint --long-help
+ # * 0 if everything went fine
+ # * 1 if a fatal message was issued
+ # * 2 if an error message was issued
+ # * 4 if a warning message was issued
+ # * 8 if a refactor message was issued
+ # * 16 if a convention message was issued
+ # * 32 on usage error
+ echo "A fatal pylint error occurred!"
+ else
+ if [ "$?" -eq "0" ]; then
+ echo "Your code is perfect you code master!"
+ else
+ echo "You are not yet a code master."
+ grep -i "Your code" $output_filename
+ fi
+ fi
+ echo "Check '$output_filename' for a full report."
+}
+
+
+run_pep8
+run_pylint
+
diff --git a/pylintrc b/pylintrc
new file mode 100644
index 00000000..a7447a19
--- /dev/null
+++ b/pylintrc
@@ -0,0 +1,42 @@
+# The format of this file isn't really documented; just use --generate-rcfile
+
+[Master]
+
+[Messages Control]
+
+# http://pylint-messages.wikidot.com/all-codes
+# NOTE(justinsb): We might want to have a 2nd strict pylintrc in future
+# C0111: Don't require docstrings on every method
+# R0912: Too many branches (huh)
+# R0914: Too many local variables is odd.
+# W0142: *args and **kwargs are fine.
+# W0511: TODOs in code comments are fine.
+# W0613: Unused argument '??' should be ok (they are useful sometimes to know intention of variable)
+# W0622: Redefining id is fine.
+disable=C0111,W0142,W0622,C0301,R0902,R0201,R0914,W0613,R0912,R0801
+
+[Basic]
+
+# Variable names can be 1 to 31 characters long, with lowercase and underscores
+variable-rgx=[a-z_][a-z0-9_]{0,30}$
+
+# Argument names can be 2 to 31 characters long, with lowercase and underscores
+argument-rgx=[a-z_][a-z0-9_]{1,30}$
+
+# Method names should be at least 3 characters long
+# and be lowercased with underscores
+method-rgx=([a-z_][a-z0-9_]{2,50}|setUp|tearDown)$
+
+# Don't require docstrings on tests.
+no-docstring-rgx=((__.*__)|([tT]est.*)|setUp|tearDown)$
+
+[Design]
+
+max-public-methods=100
+min-public-methods=0
+max-args=6
+
+[Variables]
+
+# List of additional names supposed to be defined in builtins. Remember that
+# you should avoid to define new builtins when possible.