alloy flux
UpdatedFlux is the whole analysis in one run, what clippy is to cargo. It compiles every source, runs luau-lsp over the check artifact and maps the type errors onto the Alloy lines, and runs every lint at its [lint] level: Flux's own eight groups, and the checker's lints under the luau group. It also sees what one file cannot: circular_import reports two files that import each other.
alloy flux the project of the nearest alloy.toml alloy flux src/game.aly one file: the compile, the lints, and the type check alloy flux --fix apply the rewrites that keep the program the same alloy flux -D correctness deny a group for this run; -W warns, -A allows alloy flux --explain manual_floor_div alloy flux --no-typecheck skip luau-lsp alloy flux --watch run again after every change alloy flux --list every lint with its group and default level
One file named on the command line still compiles the whole project, since the type check needs every module the file imports, and the report then covers that file alone. A file outside [build] in gets the compile and the lints, and the run says the type check did not run.
The check artifact keeps the source's lines, so a type error on line 12 of the output is on line 12 of the source; the column maps through the span map. The artifacts go into a mirror of the project under the temp directory, with the root's Luau configuration and a link to every other folder, so requires resolve as they do in the editor.
The [flux] table:
[flux] typecheck = true # run luau-lsp over the check artifact definitions = [] # extra .d.luau or .d.aly files; the project's .d.aly join on their own roblox_types = true # load the Roblox globals security_level = "PluginSecurity" # LocalUserSecurity, RobloxScriptSecurity, None new_solver = true # false runs the old solver, which evaluates no type function # luau_lsp = "/path/to/luau-lsp" # unset: the PATH, then ~/.alloy/bin and ~/.ember/bin too_many_arguments = 7 too_many_lines = 100 max_nesting = 5 cognitive_complexity = 25
The Roblox globals come from the luau-lsp extension's storage when the editor has them, and download once into ~/.alloy/types otherwise. A --@alloy-ignore line silences the checker's report on that line, as it does in the editor.
