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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 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 94 times
luaсheck_far_v1.4.3.7z
far5505.lm712
(23.38 KiB) Downloaded 342 times
Last edited by John Doe on Sat 09 Nov, 2019 16:08, edited 3 times in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Latest post of the previous page:

Обновление файла far_standards.lua.cfg для far 6114 / lm 772.
В шапке.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

https://github.com/Kampfkarren/selene (A blazing-fast modern Lua linter written in Rust)
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

мелочь:


Важнее:
на файлах с ру языком стал падать
исправление во вложении
расоложение файла - FAR\Profile\Macros\modules\luacheck\utils.lua
Attachments
modules.luacheck.7z
(2.63 KiB) Downloaded 45 times
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

SUSim wrote: Fri 19 May, 2023 19:37 на файлах с ру языком стал падать
Как воспроизвести?
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

John Doe, проверить любой файл с русским текстом, хоть с коментариями на русском.
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

SUSim, у меня ничего не падает.
И очевидно что у других пользователей тоже всё в порядке, раз никто до сих пор не сообщил.
Поэтому нужно больше деталей.
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

Рад за вас. Корректнее сказать не падает, а выдает
(error object is not a string)
stack traceback:
[C]: in function 'error'
C:\FAR\Profile\Macros\modules\luacheck\check.lua:62: in function 'get_report'
C:\FAR\Profile\Macros\modules\luacheck\init.lua:95: in function 'check_strings'
...ile\Macros\scripts\John Doe\luacheck\luacheck_editor.lua:611: in function <...ile\Macros\scripts\John Doe\
luacheck\luacheck_editor.lua:566>

А замена str:find( на string.find(str, меня избавила от неприятности.
Я и Не создавал багрепорт, только причине отсутствия времени на его грамотное оформление или выдвижения ПРАВИЛЬНО исправления.
ТО что я привел это грубая заплатка - будет время сделаю багрепорт или более продвинутые сделают...

без такого дурацкого изменения он даже на вашем скрипте спотыкается
CtrlO.lua
Last edited by SUSim on Sat 20 May, 2023 16:14, edited 1 time in total.
SimSU ··· ·· -- ··· ··-
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

SUSim, у вас вероятно там русский текст не в кодировке UTF-8.
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

Code: Select all

C:\FAR\Profile\Macros\scripts\John Doe\CtrlO.lua                                   │  │UTF-8│Стр  1/85│Кол 1  │С 1  │108  │18:
local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info
local nfo = Info { _filename or ...,
  name        = "Ctrl+O ultimate";
  description = "View UserScreen from any area";
  version     = "0.3"; --http://semver.org/lang/ru/
  author      = "jd";
  url         = "https://forum.farmanager.com/viewtopic.php?f=15&t=10983";
  id          = "0698713F-35CF-4B47-98E4-C281E700C7DF";
  minfarversion = {3,0,0,5067,0}; --desktop
  helpstr = [[
Хотя в редакторе/вьювере "из коробки" заявлена возможность по Ctrl+O посмотреть
пользовательский экран, реализована она неполноценно, например невозможно использовать
граббер, не работают макросы http://bugs.farmanager.com/view.php?id=3523

Предлагаемый набор макросов даёт возможность полноценного просмотра пользовательского экрана
из любой области.
По желанию отдельные области можно исключить, перечислив их в параметре "exclude".

Если активное окно немодально, то по нажатию Ctrl+O происходит переключение в окно Desktop.
Если модально, то для просмотра используются функции GetUserScreen/SetUserScreen.
Обратно можно вернуться нажав Ctrl+O, Esc или Ctrl+Tab.
  ]];
  help        = function(nfo) far.Message(nfo.helpstr,nfo.name,nil,"l") end;
  o
      ╔════════════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════════════╗
  }   ║ (error object is not a string)                                                                                   ║
  -   ║ stack traceback:                                                                                                 ║
}     ║    [C]: in function 'error'                                                                                      ║
if    ║    C:\FAR\Profile\Macros\modules\luacheck\check.lua:62: in function 'get_report'                                 ║
loc   ║    C:\FAR\Profile\Macros\modules\luacheck\init.lua:95: in function 'check_strings'                               ║
      ║    ...ile\Macros\scripts\John Doe\luacheck\luacheck_editor.lua:611: in function <...ile\Macros\scripts\John Doe\ ║
loc   ║ luacheck\luacheck_editor.lua:566>                                                                                ║
if    ╟──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢
  f   ║                                                      { OK }                                                      ║
end   ╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝

local F = far.Flags
local actl,          GetWindowInfo,       SetCurrentWindow
    = far.AdvControl,F.ACTL_GETWINDOWINFO,F.ACTL_SETCURRENTWINDOW

local function isModal(wi)
  return band(wi.Flags,F.WIF_MODAL)~=0
end

-- 0003523: Полноценный просмотр пользовательского экрана в редакторе/вьювере
Last edited by SUSim on Sat 20 May, 2023 16:20, edited 2 times in total.
SimSU ··· ·· -- ··· ··-
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

и это на разных системах- машинах...
буду разбиратся для грамотного ответа в стиле хелпа

Всего хорошего ВАМ, я рид-онли и не факт...
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Прежде всего: какая у вас версия модуля luacheck?
У меня 0.23.0, а до этого была 0.21.2.
Во-вторых: что если убрать другие макросы и плагины?
https://t.me/FarManager — Telegram чат
User avatar
SUSim
Posts: 1637
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 26 times

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

Post by SUSim »

FAR 3.0.6150.0 x86
с единственным плагином
\Plugins\
\LuaMacro\
Version = { 3, 0, 0, 777 }
(+Macro Brouser в поставке)
единственный макрос
\Macros\
\modules\
\luacheck\
_VERSION = "0.23.0"
\scripts\
\luacheck\
version = "1.4.3-far5505/lm712"
открываю файл luacheck_editor.lua
CtrlShhifrF7
5299 W221 variable 'remove' is never set
в первой строке пишу
-- Проба
CtrlShhifrF7
получаю вылет макроса
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

А если так
Attachments
luacheck_editor.lua
(26.46 KiB) Downloaded 47 times
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

John Doe, у меня возник вопрос.
В опубликованном скрипте строка #806:
filemask=files.cfg_name;files.cfg_sample;
Насколько я понимаю, это всё внутри таблицы. Соответственно эта строка должна интерпретироваться как

Code: Select all

filemask=files.cfg_name;
[1]=files.cfg_sample;
Не ошибка ли это? Возможно, тут надо было писать
filemask=files.cfg_name..';'..files.cfg_sample; ?
Last edited by buniak_a_h on Sat 10 Jun, 2023 05:08, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Верно подмечено.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10858
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote: Mon 22 May, 2023 11:19А если так
Если подкладываю себе версию 1.5 (с исправленной строкой 806) вместо версии 1.4.3, то при первой проверке после пере-/загрузки макросов получаю . Последующие проверки отрабатывают ожидаемо.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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