Анализ правильности Python (т. Е. Lint) для Notepad++

Кто-нибудь знает что-нибудь вроде pylint или pychecker для notepad++? Или, возможно, как использовать Pylint в Notepad++.

5 ответов

Решение

Если вы установите плагин Python Script, то вы можете добавить новый скрипт со следующими строками, чтобы получить довольно хорошие результаты:

console.show()
console.clear()
console.run('cmd.exe /c '
            + 'C:\\Python26\\Scripts\\pylint.bat --reports=n -f parseable '
            + '"%s"' % notepad.getCurrentFilename())

Вывод будет включать гиперссылки на строки с ошибками / предупреждениями (если в именах файлов нет пробелов...)

Параметр "-f parseable" устарел в текущей версии Pylint.

Текущая эквивалентная альтернатива:

console.run('cmd.exe /c '
        + 'C:\\Python26\\Scripts\\pylint.bat --reports=n '
        + '--msg-template="%s" %s' 
        % ( '{path}:{line}: {msg_id}({symbol}), {obj} {msg}', notepad.getCurrentFilename()))

Примечание: путь к питону может отличаться, например C:\\Python27.

Примечание 2: двойные кавычки в --msg-template="..." важные

Вы можете установить PyLint используя C:\Python34\Scripts>pip install pylint и использовать его через Notepad++ Run... команда (F5):

C:\Python34\Scripts\pylint.bat "$(FULL_CURRENT_PATH)"

Ни один из других ответов не работал для меня, но это делает:

  1. Установите PyLint используя C:\Python34\Scripts\pip.exe install pylint

  2. Установите NppExec через диспетчер плагинов, нажмите F6 и сохраните этот скрипт как "PyLint 3.4":

    NPP_SAVE
    cd "$(FULL_CURRENT_PATH)"
    //env_set PYTHONIOENCODING=utf-16-le
    env_set PYTHONIOENCODING=utf-8
    C:\Python34\Scripts\pylint.exe --reports=n -f parseable "$(FULL_CURRENT_PATH)"
    

Образец вывода:

Process started >>>
************* Module pylint2
pylint2.py:3: [C0330(bad-continuation), ] Wrong continued indentation (add 4 spaces).
        + 'C:\\Python26\\Scripts\\pylint.bat --reports=n '
        ^   |
pylint2.py:4: [C0330(bad-continuation), ] Wrong continued indentation (add 4 spaces).
        + '--msg-template="%s" %s' 
        ^   |
pylint2.py:4: [C0303(trailing-whitespace), ] Trailing whitespace
pylint2.py:5: [C0330(bad-continuation), ] Wrong continued indentation (add 4 spaces).
        % ( '{path}:{line}: {msg_id}({symbol}), {obj} {msg}', notepad.getCurrentFilename()))
        ^   |
pylint2.py:5: [C0326(bad-whitespace), ] No space allowed after bracket
        % ( '{path}:{line}: {msg_id}({symbol}), {obj} {msg}', notepad.getCurrentFilename()))
          ^
pylint2.py:6: [C0304(missing-final-newline), ] Final newline missing
pylint2.py:1: [C0111(missing-docstring), ] Missing module docstring
pylint2.py:2: [E0602(undefined-variable), ] Undefined variable 'console'
pylint2.py:5: [E0602(undefined-variable), ] Undefined variable 'notepad'
No config file found, using default configuration
<<< Process finished. (Exit code 18)

Вы можете связать эти пути, используя выходные фильтры консоли NppExec. Нажмите Shift+F6 и включите этот фильтр с красным установленным на FF:

%FILE%:%LINE%:*

Затем двойной щелчок по красной линии фокусирует указанное место в редакторе.

Вы должны использовать Исполняемый файл вместо Пакета, если вы хотите использовать Pylint в NotePad++.

Перейдите в конфигурацию из скрипта Python и создайте новый файл.py для запуска Pylint из этого. (я назвал мой файл npphelper.py)
(Добавьте этот npphelper.py к пунктам меню и значкам панели инструментов, затем вы можете выполнить его, нажав кнопку.)

Это запустит Pylint в Notepad++, я разделил Команду на 2 части:

pyLint = 'C:\\PROGRA~1\\Python35\\Scripts\\pylint.exe --reports=n'
console.show()
console.clear()
console.run('%s "%s"' % (pyLint, notepad.getCurrentFilename()))
  1. Путь к pylint.exe (я использовал короткое имя вместо двойных кавычек)
  2. Файл, который вы хотите проверить с помощью Pylint (фактически возвращает путь из активной вкладки)

(Вы должны изменить пути так, чтобы они соответствовали вашей установке...)

Все, что вам нужно сделать сейчас, это сохранить этот npphelper.py, открыть вкладку с вашим Project-файлом и запустить npphelper.py, который вы создали для pylint. (например, с помощью кнопки)


Если вы не хотите использовать конфигурацию по умолчанию, создайте шаблон pylintrc (сохраните его там, где хотите). Я сделал это через CMD с помощью следующей команды:

pylint.exe --generate-rcfile>>myfilename.pylintrc

Затем вам нужно изменить некоторые строки в npphelper.py:

rcfile = 'C:\\PROGRA~1\\Python35\\Scripts\\myrcfile.pylintrc'
pyLint = 'C:\\PROGRA~1\\Python35\\Scripts\\pylint.exe --reports=n --rcfile="%s"' % rcfile
console.show()
console.clear()
console.run('%s "%s"' % (pyLint, notepad.getCurrentFilename()))

Я установил Python Script 1.0.8.0 со всеми дополнениями, используя MSI-файл здесь.
(Использование PluginManager в Notepad ++ дает вам версию 1.0.6.0 вместо 1.0.8.0)

Я использую Windows 7 с Notepad++ 6.9.1, Python 3.5.1 и Pylint 1.5.5.
(Я установил pylint через CMD -> " pip install pylint" и обновил его.)


Еще несколько полезных ссылок:

Другие вопросы по тегам