Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Tue 16 Jun, 2015 12:36
by John Doe
Luacheck это статический анализатор для Lua. Luacheck может обнаруживать разнообразные проблемы, такие как использование неопределённых глобальных переменных, неиспользованные переменные и значения, доступ к неинициализированным переменным, недостижимый код и многое другое.
А для удобной работы с luacheck в фаре предлагаю данный пакет скриптов, обеспечивающий работу Luacheck в редакторе и в командной строке.
Кроме того, в редакторе для Luacheck обеспечивается прозрачная "трансляция" MoonScript, что позволяет анализировать и *.moon-файлы.
Инструкции по установке, настройке, и работе — во встроенной справке.
John Doe wrote: По замыслу он предполагается в текущей папке, или выше (вплоть до корня). В контексте фара это не очень надёжно, и я даже не проверял работает ли.
Так может лучше от папки проверяемого файла?
luacheck — статический анализатор для Lua
Posted: Mon 20 Mar, 2017 10:06
by John Doe
Я неточно выразился. Возможность, описанная в документации luacheck — встроенная, ньюансы её реализации мне неизвестны, и работоспособность не проверял.
Как у нас сейчас конфиг задаётся я описал, если же этого на практике окажется недостаточно, то сделаем лучше.
Реализовать чтение .luacheckrc можно из любого места.
luacheck — статический анализатор для Lua
Posted: Mon 20 Mar, 2017 15:14
by lysenkov
John Doe wrote: Как у нас сейчас конфиг задаётся я описал, если же этого на практике окажется недостаточно, то сделаем лучше.
Реализовать чтение .luacheckrc можно из любого места.
Сейчас чтение .luacheckrc не работает. Или я не понял, куда его положить. Из папки с проверяемым файлом - было бы идеально, поскольку в разных проектах требуются разные настройки. По путям выше, как-то сомнительно...
luacheck — статический анализатор для Lua
Posted: Mon 20 Mar, 2017 15:55
by HaRT
lysenkov wrote: Из папки с проверяемым файлом - было бы идеально, поскольку в разных проектах требуются разные настройки. По путям выше, как-то сомнительно...
По директориям выше — это как раз для развесистых проектов с собственной структурой директорий. Не класть же конфигурацию в каждую директорию, где есть исходники на Lua.
luacheck — статический анализатор для Lua
Posted: Tue 21 Mar, 2017 10:01
by John Doe
lysenkov wrote: Из папки с проверяемым файлом - было бы идеально
Сделаю при случае
luacheck — статический анализатор для Lua
Posted: Thu 27 Jul, 2017 14:46
by John Doe
C актуальной версией luacheck (0.20.0) скрипт luacheck_editor.lua в настоящий момент работает не совсем хорошо, по причине изменения функциональности (в 0.19.0).
Глобальные переменные более не подхватываются из текущее окружения автоматически, и надо разобраться как их теперь лучше задавать...
Пока я не согласую скрипт с последними изменениями рекомендуемая версия luacheck: 0.18.0.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Sun 08 Oct, 2017 14:22
by John Doe
Luacheck FAR scripts v1.4
Поддержка luacheck >=0.19 (актуальная версия: 0.21.1)
Крайне рекомендуемое обновление, т.к. появилось много нового.
В частности, теперь проверяются и поля глобальных таблиц, что например, позволяет выявить даже такую ошибку, как неверное написание флага (far.AdvControl(F.ACTL_REDRAWALLL))
Специфичные для фара идентификаторы прилагаются (far_standards.lua.cfg). Необходима настройка!
Реализовано чтение конфигурации из файлов.luacheckrc.
Каждый такой файл определяет набор опций для анализа файлов в этой папке, и всех вложенных.
Подробности в документации.
Документация в hlf
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Sun 08 Oct, 2017 15:42
by zg
John Doe wrote: ↑Sun 08 Oct, 2017 14:22Специфичные для фара идентификаторы прилагаются (far_standards.lua.cfg).
тогда почему оно есть? проверка из редактора, luacheck 0.21.1.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Sun 08 Oct, 2017 15:47
by John Doe
В справке есть.
По-умолчанию luacheck не знает, что вы макросы проверяете.
Конфиг надо создать, в котором задать std="_G+luamacro".
Создать его можно например в папке scripts, или в папке luacheck (тогда он будет умолчательный).
"Из коробки" его нет, чтобы не затирать потенциально существующий пользовательский.
Зато есть .luacheckrc.sample
P.S.
Опцию можно задать и без конфига, inline.
Для этого в начал макрофайла следует поместить комментарий
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Sun 08 Oct, 2017 15:57
by zg
John Doe wrote: ↑Sun 08 Oct, 2017 15:47Создать его можно например в папке scripts
работает.
John Doe wrote: ↑Sun 08 Oct, 2017 15:47или в папке luacheck (тогда он будет умолчательный).
не работает.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Sun 08 Oct, 2017 16:04
by John Doe
Может не там создаёте.
По шагам:
Удаляю все конфиги.
Запускаю анализ любого файла.
В списке предупреждений жму F9, открывается тот самый умолчательный конфиг.
Жму F5, чтобы вставить шаблон, сохраняю, закрываю.
Предупреждения исчезли.
Update
Расписал так же и в справке (будет в следующей версии).
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Wed 11 Oct, 2017 17:57
by zg
John Doe wrote: ↑Sun 08 Oct, 2017 16:04Жму F5, чтобы вставить шаблон, сохраняю, закрываю.
у меня сохранился в %FARPROFILE%\Macros\scripts\.luacheckrc
John Doe wrote: ↑Sun 08 Oct, 2017 16:04Расписал так же и в справке (будет в следующей версии).
я-то справку читал. но у меня например связи между far_standards.lua.cfg и тем, что его надо включить в .luacheckrc — не возникло, хотя это там и описано.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Wed 11 Oct, 2017 18:28
by John Doe
zg wrote: ↑Wed 11 Oct, 2017 17:57у меня сохранился в %FARPROFILE%\Macros\scripts\.luacheckrc
Могу предположить, что вы его создали там ранее. Существующий подхватывается, поэтому и написал первым шагом удалить все конфиги.
или в папке luacheck (тогда он будет умолчательный).
Уточню, что здесь имеется в виду не папка модуля, а место, куда установлен данный пакет макросов.
zg wrote: ↑Wed 11 Oct, 2017 17:57я-то справку читал. но у меня например связи между far_standards.lua.cfg и тем, что его надо включить в .luacheckrc — не возникло, хотя это там и описано.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
Posted: Wed 11 Oct, 2017 18:46
by zg
John Doe wrote: ↑Wed 11 Oct, 2017 18:28Уточню, что здесь имеется в виду не папка модуля, а место, куда установлен данный пакет макросов.
тогда всё правильно.
Luacheck FAR scripts — статический анализатор для Lua/MoonScript
╔════════════════════ Luacheck FAR scripts v1.4 [0.21.1] ═════════════════════╗
║! 245:32 │ W143 │ accessing undefined field 'moonpath' of global 'package' ║
║! 2405:10 │ W113 │ accessing undefined variable 'LE' ║
║! 2405:13 │ W113 │ accessing undefined variable 'DUMMY' ║
║! 2520:51 │ W143 │ accessing undefined field 'moonpath' of global 'package' ║
╚══════════════ Ctrl-Enter, Ctrl-Up/Down, F5, F6, [Ctrl]F9, F1 ═══════════════╝
package.moonpath - "искаропки"; LE - сам добавляю глобальную функцию из _macroinit.lua; DUMMY - не существует (добавил для проверки).
Хотелось бы видеть только предупреждения третьего типа.
Может, сделать вариант, когда глобальные переменные проверяются динамически, по наличию поля с таким именем в таблице _G? MacroComplete от SimSU работает динамически, очень удобно.