Goals for next minor release (0.8.9): ------------------------------------- * Check that classes with __slots__ don't get/set any other attributes * Handle sys.exit() as non-returnable condition * Warn about non-escaping backslashes??? * Add warning about redefining a function/method with different signatures Goals for next major release (0.9): ----------------------------------- * Improve handling when importing packages (ie, don't import modules) - Make a base class to handle stack operations - Override base class with classes to handle module scope, functions, etc. - Process module and create Module/Class/Function objects w/o dir(), etc. - Finish tests: 44 * Fix spurious warnings for unreachable code checks * Fix spurious warnings for (x and 'pass' or 'fail') * Fix most of the FIXMEs Longer Term goals: ------------------ * Add check for magic #s/consts (need dict of consts, count, max count, consts to ignore) * Add check for unsupported operand type(s) for * + / etc * Store types of globals, class attributes, function & method return values * Output stats about pychecker's job, good, bad, otherwise... annotate code for problem areas, well checked areas, etc. * Add original line warnings for those that refer to another place (e.g., overridden method doesn't match signature) * Add capability to check features from a specified version of python which is different from runtime interpreter * Security checks for known issues. Adrian Likins @redhat recommends looking at http://www.securesw.com/rats/ * Make check for 'self' a list instead of a string * Check function return values - partially complete * Add check that private functions are used in module/class * Add check for using object members outside of class * Add portability checks for win32/unix * Add check for except: pass * Spell check doc strings # need to read source code for these: * Add check for implicit string concatentation * Add check for creating tuple when don't want a tuple, like: 1, or not creating tuple when want one, like: (1) * Warn when using () with statements (assert, print, del, if, while) * Add check for <>, should use != * Find lines that end w/semi-colons (;)