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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

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

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

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

Требования: Скачать полностью: LuaCheck.zip
Только far_standards.lua.cfg
Last edited by John Doe on Sat 09 Nov, 2019 16:08, edited 3 times in total.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

Latest post of the previous page:

John Doe wrote: Mon 22 May, 2023 11:19А если так
Если подкладываю себе версию 1.5 (с исправленной строкой 806) вместо версии 1.4.3, то при первой проверке после пере-/загрузки макросов получаю . Последующие проверки отрабатывают ожидаемо.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Сколько предупреждений у вас выдаётся на приведенном ниже файле (у меня почему-то одно).

Code: Select all

local a = far.Flags.foobar
if a then return end
local b = far.Guids.foobar
if b then return end
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

Code: Select all

Checking test.lua                                 2 warnings

    test.lua:1:11: accessing undefined field Flags.foobar of global far
    test.lua:3:11: accessing undefined field Guids.foobar of global far

Total: 2 warnings / 0 errors in 1 file
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Я проверял только из редактора, причём как своим скриптом, так и вашим. Результат одинаков в обоих случаях - 1 предупреждение.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

У меня из редактора абсолютно те же предупреждения.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Определил, что проблема с моим .luacheckrc
Когда я ставлю ваш (переименованный) .luacheckrc.sample, проблема уходит.
Last edited by Shmuel on Sat 17 Jun, 2023 20:39, edited 1 time in total.
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Какая у вас реакция Фара на команду lua: require "luacheck.main" ?
(На всякий случай предварительно сохраните файлы в редакторах).
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

Там os.exit(), соответственно фар завершается (нештатным для него образом).
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Shmuel wrote: Sat 17 Jun, 2023 16:14 Сколько предупреждений у вас выдаётся на приведенном ниже файле (у меня почему-то одно).
Только сейчас с трудом докопался до причины этой проблемы.
У меня поле Guids было описано дважды:
один раз просто "Guids" в перечне полей, другой раз в виде ["Guids"] = { fields = { ....
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

Вроде как и Flags дважды у вас, и ReloadDefaultScript
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

John Doe wrote: Sun 18 Jun, 2023 20:08 Вроде как и Flags дважды у вас, и ReloadDefaultScript
Это вы смотрите в репозиторию far2m, а то, что я обсуждал здесь касалось Far3.
Для far2m я только что исправил Guids и Flags (уже закоммичено), а за ReloadDefaultScript спасибо.
Last edited by Shmuel on Sun 18 Jun, 2023 20:14, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

Во избежание всяческих накладок генерирую файл из окружения автоматически (ну, почти).
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 7244
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 636 times

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

Post by Shmuel »

Я тоже вначале (для far2m) сгенерировал файл автоматически, но как сейчас оказалось, мой генератор был несовершенен.
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

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

Post by HaRT »

В дополнение к получаю при вызове пункта Luacheck: edit config из меню конфигурации плагинов (AltShiftF9).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

Там есть пометка todo но я уже не помню что планировалось сделать.
Поэтому строка с вызовом error будет просто закомментирована.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

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

Post by John Doe »

@shmuel
Встретил странность, похоже на баг в luacheck.

Code: Select all

local F = far.Flags
return F + F.abracadabra
Ожидаемо выдаёт ошибку indirectly accessing undefined field 'Flags.abracadabra' of global 'far'

А вот так уже нет:

Code: Select all

local F = far.Flags
local function _()
  return F + F.abracadabra
end
А так снова выдаёт:

Code: Select all

local F = far.Flags
local function _()
  return F.abracadabra
end
https://t.me/FarManager — Telegram чат
Post Reply

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