SYNOPSIS

pychecker [options] files...

DESCRIPTION

This manual page documents briefly the pychecker command. It was written for the Debian GNU/Linux distribution because the original program does not have a manual page.

pychecker is a program that finds common bugs in python source code. It finds problems that are typically caught by a compiler for less dynamic languages, like C and C++. 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.

CHOICE OF PYTHON VERSION

By default, the /usr/bin/pychecker script executes pychecker using the default Python interpreter in /usr/bin/python. Some users may want to run pychecker with a different Python interpreter. To accommodate this, the /usr/bin/pychecker script supports the use of $PYTHONVER on the command-line, i.e.

PYTHONVER=2.3 pychecker file.py

If $PYTHONVER is set, /usr/bin/pychecker will attempt to execute pychecker using /usr/bin/python$PYTHONVER instead of /usr/bin/python.

Note, however, that this will only work for versions of the python interpreter supported by the current Debian Python infrastructure, not for any arbitrary Python interpreter installed in /usr/bin.

OPTIONS

Long options can be preceded with no- to turn off (e.g., no-namedargs). Default settings are indicated by [brackets]

Major Options:

--only

only warn about files passed on the command line [off]

-e, --level

the maximum error level of warnings to be displayed

-#, --limit

the maximum number of warnings to be displayed [10]

-F, --config

specify .pycheckrc file to use

--quixote

support Quixote's PTL modules

--evil

list of evil C extensions that crash the interpreter [[]]

Error Control:

-i, --import

unused imports [on]

-k, --pkgimport

unused imports from __init__.py [on] -M, --reimportself module imports itself [on]

-X, --reimport

reimporting a module [on]

-x, --miximport

module does import and from ... import [on]

-l, --local

unused local variables, except tuples [on]

-t, --tuple

all unused local variables, including tuples [off]

-9, --members

all unused class data members [off]

-v, --var

all unused module variables [off]

-p, --privatevar

unused private module variables [on]

-g, --allglobals

report each occurrence of global warnings [off]

-n, --namedargs

functions called with named arguments (like keywords) [off]

-a, --initattr

Attributes (members) must be defined in __init__() [off] -I, --initsubclass Subclass.__init__() not defined [off]

-u, --callinit

Baseclass.__init__() not called [on]

-0, --abstract

Subclass needs to override methods that only throw exceptions [on]

-N, --initreturn

Return None from __init__() [on]

-8, --unreachable

unreachable code [off]

-2, --constCond

a constant is used in a conditional statement [on]

-1, --constant1

1 is used in a conditional statement (if 1: or while 1:) [off]

--stringiter

check if iterating over a string [on]

--stringfind

check improper use of string.find() [on]

-A, --callattr

Calling data members as functions [off]

-y, --classattr

class attribute does not exist [on]

-S, --self

First argument to methods [self] --classmethodargs First argument to classmethods [['cls', 'klass']]

-T, --argsused

unused method/function arguments [on]

-z, --varargsused

unused method/function variable arguments [on]

-G, --selfused

ignore if self is unused in methods [off]

-o, --override

check if overridden methods have the same signature [on]

--special

check if __special__ methods exist and have the correct signature [on]

-U, --reuseattr

check if function/class/method names are reused [on]

-Y, --positive

check if using unary positive (+) which is usually meaningless [on]

-j, --moddefvalue

check if modify (call method) on a parameter that has a default value [on]

--changetypes

check if variables are set to different types [off]

--unpack

check if unpacking a non-sequence [on]

--unpacklen

check if unpacking sequence with the wrong length [on]

--badexcept

check if raising or catching bad exceptions [on]

-4, --noeffect

check if statement appears to have no effect [on]

--modulo1

check if using (expr % 1), it has no effect on integers and strings [on]

--isliteral

check if using (expr is const-literal), doesn't always work on integers and strings [on]

Possible Errors:

-r, --returnvalues check consistent return values [on] -C, --implicitreturns check if using implict and explicit return values [on]

-O, --objattrs

check that attributes of objects exist [on]

-7, --slots

various warnings about incorrect usage of __slots__ [on]

-3, --properties

using properties with classic classes [on]

--emptyslots

check if __slots__ is empty [on]

-D, --intdivide

check if using integer division [on]

-w, --shadow

check if local variable shadows a global [on] -s, --shadowbuiltin check if a variable shadows a builtin [on]

Security:

--input

check if input() is used [on]

-6, --exec

check if the exec statement is used [off]

Suppressions:

-q, --stdlib

ignore warnings from files under standard library [off]

-b, --blacklist

ignore warnings from the list of modules [['Tkinter', 'wxPython', 'gtk', 'GTK', 'GDK']]

-Z, --varlist

ignore global variables not used if name is one of these values [['__version__', '__warningregistry__', '__all__', '__credits__', '__test__', '__author__', '__email__', '__revision__', '__id__', '__copyright__', '__license__', '__date__']]

-E, --unusednames

ignore unused locals/arguments if name is one of these values [['_', 'empty', 'unused', 'dummy']]

--deprecated

ignore use of deprecated modules/functions [on]

Complexity:

-L, --maxlines

maximum lines in a function [200]

-B, --maxbranches

maximum branches in a function [50]

-R, --maxreturns

maximum returns in a function [10]

-J, --maxargs

maximum # of arguments to a function [10]

-K, --maxlocals

maximum # of locals in a function [40]

-5, --maxrefs

maximum # of identifier references (Law of Demeter) [5]

-m, --moduledoc

no module doc strings [off]

-c, --classdoc

no class doc strings [off]

-f, --funcdoc

no function/method doc strings [off]

Debug:

--rcfile

print a .pycheckrc file generated from command line args

-P, --printparse

print internal checker parse structures [off]

-d, --debug

turn on debugging for checker [off]

-Q, --quiet

turn off all output except warnings [off]

-V, --version

print the version of PyChecker and exit

AUTHOR

Pychecker was written by Neal Norwitz and Eric C. Newton. Other contributors are listed in /usr/share/doc/pychecker/MAINTAINERS

This manual page was written by Fredrik Steen <[email protected]> for the Debian GNU/Linux system (but may be used by others). It has been subsequently modified by Kenneth J. Pronovici <[email protected]>.

RELATED TO pychecker…

python(1)

Running pychecker --help may provide more complete documentation of program options. The pychecker web page at <http://pychecker.sourceforge.net> contains some guidance on using the program.