Подтвердить что ты не робот

Как я могу использовать режим Emacs Flymake для python с pyflakes и контрольным кодом pylint?

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

Также я хочу, чтобы код чек-кода (pep8) с pylint (описание на той же странице с pyflakes)

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

4b9b3361

Ответ 1

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

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

Это то, что я сделал в "pycheckers" script:

#!/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)))

Ответ 2

Обычно можно включить режим 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)
        ))

Ответ 3

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

Ответ 4

Пакетная версия Windows vaab pychechker

@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1