elm-review/src/Lint/Rule/NoDebug.elm

77 lines
1.2 KiB
Elm
Raw Normal View History

2018-11-11 01:43:58 +03:00
module Lint.Rule.NoDebug exposing (rule)
2017-01-07 23:17:01 +03:00
{-|
2018-11-05 16:44:22 +03:00
@docs rule
2018-11-05 16:44:22 +03:00
# Fail
2018-11-05 16:44:22 +03:00
if Debug.log "condition" condition then
a
else
b
if condition then
Debug.crash "Nooo!"
2018-11-05 16:44:22 +03:00
else
value
2018-11-05 16:44:22 +03:00
# Success
if condition then
a
2018-11-05 16:44:22 +03:00
else
b
2018-11-05 16:44:22 +03:00
-}
2018-11-05 21:00:17 +03:00
import Elm.Syntax.Expression exposing (Expression(..))
import Elm.Syntax.Node exposing (Node, range, value)
2018-11-11 01:37:18 +03:00
import Lint exposing (Rule, lint)
import Lint.Error as Error exposing (Error)
import Lint.Rule as Rule
2017-01-07 23:17:01 +03:00
{-| Forbid the use of `Debug` before it goes into production.
rules =
[ NoDebug.rule
]
2018-11-05 16:44:22 +03:00
-}
2018-11-11 01:37:18 +03:00
rule : Rule
2019-06-15 22:14:40 +03:00
rule =
Lint.createRule
"NoDebug"
(lint implementation)
implementation : Rule.Implementation ()
implementation =
Rule.createSimple
|> Rule.withSimpleExpressionVisitor expressionVisitor
2017-01-07 23:17:01 +03:00
2018-11-11 01:37:18 +03:00
error : Node a -> Error
error node =
Error.create "Forbidden use of Debug" (range node)
expressionVisitor : Node Expression -> List Error
expressionVisitor node =
case value node of
FunctionOrValue moduleName fnName ->
if List.member "Debug" moduleName then
[ error node ]
2018-11-05 16:44:22 +03:00
else
[]
2017-01-07 23:17:01 +03:00
_ ->
[]