为了在Python模式下检查代码,我使用带有pyflakes的flymake。
此外,我还想使用pylint(与pyflakes在同一页上描述)来检查代码风格(pep8)。
这些解决方案可以正常工作。但是我无法将flymake配置为同时使用pyflakes和pylint。应该如何操作?
好的,flymake 只是在寻找一个可执行命令并输出预定义格式的行。例如,您可以创建一个shell脚本,依次调用所有您想要检查的检查器...
您还必须确保您的脚本以返回错误级别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)))
通常情况下,可以在python-mode-hook中启用flymake模式。不幸的是,这会导致诸如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)
))
(local-set-key [f4] 'flymake-display-err-menu-for-current-line)
- Bleeding FingersF2
或 F3
不同的按键绑定吗? - alpervaab的pychechker
的Windows批处理版本
@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1
pycheckers
可执行,并在emacs脚本中指定完整的绝对路径,或者更简单地确保pycheckers
在列在您的$PATH
中的目录之一中。它将在您对文件进行每个更改时被调用。有关更多信息,请访问http://goo.gl/xxkOY。 - vaabpylint
而不是epylint
? - EoghanM