shard-ameba/src/ameba/rule/lint/debug_calls.cr

33 lines
721 B
Crystal

module Ameba::Rule::Lint
# A rule that disallows calls to debug-related methods.
#
# This is because we don't want debug calls accidentally being
# committed into our codebase.
#
# YAML configuration example:
#
# ```
# Lint/DebugCalls:
# Enabled: true
# MethodNames:
# - p
# - p!
# - pp
# - pp!
# ```
class DebugCalls < Base
properties do
description "Disallows debug-related calls"
method_names %w[p p! pp pp!]
end
MSG = "Possibly forgotten debug-related `%s` call detected"
def test(source, node : Crystal::Call)
return unless node.name.in?(method_names) && node.obj.nil?
issue_for node, MSG % node.name
end
end
end