Zulip Chat Archive

Stream: lean4

Topic: List of linters


Patrick Massot (Jan 08 2025 at 09:20):

How do I get the list of all linters? I want my teaching lib to disable all linters but I don’t know what to put in my lakefile.

Sebastian Ullrich (Jan 08 2025 at 09:22):

You should be able to set linter.all to false. If that doesn't work, it is a bug in that specific linter

Damiano Testa (Jan 08 2025 at 14:49):

If you actually want to know their names without hoping that they would trigger, this should be the list of all the linters in mathlib:

import Mathlib
open Lean Elab Command

elab "#find_linters" : command => do
  let stxLints  Command.lintersRef.get
  let stxLints := stxLints.qsort (·.name.toString < ·.name.toString)
  logInfo <| "\n".intercalate <|
    s!"{stxLints.size} syntax linters found:" ::"":: stxLints.toList.map (·.name.toString)
  let envL := Batteries.Tactic.Lint.batteriesLinterExt.getState ( getEnv)
  let envLints := envL.fold (init := #[]) (fun a _shortName (name, _option) => a.push name)
  let envLints := envLints.qsort (·.toString < ·.toString)
  logInfo <| "\n".intercalate <|
    s!"{envLints.size} environment linters found:" ::"":: envLints.toList.map toString

#find_linters
/-
30 syntax linters found:

Batteries.Linter.UnnecessarySeqFocus.unnecessarySeqFocusLinter
Batteries.Linter.UnreachableTactic.unreachableTacticLinter
Lean.Linter.MissingDocs.missingDocs
Lean.Linter.UnusedVariables.unusedVariables
Lean.Linter.constructorNameAsVariable
Lean.Linter.omit
Lean.Linter.suspiciousUnexpanderPatterns
Mathlib.Linter.AdmitLinter.admitLinter
Mathlib.Linter.CountHeartbeats.countHeartbeatsLinter
Mathlib.Linter.DocPrime.docPrimeLinter
Mathlib.Linter.DoubleImports.upstreamableDeclLinter
Mathlib.Linter.DupNamespaceLinter.dupNamespace
Mathlib.Linter.Flexible.flexibleLinter
Mathlib.Linter.HashCommandLinter.hashCommandLinter
Mathlib.Linter.MinImports.minImportsLinter
Mathlib.Linter.PPRoundtrip.ppRoundtrip
Mathlib.Linter.Style.cdotLinter
Mathlib.Linter.Style.dollarSyntax.dollarSyntaxLinter
Mathlib.Linter.Style.header.headerLinter
Mathlib.Linter.Style.lambdaSyntax.lambdaSyntaxLinter
Mathlib.Linter.Style.longFile.longFileLinter
Mathlib.Linter.Style.longLine.longLineLinter
Mathlib.Linter.Style.missingEnd.missingEndLinter
Mathlib.Linter.Style.multiGoal.multiGoalLinter
Mathlib.Linter.Style.oldObtainLinter
Mathlib.Linter.Style.setOption.setOptionLinter
Mathlib.Linter.UnusedTactic.unusedTacticLinter
Mathlib.Linter.globalAttributeInLinter.globalAttributeIn
Mathlib.Linter.haveLet.haveLetLinter
Mathlib.Linter.refineLinter


17 environment linters found:

Batteries.Tactic.Lint.checkType
Batteries.Tactic.Lint.checkUnivs
Batteries.Tactic.Lint.defLemma
Batteries.Tactic.Lint.deprecatedNoSince
Batteries.Tactic.Lint.docBlame
Batteries.Tactic.Lint.docBlameThm
Batteries.Tactic.Lint.dupNamespace
Batteries.Tactic.Lint.explicitVarsOfIff
Batteries.Tactic.Lint.impossibleInstance
Batteries.Tactic.Lint.nonClassInstance
Batteries.Tactic.Lint.simpComm
Batteries.Tactic.Lint.simpNF
Batteries.Tactic.Lint.simpVarHead
Batteries.Tactic.Lint.structureInType
Batteries.Tactic.Lint.synTaut
Batteries.Tactic.Lint.unusedArguments
Batteries.Tactic.Lint.unusedHavesSuffices
-/

Last updated: May 02 2025 at 03:31 UTC