Frage

Ich möchte ein Feedback zu diesen Tools erhalten auf:

  • Funktionen;
  • Anpassungsfähigkeit;
  • Benutzerfreundlichkeit und Lernkurve.
War es hilfreich?

Lösung

Nun, ich bin ein bisschen neugierig, so dass ich getestet nur die drei ich direkt nach dem die Frage zu stellen; -)

Ok, das ist nicht eine sehr ernste Kritik aber hier ist das, was ich sagen kann:

Ich habe versucht, die Werkzeuge mit den Standardeinstellungen (es ist wichtig, weil man so ziemlich Ihre Prüfregeln wählen) auf das folgende Skript:

#!/usr/local/bin/python
# by Daniel Rosengren modified by e-satis

import sys, time
stdout = sys.stdout

BAILOUT = 16
MAX_ITERATIONS = 1000

class Iterator(object) :

    def __init__(self):

        print 'Rendering...'
        for y in xrange(-39, 39): 
            stdout.write('\n')
            for x in xrange(-39, 39):
                if self.mandelbrot(x/40.0, y/40.0) :
                    stdout.write(' ')
                else:
                    stdout.write('*')


    def mandelbrot(self, x, y):
        cr = y - 0.5
        ci = x
        zi = 0.0
        zr = 0.0

        for i in xrange(MAX_ITERATIONS) :
            temp = zr * zi
            zr2 = zr * zr
            zi2 = zi * zi
            zr = zr2 - zi2 + cr
            zi = temp + temp + ci

            if zi2 + zr2 > BAILOUT:
                return i

        return 0

t = time.time()
Iterator() 
print '\nPython Elapsed %.02f' % (time.time() - t)

Als Ergebnis:

  • PyChecker mühsam ist, weil es das Modul, um es zu analysieren, kompiliert. Wenn Sie nicht Ihr Code ausgeführt werden sollen (zum Beispiel, es führt eine SQL-Abfrage), das ist schlecht.
  • PyFlakes soll lite sein. Tatsächlich entschied es, dass der Code perfekt war. Ich suche nach etwas ziemlich streng, damit ich glaube nicht, werde ich für ihn gehen.
  • PyLint hat sehr gesprächig gewesen und bewertet den Code 10.03 (OMG, ich bin ein schmutziger Coder!).

Strongs Punkte PyLint:

  • Sehr anschaulich und genauer Bericht.
  • Detect einige Code riecht. Hier erzählte er mir meine Klasse fallen etwas mit Funktionen zu schreiben, weil der OO Ansatz nutzlos in diesem speziellen Fall war. Etwas wusste ich, aber nie erwartet, einen Computer, mir zu sagen :-p
  • Die vollständig korrigierten Code schneller laufen gelassen (keine Klasse, kein Referenzbindung ...).
  • Hergestellt von einem Französisch-Team. Ok, es ist nicht ein Plus für alle, aber Ich mag es; -)

Nachteile von PyLint:

  • sind einige Regeln sehr streng. Ich weiß, dass Sie es, und dass die Standard ändern kann, ist PEP8 zu passen, aber ist es ein solches Verbrechen ‚in f für x‘ zu schreiben? ja offenbar, weil man kann nicht einen Variablennamen mit weniger als 3 Buchstaben schreiben. Ich will das ändern.
  • Sehr sehr gesprächig. Seien Sie bereit, Ihre Augen verwenden.

Korrigierte Skript (mit faul doc Strings und Variablennamen):

#!/usr/local/bin/python
# by Daniel Rosengren, modified by e-satis
"""
Module doctring
"""


import time
from sys import stdout

BAILOUT = 16
MAX_ITERATIONS = 1000

def mandelbrot(dim_1, dim_2):
    """
    function doc string
    """
    cr1 = dim_1 - 0.5
    ci1 = dim_2
    zi1 = 0.0
    zr1 = 0.0

    for i in xrange(MAX_ITERATIONS) :
        temp = zr1 * zi1
        zr2 = zr1 * zr1
        zi2 = zi1 * zi1
        zr1 = zr2 - zi2 + cr1
        zi1 = temp + temp + ci1

        if zi2 + zr2 > BAILOUT:
            return i

    return 0

def execute() :
    """
    func doc string
    """
    print 'Rendering...'
    for dim_1 in xrange(-39, 39): 
        stdout.write('\n')
        for dim_2 in xrange(-39, 39):
            if mandelbrot(dim_1/40.0, dim_2/40.0) :
                stdout.write(' ')
            else:
                stdout.write('*')


START_TIME = time.time()
execute()
print '\nPython Elapsed %.02f' % (time.time() - START_TIME)

EDIT:

Dank Rudiger Wolf entdeckte ich pep8, die genau das tut, was der Name schon sagt: passende PEP8. Es hat mehrere Syntax No-nos festgestellt, dass PyLint nicht. Aber PyLint Sachen gefunden, die nicht speziell auf PEP8 verbunden war, aber interessant. Beide Werkzeuge sind interessant und komplementär.

Schließlich benutze ich beide da es wirklich einfach zu installieren (über Pakete oder Setuptools) und der Ausgabetext ist so einfach zu Kette.

Um Ihnen ein wenig Vorstellung von ihrer Ausgabe:

PEP8 :

./python_mandelbrot.py:4:11: E401 multiple imports on one line
./python_mandelbrot.py:10:1: E302 expected 2 blank lines, found 1
./python_mandelbrot.py:10:23: E203 whitespace before ':'
./python_mandelbrot.py:15:80: E501 line too long (108 characters)
./python_mandelbrot.py:23:1: W291 trailing whitespace
./python_mandelbrot.py:41:5: E301 expected 1 blank line, found 3

PyLint :

************* Module python_mandelbrot
C: 15: Line too long (108/80)
C: 61: Line too long (85/80)
C:  1: Missing docstring
C:  5: Invalid name "stdout" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
C: 10:Iterator: Missing docstring
C: 15:Iterator.__init__: Invalid name "y" (should match [a-z_][a-z0-9_]{2,30}$)
C: 17:Iterator.__init__: Invalid name "x" (should match [a-z_][a-z0-9_]{2,30}$)

[...] and a very long report with useful stats like :

Duplication
-----------

+-------------------------+------+---------+-----------+
|                         |now   |previous |difference |
+=========================+======+=========+===========+
|nb duplicated lines      |0     |0        |=          |
+-------------------------+------+---------+-----------+
|percent duplicated lines |0.000 |0.000    |=          |
+-------------------------+------+---------+-----------+

Andere Tipps

PEP8 wurde vor kurzem hinzugefügt PyPI.

  • PEP8 - Python Style Guide Checker
  • PEP8 ist ein Werkzeug, um Ihre Python-Code gegen einige der Stilkonventionen in PEP 8.
  • prüfen

Es ist jetzt super einfach Ihren Code gegen PEP8 zu überprüfen.

Siehe http://pypi.python.org/pypi/pep8

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top