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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

Luacheck это статический анализатор для Lua.
Luacheck может обнаруживать разнообразные проблемы, такие как использование неопределённых глобальных переменных, неиспользованные переменные и значения, доступ к неинициализированным переменным, недостижимый код и многое другое.

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

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

Требования:
  • FAR 3 не старше b5106
  • luacheck не ниже v0.19
Attachments
luaсheck_far_v1.4.3.7z
far5505.lm712
(23.38 KiB) Downloaded 44 times
Last edited by John Doe on Sat 09 Nov, 2019 16:08, edited 3 times in total.

User avatar
HaRT
Moderator
Posts: 9231
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 92 times
Been thanked: 195 times

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

Post by HaRT »

Latest post of the previous page:

John Doe wrote: По замыслу он предполагается в текущей папке, или выше (вплоть до корня). В контексте фара это не очень надёжно, и я даже не проверял работает ли.
Так может лучше от папки проверяемого файла?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

Я неточно выразился. Возможность, описанная в документации luacheck — встроенная, ньюансы её реализации мне неизвестны, и работоспособность не проверял.

Как у нас сейчас конфиг задаётся я описал, если же этого на практике окажется недостаточно, то сделаем лучше.
Реализовать чтение .luacheckrc можно из любого места.

lysenkov
Posts: 2
Joined: Wed 15 Mar, 2017 18:50
Has thanked: 1 time

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

Post by lysenkov »

John Doe wrote: Как у нас сейчас конфиг задаётся я описал, если же этого на практике окажется недостаточно, то сделаем лучше.
Реализовать чтение .luacheckrc можно из любого места.
Сейчас чтение .luacheckrc не работает. Или я не понял, куда его положить. Из папки с проверяемым файлом - было бы идеально, поскольку в разных проектах требуются разные настройки. По путям выше, как-то сомнительно...

User avatar
HaRT
Moderator
Posts: 9231
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 92 times
Been thanked: 195 times

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

Post by HaRT »

lysenkov wrote: Из папки с проверяемым файлом - было бы идеально, поскольку в разных проектах требуются разные настройки. По путям выше, как-то сомнительно...
По директориям выше — это как раз для развесистых проектов с собственной структурой директорий. Не класть же конфигурацию в каждую директорию, где есть исходники на Lua.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

lysenkov wrote: Из папки с проверяемым файлом - было бы идеально
Сделаю при случае

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

C актуальной версией luacheck (0.20.0) скрипт luacheck_editor.lua в настоящий момент работает не совсем хорошо, по причине изменения функциональности (в 0.19.0).

Глобальные переменные более не подхватываются из текущее окружения автоматически, и надо разобраться как их теперь лучше задавать...

Пока я не согласую скрипт с последними изменениями рекомендуемая версия luacheck: 0.18.0.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post 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

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post 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.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

В справке есть.

По-умолчанию luacheck не знает, что вы макросы проверяете.
Конфиг надо создать, в котором задать std="_G+luamacro".
Создать его можно например в папке scripts, или в папке luacheck (тогда он будет умолчательный).
"Из коробки" его нет, чтобы не затирать потенциально существующий пользовательский.
Зато есть .luacheckrc.sample

P.S.
Опцию можно задать и без конфига, inline.
Для этого в начал макрофайла следует поместить комментарий

Code: Select all

--luacheck: std _G+luamacro
Last edited by John Doe on Sun 08 Oct, 2017 15:51, edited 1 time in total.

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post by zg »

John Doe wrote:
Sun 08 Oct, 2017 15:47
Создать его можно например в папке scripts
работает.
John Doe wrote:
Sun 08 Oct, 2017 15:47
или в папке luacheck (тогда он будет умолчательный).
не работает.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

Может не там создаёте.

По шагам:
  1. Удаляю все конфиги.
  2. Запускаю анализ любого файла.
  3. В списке предупреждений жму F9, открывается тот самый умолчательный конфиг.
  4. Жму F5, чтобы вставить шаблон, сохраняю, закрываю.
  5. Предупреждения исчезли.
Update
Расписал так же и в справке (будет в следующей версии).
Last edited by John Doe on Mon 09 Oct, 2017 07:50, edited 1 time in total.

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post 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 — не возникло, хотя это там и описано.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post 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 — не возникло, хотя это там и описано.
Last edited by John Doe on Wed 23 May, 2018 07:41, edited 1 time in total.

User avatar
zg
zero-gravity
Posts: 5700
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

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

Post by zg »

John Doe wrote:
Wed 11 Oct, 2017 18:28
Уточню, что здесь имеется в виду не папка модуля, а место, куда установлен данный пакет макросов.
тогда всё правильно.

User avatar
John Doe
Бюрократ
Posts: 12598
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 34 times
Been thanked: 260 times

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

Post by John Doe »

build 5067

MACROAREA_DESKTOP, MACROAREA_GRABBER
WTYPE_GRABBER, WTYPE_HMENU
Area.Desktop, Area.Grabber
Last edited by John Doe on Wed 23 May, 2018 07:41, edited 1 time in total.

IgorZ
Posts: 660
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 12 times
Been thanked: 52 times

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

Post by IgorZ »

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

Post Reply

Return to “Полезные макросы и скрипты”