You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have been using selene in my projects lately and I think is a more strict linter in some cases, showing more errors or warnings to catch what luacheck do not.
std="neovim"exclude = [
"lua/plenary/profile/lua_profiler.lua",
"lua/plenary/profile/memory_profiler.lua",
"lua/plenary/profile/p.lua", # token `goto` detected as `parse_error`"lua/plenary/async_lib/*.lua",
]
[rules]
global_usage = "warn"deprecated = "warn"# If change for `allow` it will rely in `lua_ls` diagnostics alonemultiple_statements = "warn"incorrect_standard_library_use = "allow"# This is for cases like `string.format`, `package.config`, etc.mixed_table = "allow"unused_variable = "warn"undefined_variable = "warn"
With these two files in the root of the project, selene --display-style quiet lua/plenary --allow-warnings results in the following.
lua/plenary/async/api.lua:4:22: warning[unused_variable]: t is defined, but never used
lua/plenary/bit.lua:136:21: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:176:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:179:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:182:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:226:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:227:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:228:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:252:27: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:269:27: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/async/tests.lua:14:3: warning[undefined_variable]: `pending` is not defined
lua/plenary/busted.lua:5:26: warning[unused_variable]: element is defined, but never used
lua/plenary/busted.lua:13:19: error[mismatched_arg_count]: this functiontakes 1 argument but 2 arguments were supplied
lua/plenary/busted.lua:74:41: warning[shadowing]: shadowing variable `msg`
lua/plenary/busted.lua:201:30: warning[unused_variable]: func is defined, but never used
lua/plenary/busted.lua:211:1: warning[unscoped_variables]: `pending` is not declared locally, and will be available in every scope
lua/plenary/busted.lua:211:1: warning[unused_variable]: pending is defined, but never used
lua/plenary/busted.lua:214:1: warning[unscoped_variables]: `clear` is not declared locally, and will be available in every scope
lua/plenary/busted.lua:214:1: warning[unused_variable]: clear is defined, but never used
lua/plenary/profile.lua:16:24: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/run.lua:5:55: warning[unused_variable]: opts is defined, but never used
Results:
1 errors
20 warnings
0 parse errors
or (info.source:sub(1, 1) =="@" andthisdir==dirname(info.source))
Note
The error shown is because in lua/plenary/busted.lua we are using the functiondirname with 1 argument.
But in the line 13, dirname(debug.getinfo(1, "Sl").source, ":h") is using 2. Unlike in line 18, dirname(info.source) is just using one as the declaration for local dirname = function(p) indicates.
If we fix that error, dirname(debug.getinfo(1, "Sl").source, ":h") -> dirname(debug.getinfo(1, "Sl").source). The command for selene with the --allow-warnings flag will result in a success exit code when linting.
Integrations
For the CI process it will be easy.
Extending the Makefile to include:
make lint-selene: selene --display-style quiet lua/plenary --allow-warnings
Motivation
I have been using selene in my projects lately and I think is a more strict linter in some cases, showing more
errors
orwarnings
to catch whatluacheck
do not.Example config
In the root project.
selene.toml
neovim.yml
With these two files in the root of the project,
selene --display-style quiet lua/plenary --allow-warnings
results in the following.plenary.nvim/lua/plenary/busted.lua
Lines 1 to 18 in 08e3019
Note
The error shown is because in
lua/plenary/busted.lua
we are using the functiondirname
with 1 argument.But in the line
13
,dirname(debug.getinfo(1, "Sl").source, ":h")
is using 2. Unlike in line18
,dirname(info.source)
is just using one as the declaration forlocal dirname = function(p)
indicates.If we fix that error,
dirname(debug.getinfo(1, "Sl").source, ":h")
->dirname(debug.getinfo(1, "Sl").source)
. The command forselene
with the--allow-warnings
flag will result in asuccess
exit code when linting.Integrations
For the
CI
process it will be easy.Makefile
to include:make lint-selene
:selene --display-style quiet lua/plenary --allow-warnings
selene
job toworkflows
:Note
More about
selene
action hereThe text was updated successfully, but these errors were encountered: