PyChecker

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Mit PyChecker kann man die Syntax von Pythonscripts prüfen. Bei mir läuft das wunderbar mit SuSE Linux 8.1.

Hat jemand das Teil schon mal unter Windows getestet? Ich hätte da gern mal einen Erfahrungsbericht. PyChecker gibts bei http://pychecker.sourceforge.net/. Das Programm kann mit einer wahren Flut von Optionen gestartet werden. Damit kann man sich dann auch ne ganze Menge Ärger sparen.

Code: Alles auswählen

hans@poorbill:~> pychecker -h
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:
  -e, --errors       turn off all warnings which are not likely errors
      --complexity   turn off all warnings which are related to complexity
  -F, --config       specify .pycheckrc file to use

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]
  -A, --callattr     Calling data members as functions [off]
  -y, --classattr    class attribute does not exist [on]
  -S, --self         First argument to methods [self]
  -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]
  -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]

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]

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__',                                                 '__author__', '__email__']]
  -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
  -V, --version      print the version of PyChecker and exit
hans@poorbill:~>
Hans
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

liefert brauchbare ergegnisse. mit der options.py is auch noch alles grafisch... was will man mehr?

thx, für den Hinweis@Hans
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Milan hat geschrieben:......mit der options.py is auch noch alles grafisch...
Habe ich da was übersehen? Kenne ich nicht :cry:

Hast du mit Windows getestet?

Hans
Zuletzt geändert von hans am Dienstag 19. November 2002, 21:18, insgesamt 2-mal geändert.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

zu beidem ja.

auf deinem Link ober steht der Hinweis:
http://pychecker.sourceforge.net/ hat geschrieben:There is a simple GUI which is not maintained much. It is good for showing all the options and also allows you to run pychecker. To run options, you will need to start it manually:


python pychecker/options.py
die Datei startest du, (ist auch Tkinter ausgelegt, falls nicht vorhanden auf andere, soweit ich das kapiert habe, als ich's mir angeschaut habe).
Hier mal nen Screenshot:
Bild

ich weiß, das du auch an ner grafischen oberfläche arbeitest, aber sieht so aus, als hätt sich das erledigt...
Zuletzt geändert von Milan am Dienstag 19. November 2002, 21:38, insgesamt 1-mal geändert.
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Thx

muß ich nacharbeiten. Ich habe von SuSE 8.1 installiert. Bin ja erst dadurch darauf gekommen. Ich mache mal ne Bestandsaufnahme und berichte dann.

Hans
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Des Rätsels Lösung: python-imaging vetrtägt sich nicht mit python-tkinter. Da habe ich dann aufs falsche Pferd gesetzt. :(

Hans
Antworten