Linter frontend and commands #
This file defines the linter commands which spot common mistakes in the code.
#lint
: check all declarations in the current file#lint_mathlib
: check all declarations in mathlib (so excluding core or other projects, and also excluding the current file)#lint_all
: check all declarations in the environment (the current file and all imported files)
For a list of default / non-default linters, see the "Linting Commands" user command doc entry.
The command #list_linters
prints a list of the names of all available linters.
You can append a *
to any command (e.g. #lint_mathlib*
) to omit the slow tests (4).
You can append a -
to any command (e.g. #lint_mathlib-
) to run a silent lint
that suppresses the output if all checks pass.
A silent lint will fail if any test fails.
You can append a +
to any command (e.g. #lint_mathlib+
) to run a verbose lint
that reports the result of each linter, including the successes.
You can append a sequence of linter names to any command to run extra tests, in addition to the
default ones. e.g. #lint doc_blame_thm
will run all default tests and doc_blame_thm
.
You can append only name1 name2 ...
to any command to run a subset of linters, e.g.
#lint only unused_arguments
You can add custom linters by defining a term of type linter
in the linter
namespace.
A linter defined with the name linter.my_new_check
can be run with #lint my_new_check
or lint only my_new_check
.
If you add the attribute @[linter]
to linter.my_new_check
it will run by default.
Adding the attribute @[nolint doc_blame unused_arguments]
to a declaration
omits it from only the specified linter checks.
Tags #
sanity check, lint, cleanup, command, tactic
- low : lint_verbosity
- medium : lint_verbosity
- high : lint_verbosity
Verbosity for the linter output.
low
: only print failing checks, print nothing on success.medium
: only print failing checks, print confirmation on success.high
: print output of every check.
Instances for lint_verbosity
- lint_verbosity.has_sizeof_inst
- lint_verbosity.inhabited
Escape characters that may not be used in a workflow commands, following https://github.com/actions/toolkit/blob/7257597d731b34d14090db516d9ea53439300e98/packages/core/src/command.ts#L92-L105
Equations
- escape_workflow_command s = "".intercalate (list.map workflow_command_replacements s.to_list)
Invoking the hole command lint
("Find common mistakes in current file") will print text that
indicates mistakes made in the file above the command. It is equivalent to copying and pasting the
output of #lint
. On large files, it may take some time before the output appears.