pydiatra
pydiatra copied to clipboard
yet another static checker for Python code
Overview
pydiatra is yet another static checker for Python code.
Implemented checks
-
embedded code copies
-
exceptshadowing builtins (e.g.except IOError, OSError:, which overwritesOSError) -
bare
except(i.e.except:) -
hardcoded errno values (e.g.
exc.errno == 2instead ofexc.errno == errno.ENOENT) -
inconsistent use of tabs and spaces in indentation
-
mkstemp()file descriptor leaks (e.g.path = tempfile.mkstemp()[1]) -
obsolete PIL imports (e.g.
import Imageinstead offrom PIL import Image) -
regular expression syntax errors
-
misplaced flags arguments in
re.split(),re.sub(),re.subn() -
dubious or deprecated constructs in regular expressions:
-
duplicate range (e.g.
re.compile("[aa]")) -
overlapping ranges (e.g.
re.compile("[a-zA-z]")) -
bad escape sequences (e.g.
re.compile(r"\eggs")) -
misplaced inline flags (e.g.
re.compile("eggs(?i)"); Python 3.6+ only) -
combining incompatible flags
-
redundant flags
-
-
string exceptions (e.g.
raise "eggs"orexcept "ham":) -
string formatting errors
-
comparisons with
sys.versionorsys.hexversion -
Python syntax errors
-
Python syntax warnings
-
assertions that are always true
-
syntactic constructs that are no longer supported in Python 3
-
ill-formed assignments to global variables
-
use of
asyncandawaitas names -
invalid escape sequences in strings (Python 3.6+ only)
-
See the manual page for details.
Prerequisites
- Python 2.7 or 3.2+
- futures_ (needed only for Python 2.X)
.. _futures: https://pypi.org/project/futures/
.. vim:ft=rst ts=3 sts=3 sw=3 et tw=72