diagnostics.md

July 30, 2026 · View on GitHub

Diagnostics

just-lsp runs the following diagnostics on every open document (see src/analyzer.rs). Each rule emits a Language Server Protocol diagnostic with the rule’s identifier in the code field so editors can group or filter them.

CodeNameDescription
syntax-errorsSyntax ErrorsParse tree contains errors or missing nodes.
missing-recipe-for-aliasMissing Recipe for AliasAlias points to a recipe that doesn't exist.
duplicate-aliasDuplicate AliasAlias name is defined more than once.
alias-recipe-conflictAlias/Recipe ConflictAlias and recipe share a name and would shadow each other.
unknown-attributeUnknown AttributeAttribute name is not part of the builtin catalog.
attribute-argumentsAttribute ArgumentsAttribute invocation uses the wrong number of arguments.
attribute-argument-expressionsAttribute Argument ExpressionsAttribute invocation uses an expression where just requires a string literal.
continue-signalsContinue Signals[continue] arguments must be SIGHUP, SIGINT, or SIGQUIT.
arg-attributeArg Attribute[arg(NAME, ...)] references an unknown parameter, duplicates a parameter config, or contains invalid keywords or keyword values.
attribute-invalid-targetAttribute Invalid TargetAttribute is attached to a syntax element that cannot take attributes.
attribute-target-supportAttribute Target SupportAttribute is used on an unsupported target kind.
cache-attributeCache Attribute[cache] uses an unknown keyword, a keyword without a value, or a positional argument.
cache-without-scriptCache Without Script ModeRecipe uses [cache] without script mode.
duplicate-attributeDuplicate AttributeAttributes that must be unique appear more than once on a target, or [default] appears more than once in a module.
script-shell-conflictScript Shell ConflictRecipe combines mutually exclusive [script] and [shell] attributes.
exit-message-conflictExit Message ConflictRecipe combines mutually exclusive [exit-message] and [no-exit-message] attributes.
extension-without-scriptExtension Without ScriptRecipe uses [extension] without [script] or a shebang, so the attribute has no effect.
duplicate-recipesDuplicate RecipesRecipe name collides with another recipe for overlapping targets unless duplicates are allowed.
recipe-parametersRecipe ParametersRecipe parameter list has duplicates, required-after-default parameters, or misplaced variadic parameters.
recipe-dependency-cyclesRecipe Dependency CyclesRecipe participates in a circular dependency chain.
missing-dependenciesMissing DependenciesRecipe depends on another recipe that is missing.
duplicate-dependenciesDuplicate DependenciesWarning: recipe lists the same dependency with identical arguments more than once; just only runs it once, so it's redundant.
dependency-argumentsDependency ArgumentsDependency invocation provides the wrong number of arguments.
mapped-dependenciesMapped DependenciesMapped dependencies require set lists, at least one starred argument, and at most one starred argument.
parallel-dependenciesParallel DependenciesWarning: [parallel] is applied to a recipe with fewer than two dependencies, so it has no effect.
working-directory-conflictWorking Directory ConflictRecipe combines mutually exclusive [no-cd] and [working-directory] attributes.
mixed-recipe-indentationMixed Recipe IndentationRecipe body mixes tabs and spaces for indentation.
inconsistent-recipe-indentationInconsistent Recipe IndentationRecipe indentation width changes after the first indented line.
unknown-functionUnknown FunctionCall targets a function that isn't a builtin or user-defined function.
function-argumentsFunction ArgumentsBuiltin or user-defined function call uses the wrong number of arguments.
deprecated-functionDeprecated FunctionWarning: function call uses a deprecated builtin function with a replacement.
duplicate-functionDuplicate FunctionUser-defined function name is defined more than once.
function-parametersFunction ParametersUser-defined function parameter list has duplicates.
list-featuresList FeaturesSyntax and builtins that require set lists are used without enabling it.
unknown-settingUnknown Settingset statement references an unknown setting.
invalid-setting-kindInvalid Setting KindSetting is assigned a value of the wrong type.
invalid-setting-valueInvalid Setting ValueSetting is assigned a value that violates its setting-specific constraints.
deprecated-settingDeprecated SettingWarning: setting uses a deprecated builtin setting with a replacement.
duplicate-settingDuplicate SettingSetting key is configured more than once.
duplicate-variableDuplicate VariableVariable assignment reuses a name without allowing duplicates.
duplicate-unexportDuplicate UnexportEnvironment variable name is unexported more than once.
export-unexport-conflictExport/Unexport ConflictVariable is both assigned and unexported.
undefined-identifiersUndefined IdentifiersExpression identifier cannot be resolved to a parameter, variable, builtin, or user-defined function.
unused-variablesUnused VariablesWarning: non-exported global variable is never referenced.
unused-parametersUnused ParametersWarning: recipe parameter is never read unless it is exported or available through positional arguments.
dotenv-path-filename-conflictDotenv Path/Filename ConflictWarning: dotenv-path overrides dotenv-filename; setting both is redundant.
invalid-import-pathInvalid Import PathLiteral non-optional import path points to a path that does not exist on disk.