PyChecker is a tool for finding bugs in python source code. PyChecker program finds problems that are typically caught by a compiler for less dynamic languages, like C and C . It is similar to lint. Because of the dynamic nature of python, some warnings may be incorrect; however, spurious warnings should be fairly infrequent.
PyChecker works in a combination of ways. First, it imports each module. If there is an import error, the module cannot be processed. The import provides some basic information about the module. The code for each function, class, and method is checked for possible problems.
Types of problems that can be found include:
· No global found (e.g., using a module without importing it)
· Passing the wrong number of parameters to functions/methods/constructors
· Passing the wrong number of parameters to builtin functions & methods
· Using format strings that don't match arguments
· Using class methods and attributes that don't exist
· Changing signature when overriding a method
· Redefining a function/class/method in the same scope
· Using a variable before setting it
· self is not the first parameter defined for a method
· Unused globals and locals (module or variable)
· Unused function/method arguments (can ignore self)
· No doc strings in modules, classes, functions, and methods
What's New in This Release:
· Fixed SF Bug [ 1827412 ] pychecker.bat only handles 9 cmdline args
· Fix warning about comparison checking with bool false alert for 'in' and 'not in'
· Add warning for using __set__, __get__, and __delete__ in an old-style class
· Fix spurious warning about __set__, __get__, and __delete__ not being special methods.
· Fix inability to disable Warning about constant setattr()/getattr()
· Fix spurious warning on min/max not accepting kwarg of key in Python 2.5
· Add some __special__ pickling methods that were missing
· Add --missingattrs option to ignore some (but not all) attribute names
· Fix crash when using keyword arguments with builtin methods
· Add --keepgoing option to ignore import errors
· Add --findevil option to make it easier to find objects that crash the interpreter
· Add support for Python 2.5