Page 5 of 14

Luacheck FAR scripts — статический анализатор для Lua/MoonScript

Posted: Tue 16 Jun, 2015 12:36
by John Doe
Luacheck это статический анализатор для Lua.
Luacheck может обнаруживать разнообразные проблемы, такие как использование неопределённых глобальных переменных, неиспользованные переменные и значения, доступ к неинициализированным переменным, недостижимый код и многое другое.

А для удобной работы с luacheck в фаре предлагаю данный пакет скриптов, обеспечивающий работу Luacheck в редакторе и в командной строке.
Кроме того, в редакторе для Luacheck обеспечивается прозрачная "трансляция" MoonScript, что позволяет анализировать и *.moon-файлы.

Инструкции по установке, настройке, и работе — во встроенной справке.

Требования:
  • FAR 3 не старше b5106
  • luacheck не ниже v0.19

luacheck — статический анализатор для Lua

Posted: Sun 19 Mar, 2017 21:02
by HaRT

Latest post of the previous page:

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).
вот это же для того, чтобы вот такого не было?

Code: Select all

!   12:9   │ W113 │ accessing undefined variable 'far'
!  305:71  │ W113 │ accessing undefined variable 'win'
!  331:10  │ W113 │ accessing undefined variable 'bit64'
тогда почему оно есть? проверка из редактора, 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.
Для этого в начал макрофайла следует поместить комментарий

Code: Select all

--luacheck: std _G+luamacro

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
Может не там создаёте.

По шагам:
  1. Удаляю все конфиги.
  2. Запускаю анализ любого файла.
  3. В списке предупреждений жму F9, открывается тот самый умолчательный конфиг.
  4. Жму F5, чтобы вставить шаблон, сохраняю, закрываю.
  5. Предупреждения исчезли.
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

Posted: Wed 18 Oct, 2017 10:37
by John Doe
build 5067

MACROAREA_DESKTOP, MACROAREA_GRABBER
WTYPE_GRABBER, WTYPE_HMENU
Area.Desktop, Area.Grabber

Luacheck FAR scripts — статический анализатор для Lua/MoonScript

Posted: Thu 26 Oct, 2017 06:10
by IgorZ
При проверке получил вот такое
package.moonpath - "искаропки";
LE - сам добавляю глобальную функцию из _macroinit.lua;
DUMMY - не существует (добавил для проверки).
Хотелось бы видеть только предупреждения третьего типа.
Может, сделать вариант, когда глобальные переменные проверяются динамически, по наличию поля с таким именем в таблице _G? MacroComplete от SimSU работает динамически, очень удобно.