Page 8 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 FAR scripts — статический анализатор для Lua/MoonScript

Posted: Thu 07 Nov, 2019 12:46
by John Doe

Latest post of the previous page:

v1.4.2-far5498.lm712
  • Улучшена справка
  • far_standards.lua.cfg актуализирован
  • Экспериментальная опция allow_G (не документирована), позволяет скрывать предупреждения о необъявленных переменных, если они уже присутствуют в текущем окружении.
    Примечание: вместо этой опции рекомендуется добавлять необходимые идентификаторы в конфиг: viewtopic.php?p=146799#p146799
С этой версии использование оставленных для совместимости _G.unicode и utf8.cfind будет отображаться ошибкой.
Рекомендуется исправить скрипты.

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

Posted: Thu 07 Nov, 2019 22:32
by buniak_a_h
Задал по рекомендации Shmuel
package.nounload = true
получил репорт:
setting undefined field 'nounload.ljsqlite3' of global 'package'

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

Posted: Fri 08 Nov, 2019 14:22
by citRiks
John Doe,
Запускаю из панели luacheck:name.lua и получаю ошибку:
luacheck commandline

lua interpreter not found: luajit.exe
Но готового luajit.exe не нашёл. Что посоветуете?

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

Posted: Fri 08 Nov, 2019 15:35
by skipik

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

Posted: Fri 08 Nov, 2019 16:35
by citRiks
skipik, Вот спасибо! А нет ли ещё и x32-разрядности?

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

Posted: Fri 08 Nov, 2019 16:45
by skipik
citRiks, обновил пост выше. ;-)

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

Posted: Fri 08 Nov, 2019 16:56
by HaRT
Спасибо. А какая это конкретно версия LuaJit и какой версией компилятора собрана?

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

Posted: Fri 08 Nov, 2019 17:48
by John Doe
готового luajit.exe не нашёл. Что посоветуете?
А в справке не указано? Был в репозитории фара, кажется.

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

Posted: Fri 08 Nov, 2019 17:56
by John Doe
Версия значения особого не имеет, т.к. предполагается что DLL будут подхвачены те, что используются фаром.

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

Posted: Fri 08 Nov, 2019 18:56
by citRiks
John Doe wrote: Fri 08 Nov, 2019 17:48
готового luajit.exe не нашёл. Что посоветуете?
А в справке не указано? Был в репозитории фара, кажется
Ссылка в справке указана. Но самое большее, что я по ней нашёл, это "No results found".

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

Posted: Fri 08 Nov, 2019 19:20
by John Doe

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

Posted: Fri 08 Nov, 2019 19:23
by skipik
HaRT wrote: Fri 08 Nov, 2019 16:56 Спасибо. А какая это конкретно версия LuaJit и какой версией компилятора собрана?
Не могу точно сказать, нашёл на пк в архивах. Но, судя по "linker version 2.27", собрано в GCC.

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

Posted: Sat 09 Nov, 2019 16:17
by John Doe
1.4.3
- обновление списка идентификаторов в соответствии с окружением, доступным в far 5505.
- учитывается package.nounload
- коррекция ссылок в справке
- исправления в обработке необъявленных переменных

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

Posted: Thu 21 Nov, 2019 22:57
by buniak_a_h
Почему-то выдаётся диагностика:

Code: Select all

accessing undefined field 'BeginSelection' of global 'panel'
accessing undefined field 'EndSelection' of global 'panel'
Такие функции в таблице panel имеются. И даже описание есть. Что делать, шеф? Усё пропало!©

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

Posted: Fri 22 Nov, 2019 08:45
by John Doe
buniak_a_h wrote: Thu 21 Nov, 2019 22:57 Что делать, шеф?
Убедиться что версия скрипта соответствует выложенной в шапке.

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

Posted: Tue 14 Apr, 2020 16:42
by buniak_a_h
Версия ФАР начтная с 5580.
Скрипт - последний из шапки.
При проверке синтаксиса скрипт падает.
Путём вывода сообщений получено место: модуль check.lua, функция error.
Сообщение, которое туда приходит (на моём скрипте):

Code: Select all

 ...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:60: invalid UTF-8 code
 stack traceback:
 	...ng\Far Manager\Profile\Macros\modules\luacheck\utils.lua:186: in function <...ng\Far Manager\Profile\Macros\modules\luacheck\utils.lua:182>
 	[C]: in function 'token_body_or_line'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:60: in function 'skip_token'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:181: in function 'parse_id'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:359: in function 'parse_simple_expression'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:449: in function 'parse_subexpression'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:472: in function 'parse_expression'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:171: in function 'parse_expression_list'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:645: in function 'parse_statement'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:723: in function 'parse_block'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:284: in function 'parse_function'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:594: in function 'parse_statement'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:723: in function 'parse_block'
 	...g\Far Manager\Profile\Macros\modules\luacheck\parser.lua:752: in function 'parse'
 	...ng\Far Manager\Profile\Macros\modules\luacheck\check.lua:230: in function <...ng\Far Manager\Profile\Macros\modules\luacheck\check.lua:229>
 	[C]: in function 'try'
 	...ng\Far Manager\Profile\Macros\modules\luacheck\check.lua:258: in function 'get_report'
 	...ing\Far Manager\Profile\Macros\modules\luacheck\init.lua:101: in function 'check_strings'
 	...file\Macros\scripts\luacheck_scripts\luacheck_editor.lua:611: in function <...file\Macros\scripts\luacheck_scripts\luacheck_editor.lua:566>
В версии ФАР-а ранее 5580 ошибки не было. Файл - в кодировке UTF-8, набран во встроенном редакторе ФАР-а.
Совет из предыдущего Вашего сообщения не помогает.
Что делать, шеф? ©Лёлик
--
P/S. Пример проверяемого скрипта нужен? Он, кстати, рабочий!