22

Pythonモードでコードをチェックするために、私はpyflakesでflymakeを使用します

また、pylintを使用したチェックコードスタイル(pep8)が必要です(pyflakesを使用した同じページの説明)

このソリューションは機能します。しかし、pyflakesとpylintを一緒に使用するようにflymakeを構成することはできません。どうすればいいですか?

4

4 に答える 4

35

ええと、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)))
于 2009-09-08T11:57:18.793 に答える
7

通常、python-mode-hookでflymakeモードを有効にできます。残念ながら、これにより、フックを呼び出す一時バッファを作成し、「実ファイル」がないためにflymakeモードが一時停止するpy-execute-bufferなどの問題が発生します。解決策は、フックを追加する条件を変更することです。たとえば、私のものは次のとおりです。

(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)
        ))
于 2009-10-25T17:31:25.343 に答える
0

ここ( http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html )でLispスクリプトをチェックすることをお勧めします。これは、PEP8のチェックに役立ちます。アラpep8.py。私はpyflakesやpylintを使用していませんが、他のチェッカーで動作するようにこれを簡単に調整できると思います。

于 2009-08-11T16:54:28.247 に答える
0

vaabのWindowsバッチバージョンpychechker

@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1
于 2013-04-24T06:39:12.997 に答える