Как я могу использовать режим Emacs Flymake для python с проверкой кода на pyflakes и pylint? - PullRequest
22 голосов
/ 11 августа 2009

Для проверки кода в режиме Python я использую flymake с pyflakes

Также я хочу проверить стиль кода (pep8) с pylint (описание на той же странице с pyflakes)

Это решения работают. Но я не могу настроить flymake для совместной работы с pyflakes и pylint. Как я могу это сделать?

Ответы [ 4 ]

35 голосов
/ 08 сентября 2009

Ну, flymake просто ищет исполняемую команду, которая выводит строки в предопределенном формате. Например, вы можете создать скрипт оболочки, который будет последовательно вызывать все нужные вам шашки ...

Вы также должны убедиться, что ваш скрипт завершается, возвращая уровень ошибки 0. Так что это пример:

Вот что я сделал в сценарии "pycheckers":

#!/bin/bash

epylint "$1" 2>/dev/null
pyflakes "$1"
pep8 --ignore=E221,E701,E202 --repeat "$1"
true

Для части emacs lisp:

(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)))
7 голосов
/ 25 октября 2009

Обычно можно включить режим flymake в python-mode-hook. К сожалению, это вызывает проблемы с такими вещами, как py-execute-buffer, которые создают временные буферы, которые вызывают ловушку, а затем приводят к сбоям режима flymake из-за отсутствия «реального файла». Решение состоит в том, чтобы изменить условия, в которых вы добавляете хук: - например, мой:

(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)
        ))
0 голосов
/ 24 апреля 2013

Windows пакетная версия vaab's pychechker

@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1
0 голосов
/ 11 августа 2009

Вы можете проверить скрипт на Лиспе здесь (http://charlie137 -2.blogspot.com / 2009/08 / check-python-coding-style-on-fly-with.html ) , который должен помочь с проверкой PEP8 а-ля pep8.py. Я не использую pyflakes или pylint, но я думаю, вы могли бы легко настроить это для работы с другими шашки.

...