Checks for variables that are unused.
The existence of unused variables could indicate buggy code.
allow_unused_self (default: true) - A bool that determines whether not using self in a method function (function Player:SwapWeapons()) is allowed.
ignore_pattern (default: "^_") - A regular expression for variables that are allowed to be unused. The default allows for variables like _ to be unused, as they shouldn't be used anyway.
local foo = 1If you intend to create a variable without using it, replace it with _ or something that starts with _. You'll see this most in generic for loops.
for _, value in ipairs(list) doStandard libraries can apply an observes field to distinguish an argument from being only written to.
This is so that we can get lints like the following:
local writtenOnly = {}
table.insert(writtenOnly, 1)warning[unused_variable]: writtenOnly is assigned a value, but never used
┌─ example.lua:1:7
│
1 │ local writtenOnly = {}
│ ^^^^^^^^^^^
2 │ table.insert(writtenOnly, 1)
│ ----------- `table.insert` only writes to `writtenOnly`
This only applies when the function call is its own statement. So for instance, this:
local list = {}
print(table.insert(list, 1))...will not lint. To understand this, consider if table.insert returned the index. Without this check, this code:
local list = {}
local index = table.insert(list, 1)...would lint list as mutated only, which while technically true, is unimportant considering index is affected by the mutation.
This also requires that the variable be a static table. This:
return function(value)
table.insert(value, 1)
end...will not lint, as we cannot be sure value is unused outside of this.