Skip to content

jwilk/pydiatra

Repository files navigation

Overview

pydiatra is yet another static checker for Python code.

Implemented checks

  • embedded code copies
  • except shadowing builtins (e.g. except IOError, OSError:, which overwrites OSError)
  • bare except (i.e. except:)
  • hardcoded errno values (e.g. exc.errno == 2 instead of exc.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 Image instead of from 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" or except "ham":)
  • string formatting errors
  • comparisons with sys.version or sys.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 async and await as 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)

About

yet another static checker for Python code

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published