pychecker

提供: Python入門
移動: 案内検索
スポンサーリンク

pychecker とは、Python用のソースコードチェッカーです。

読み方

pychecker
ぱい ちぇっかー

概要

pycheckerは、Pythonのソースコードのバグを発見するためのツールです。 タイプミスや未初期化の変数の利用などが発見できます。

インストール

FreeBSD

cd /usr/ports/devel/pychecker
sudo make install

Ubuntu

sudo apt-get install pychecker

コマンドラインオプション

Usage for: checker.py [options] PACKAGE ...
 
    PACKAGEs can be a python package, module or filename
 
Long options can be preceded with no- to turn off (e.g., no-namedargs)
 
Category
  Options:           Change warning for ... [default value]
 
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 [[]]
      --keepgoing    ignore import errors [off]
 
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]
      --constattr    check if a constant string is passed to getattr()/setattr() [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']]
      --missingattrs ignore missing class attributes if name is one of these
      values
			 [[]]
      --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]
      --findevil     print each class object to find one that crashes [off]
  -Q, --quiet        turn off all output except warnings [off]
  -V, --version      print the version of PyChecker and exit

実行例

% pychecker foo.py
Processing module foo (foo.py)...
  Caught exception importing module foo:
    File "/usr/local/lib/python2.7/site-packages/pychecker/pcmodules.py", line 540, in setupMainCode()
      module = imp.load_module(self.moduleName, handle, filename, smt)
    File "foo.py", line 4, in <module>()
      a[30]
  IndexError: string index out of range
 
Warnings...
 
foo:1: NOT PROCESSED UNABLE TO IMPORT

関連項目

  • pychecker


スポンサーリンク