Come posso utilizzare la modalità Emacs Flymake per Python con pyflakes e pylint controllando il codice?
Domanda
Per il controllo di codice in modalità python Io uso flymake con pyflakes
Anche io voglio controllare lo stile di codice (PEP8) con pylint (descrizione sulla stessa pagina con pyflakes)
Questa soluzione funziona. Ma non riesco a configurare flymake per il lavoro con pyflakes e pylint insieme. Come posso fare?
Soluzione
Bene, flymake è solo alla ricerca di un comando eseguibile i thats linee di uscita in un formato predefinito. È possibile effettuare uno script di shell per esempio che chiamerà in successione tutte le pedine che si desidera ...
È inoltre necessario assicurarsi che lo script si conclude con il ritorno errorlevel 0. Quindi questo è un esempio:
Questo è quello che ho fatto in uno script "pycheckers":
#!/bin/bash
epylint "$1" 2>/dev/null
pyflakes "$1"
pep8 --ignore=E221,E701,E202 --repeat "$1"
true
Per i Emacs Lisp parte:
(when (load "flymake" t)
(defun flymake-pyflakes-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pycheckers" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pyflakes-init)))
Altri suggerimenti
Di solito si può attivare la modalità flymake in pitone-mode-hook. Purtroppo che causa problemi con le cose come py-execute-tampone che creano buffer temporanei, che invocano il gancio e poi causano flymake modalità a singhiozzo a causa della mancanza di "vero" file. La soluzione è quella di modificare le condizioni in cui si aggiunge il gancio: - per esempio il mio è:
(add-hook 'python-mode-hook
(lambda ()
(unless (eq buffer-file-name nil) (flymake-mode 1)) ;dont invoke flymake on temporary buffers for the interpreter
(local-set-key [f2] 'flymake-goto-prev-error)
(local-set-key [f3] 'flymake-goto-next-error)
))
Si consiglia di controllare lo script Lisp qui ( http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html ), che dovrebbe aiutare con il controllo PEP8 alla pep8.py. Io non uso pyflakes o pylint, ma immagino si poteva regolare facilmente questo per lavorare con altri ispettori.
versione batch di Windows di pychechker
di vaab
@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1