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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Tue 16 Jun, 2015 12:36

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

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

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

Требования:
  • FAR 3 не старше b4831
  • luacheck не ниже v0.19
Attachments
luaсheck_far_v1.4.7z
(21.55 KiB) Downloaded 12 times
Last edited by John Doe on Sun 08 Oct, 2017 14:21, edited 1 time in total.

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

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

Post by HaRT » Sun 19 Mar, 2017 21:02

Latest post of the previous page:

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

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

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

Post by John Doe » Mon 20 Mar, 2017 10:06

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

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

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

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

Post by lysenkov » Mon 20 Mar, 2017 15:14

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

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

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

Post by HaRT » Mon 20 Mar, 2017 15:55

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

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

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

Post by John Doe » Tue 21 Mar, 2017 10:01

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

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

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

Post by John Doe » Thu 27 Jul, 2017 14:46

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

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

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

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

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

Post by John Doe » Sun 08 Oct, 2017 14:22

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: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

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

Post by zg » Sun 08 Oct, 2017 15:42

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: 11387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Sun 08 Oct, 2017 15:47

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

По-умолчанию 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: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

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

Post by zg » Sun 08 Oct, 2017 15:57

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: 11387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Sun 08 Oct, 2017 16:04

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

По шагам:
  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: 5302
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 47 times
Contact:

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

Post by zg » Wed 11 Oct, 2017 17:57

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: 11387
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 16 times
Been thanked: 100 times

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

Post by John Doe » Wed 11 Oct, 2017 18:28

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 — не возникло, хотя это там и описано.
Attachments
luacheck_far.ru.hlf
(23.24 KiB) Downloaded 5 times

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

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

Post by zg » Wed 11 Oct, 2017 18:46

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

Post Reply

Return to “Обсуждение макросов”