Come posso utilizzare la modalità Emacs Flymake per Python con pyflakes e pylint controllando il codice?

StackOverflow https://stackoverflow.com/questions/1259873

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?

È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top