2016-04-26 16 views
8

Ich habeWie Pylint für alle Python-Dateien in einem Verzeichnis

find . -iname "*.py" -exec pylint -E {} ;\ 

und

FILES=$(find . -iname "*.py") 
pylint -E $FILES 

laufen Wenn ich richtig verstehe, der erste Befehl wird Pylint für jede der Python-Dateien ausführen, die der zweite wird pylint einmal für alle Dateien ausführen. Ich erwartete, dass beide Befehle die gleiche Ausgabe zurückgeben würden, aber sie geben unterschiedliche Ergebnisse zurück. Ich denke, dass dieses diff irgendwie mit Importen und F (Ausfall) pylint Nachrichten verbunden ist, die auftreten, wenn ein Import fehlschlägt und nicht ist, der durch pylint -E ausgegeben wird.

Hat jemand das bereits erfahren und könnte erklären, warum das Diff passiert und was ist der beste Weg, um Pylint zu betreiben?

Antwort

15

Mein Cent

find . -iname "*.py" | xargs pylint 

Wie funktioniert es?

find findet alle Dateien mit py endet und übergeben zu xargs, xargs läuft pylint Befehl für jede Datei.

HINWEIS: Sie können auch einen beliebigen Befehl an pylint Befehl geben.

EDIT:

doc Nach wir

[1] Pylint mymodule.py

[2] Pylint Verzeichnis/mymodule.py

[2] arbeiten können, wenn Verzeichnis ist ein Python-Paket (dh hat eine __init__.py Datei oder es ist ein implizites Namespace-Paket) oder wenn "Verzeichnis" im Python-Pfad ist.

+10

das ist schrecklich. gibt es keine pylint-zentrische Lösung? – dopatraman

0

Übergeben Sie einfach den Verzeichnisnamen an den Befehl pylint. Um alle Dateien in ./server zu fusseln:

pylint server