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

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

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

Post by John Doe »

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

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

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

Требования:
  • FAR 3 не старше b5106
  • luacheck не ниже v0.19
Attachments
far_standards.lua.cfg_v1.5.7z
Обновлённые определения (far 6114 / lm 772)
(8.5 KiB) Downloaded 87 times
luaсheck_far_v1.4.3.7z
far5505.lm712
(23.38 KiB) Downloaded 335 times
Last edited by John Doe on Sat 09 Nov, 2019 16:08, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

HaRT wrote: Это вступает в противоречие с высказанным ранее:
Не знаю насчёт противоречий, но дела обстоят именно так: структура лишь косвенно документирована, и отдельные её элементы могут меняться (и меняются) без предупреждения.

А макробраузеры приспосабливаются.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

1.3.0-beta: Поддержка moonscript
1.3.1-beta: С этим мунскриптом непросто всё
1.3.2-beta: Обработка синтаксических ошибок.

Update
Прогнал на исходном коде moonscript, по результатам кое-что исправил/усовершенствовал.
1.3.3 в шапке.
lysenkov
Posts: 2
Joined: Wed 15 Mar, 2017 18:50
Has thanked: 1 time

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

Post by lysenkov »

Скажите, куда положить .luacheckrc, чтобы он загрузился?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

По замыслу он предполагается в текущей папке, или выше (вплоть до корня). В контексте фара это не очень надёжно, и я даже не проверял работает ли.
На практике конфигурацию можно задать прямо в luacheck_editor.lua, а если не хочется трогать исходник, то использовать возможности cfgscript.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

John Doe wrote: По замыслу он предполагается в текущей папке, или выше (вплоть до корня). В контексте фара это не очень надёжно, и я даже не проверял работает ли.
Так может лучше от папки проверяемого файла?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

lysenkov wrote: Из папки с проверяемым файлом - было бы идеально, поскольку в разных проектах требуются разные настройки. По путям выше, как-то сомнительно...
По директориям выше — это как раз для развесистых проектов с собственной структурой директорий. Не класть же конфигурацию в каждую директорию, где есть исходники на Lua.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

lysenkov wrote: Из папки с проверяемым файлом - было бы идеально
Сделаю при случае
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 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: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 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 — не возникло, хотя это там и описано.
Post Reply

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