Code Hygiene
In this chapter, we'll run Lux's type checker, linter, and formatter on our project to catch issues and keep the code consistent.
Type checking
Lux can statically type-check your Lua code using LuaCATS annotations. Let's run it on our project:
lx check
Everything should pass with no errors.
Now let's see what happens when there's a type mismatch. Open
src/has_hello.lua and change the input parameter annotation
from string to integer:
---@param input integer
local function has_hello(input)
Run lx check again:
lx check
This time Lux should report that string:lower() can't be called on
an integer. Go ahead and change the annotation back to string.
Linting with lx lint
Lux uses luacheck to detect potential errors and style issues. Let's try it on our project:
lx lint
No issues should be reported.
Now let's introduce one. Open src/has_hello.lua and add an unused local
variable:
local unused = true
local function has_hello(input)
Run lx lint again:
lx lint
Lux should report that unused is assigned but never used. Remove the line
and re-run to confirm the warning is gone.
Formatting with lx fmt
Let's format our code:
lx fmt
Feel free to take a look at the changes lx fmt made to our code!
Now that our code is nice and shiny, we're ready to move onto the final step: publishing our code to luarocks.org!