mirror of
https://github.com/haskell/haskell-language-server.git
synced 2024-10-26 09:20:16 +03:00
233 lines
6.2 KiB
YAML
233 lines
6.2 KiB
YAML
# HLint configuration file
|
|
# https://github.com/ndmitchell/hlint
|
|
##########################
|
|
|
|
# To run HLint do:
|
|
# $ hlint --git -j4
|
|
|
|
# Warnings currently triggered by our code
|
|
- ignore: {name: "Use <$>"}
|
|
- ignore: {name: "Use :"}
|
|
- ignore: {name: "Redundant do"}
|
|
- ignore: {name: "Avoid lambda"}
|
|
- ignore: {name: "Use newtype instead of data"}
|
|
- ignore: {name: "Use unless"}
|
|
- ignore: {name: "Move brackets to avoid $"}
|
|
- ignore: {name: "Eta reduce"}
|
|
- ignore: {name: "Parse error"}
|
|
- ignore: {name: "Reduce duplication"}
|
|
- ignore: {name: "Use ++"}
|
|
- ignore: {name: "Use $>"}
|
|
- ignore: {name: "Use section"}
|
|
- ignore: {name: "Use record patterns"}
|
|
- ignore: {name: "Use camelCase"}
|
|
- ignore: {name: "Use uncurry"}
|
|
- ignore: {name: "Avoid lambda using `infix`"}
|
|
|
|
# Gives at least one suggestion we don't like.
|
|
- ignore: {name: "Use <=<"}
|
|
- ignore: {name: "Use zipFrom"}
|
|
- ignore: {name: "Use zipWithFrom"}
|
|
|
|
# We are using the "redundant" return/pure to assign a name. We do not want to
|
|
# delete it. In particular, this is not an improvement:
|
|
# Found:
|
|
# do options <- somethingComplicated
|
|
# pure options
|
|
# Perhaps:
|
|
# do somethingComplicated
|
|
- ignore: {name: "Redundant return"}
|
|
- ignore: {name: "Redundant pure"}
|
|
|
|
# Off by default hints we like
|
|
- warn: {name: Use module export list}
|
|
|
|
# Condemn nub and friends
|
|
- warn: {lhs: nub (sort x), rhs: Data.List.Extra.nubSort x}
|
|
- warn: {lhs: nub, rhs: Data.List.Extra.nubOrd}
|
|
- warn: {lhs: nubBy, rhs: Data.List.Extra.nubOrdBy}
|
|
- warn: {lhs: Data.List.Extra.nubOn, rhs: Data.List.Extra.nubOrdOn}
|
|
|
|
- functions:
|
|
# Things that are unsafe in Haskell base library
|
|
- name: unsafePerformIO
|
|
within:
|
|
- Development.IDE.Core.Shake
|
|
- Development.IDE.GHC.Util
|
|
- Development.IDE.Plugin.CodeAction.Util
|
|
- Development.IDE.Graph.Internal.Database
|
|
- Development.IDE.Graph.Internal.Paths
|
|
- Development.IDE.Graph.Internal.Profile
|
|
- Ide.Types
|
|
- Test.Hls
|
|
- Test.Hls.Command
|
|
- Wingman.Debug
|
|
- Wingman.Types
|
|
- AutoTupleSpec
|
|
- name: unsafeInterleaveIO
|
|
within:
|
|
- Development.IDE.LSP.LanguageServer
|
|
- {name: unsafeDupablePerformIO, within: []}
|
|
- name: unsafeCoerce
|
|
within:
|
|
- Ide.Plugin.Eval.Code
|
|
- Development.IDE.Core.Compile
|
|
- Development.IDE.Types.Shake
|
|
- Wingman.Judgements.SYB
|
|
- Ide.Plugin.Properties
|
|
|
|
# Things that are a bit dangerous in the GHC API
|
|
- name: nameModule
|
|
within:
|
|
- Development.IDE.GHC.CoreFile
|
|
- Ide.Plugin.CallHierarchy.Internal
|
|
- Ide.Plugin.Rename
|
|
- Compat.HieBin
|
|
|
|
# Partial functions
|
|
|
|
# We need to check fucntions which
|
|
# are typically exported multiple ways under both names,
|
|
# see https://github.com/ndmitchell/hlint/issues/1389
|
|
- name: [Prelude.head, Data.List.head]
|
|
within:
|
|
- Main
|
|
- Experiments
|
|
- Development.Benchmark.Rules
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.Completions
|
|
- Development.IDE.Plugin.CodeAction.ExactPrint
|
|
- Development.IDE.Spans.Documentation
|
|
- Development.IDE.Session
|
|
- Ide.Plugin.CallHierarchy.Internal
|
|
- Ide.Plugin.Eval.Code
|
|
- Ide.Plugin.Eval.Util
|
|
- Ide.Plugin.Floskell
|
|
- Ide.Plugin.ModuleName
|
|
- Ide.Plugin.Rename
|
|
- Ide.Plugin.Class.ExactPrint
|
|
- TExpectedActual
|
|
- TRigidType
|
|
- TRigidType2
|
|
- RightToLeftFixities
|
|
- Typeclass
|
|
- Wingman.Judgements
|
|
- Wingman.Machinery
|
|
- Wingman.Tactics
|
|
|
|
- name: [Prelude.tail, Data.List.tail]
|
|
within:
|
|
- Main
|
|
- Development.Benchmark.Rules
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.CodeAction.ExactPrint
|
|
- Development.IDE.Session
|
|
- UnificationSpec
|
|
|
|
- name: [Prelude.last, Data.List.last]
|
|
within:
|
|
- Main
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.CodeAction.ExactPrint
|
|
- Development.IDE.Spans.Common
|
|
- Development.IDE.Graph.Internal.Types
|
|
- Ide.PluginUtils
|
|
- Ide.Plugin.Eval.Parse.Comments
|
|
- Ide.Plugin.Eval.CodeLens
|
|
|
|
- name: [Prelude.init, Data.List.init]
|
|
within:
|
|
- Main
|
|
- Development.IDE.Spans.Common
|
|
- Ide.PluginUtils
|
|
- Wingman.Metaprogramming.Parser
|
|
- Development.Benchmark.Rules
|
|
- ErrorGivenPartialSignature
|
|
|
|
- name: Data.List.foldl1'
|
|
within: []
|
|
|
|
- name: Data.List.foldr1'
|
|
within: []
|
|
|
|
- name: ["Prelude.!!", "Data.List.!!"]
|
|
within:
|
|
- Main
|
|
- Experiments
|
|
- FunctionalCodeAction
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.Completions.Logic
|
|
- Development.IDE.Spans.Documentation
|
|
- TErrorGivenPartialSignature
|
|
- Wingman.CaseSplit
|
|
- Wingman.Simplify
|
|
|
|
- name: Data.Text.head
|
|
within:
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.Completions.Logic
|
|
|
|
- name: Data.Foldable.foldl1
|
|
within: []
|
|
|
|
- name: Data.Foldable.foldr1
|
|
within:
|
|
- Wingman.Tactics
|
|
|
|
- name: Data.Maybe.fromJust
|
|
within:
|
|
- Experiments
|
|
- Main
|
|
- MultipleImports
|
|
- Progress
|
|
- Utils
|
|
- Development.IDE.Core.Compile
|
|
- Development.IDE.Core.Rules
|
|
- Development.IDE.Core.Shake
|
|
- Development.IDE.Plugin.Completions
|
|
- Development.IDE.Plugin.CodeAction.ExactPrint
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Test
|
|
- Development.IDE.Graph.Internal.Profile
|
|
- Development.IDE.Graph.Internal.Rules
|
|
- Ide.Plugin.Class
|
|
|
|
- name: "Data.Map.!"
|
|
within:
|
|
- Wingman.LanguageServer
|
|
|
|
- name: "Data.IntMap.!"
|
|
within: []
|
|
|
|
- name: "Data.Vector.!"
|
|
within: []
|
|
|
|
- name: "GHC.Arr.!"
|
|
within: []
|
|
|
|
# Tracing functions
|
|
# We ban an explicit list rather than the
|
|
# Debug.Trace, because that module also
|
|
# includes the eventlog tracing functions,
|
|
# which are legitimate to use.
|
|
- name:
|
|
- Debug.Trace.trace
|
|
- Debug.Trace.traceId
|
|
- Debug.Trace.traceShow
|
|
- Debug.Trace.traceShowId
|
|
- Debug.Trace.traceStack
|
|
- Debug.Trace.traceIO
|
|
- Debug.Trace.traceM
|
|
- Debug.Trace.traceShowM
|
|
- Debug.Trace.putTraceMsg
|
|
within:
|
|
- Development.IDE.Core.Compile
|
|
- Development.IDE.Graph.Internal.Database
|
|
- Development.IDE.GHC.Util
|
|
- Development.IDE.Plugin.CodeAction.Util
|
|
- Wingman.Debug
|
|
|
|
# We really do not want novel usages of restricted functions, and mere
|
|
# Warning is not enough to prevent those consistently; you need a build failure.
|
|
- error: {name: Avoid restricted function}
|