2016-04-26 9 views
8

hoCome eseguire pylint per tutti i file Python in una directory

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

e

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

Se ho capito bene, il primo comando verrà eseguito pylint per ognuno dei file Python, il la seconda eseguirà una volta Pylint per tutti i file. Mi aspettavo che entrambi i comandi restituissero lo stesso risultato, ma restituiscono risultati diversi. Penso che questo diff sia in qualche modo correlato alle importazioni e ai messaggi di pylint di F (fallimento), che si verificano quando un'importazione fallisce ed è non prodotto da pylint -E.

Qualcuno ha già sperimentato questo e potrebbe spiegare perché si verifica il diff e qual è il modo migliore per eseguire il pilore?

risposta

15

mio un centesimo

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

Come funziona?

find trova tutti i file termina con py e passare ad xargs, xargs corre pylint comando su ogni file.

NOTA: è possibile fornire qualsiasi argomento al comando pylint.

EDIT:

Secondo doc possiamo usare

[1] pylint mymodule.py

[2] Directory pylint/mymodule.py

[2] funziona se directory è un pacchetto python (cioè ha un file __init__.py o è un pacchetto di spazio dei nomi implicito) o se "directory" è nel percorso python.

+10

questo è terribile. non esiste una soluzione pylint-centric? – dopatraman

0

Basta passare il nome della directory al comando pylint. Per filtrare tutti i file in ./server:

pylint server 
Problemi correlati