Как я могу использовать режим Emacs Flymake для python с pyflakes и контрольным кодом pylint?
Для проверки кода в режиме python я использую flymake с pyflakes
Также я хочу, чтобы код чек-кода (pep8) с pylint (описание на той же странице с pyflakes)
Эти решения работают.
Но я не могу настроить flymake для работы с pyflakes и pylint вместе.
Как я могу это сделать?
Ответы
Ответ 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