Skip to content

Commit

Permalink
Add DisabledFormatter to trace disabled lines
Browse files Browse the repository at this point in the history
  • Loading branch information
veelenga committed Jan 30, 2018
1 parent 9f85b16 commit 69cff77
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 4 deletions.
41 changes: 41 additions & 0 deletions spec/ameba/formatter/disabled_formatter_spec.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
require "../../spec_helper"

module Ameba::Formatter
describe DisabledFormatter do
output = IO::Memory.new
subject = DisabledFormatter.new output

describe "#finished" do
it "writes a final message" do
subject.finished [Source.new ""]
output.to_s.should contain "Disabled rules using inline directives:"
end

it "writes disabled rules if any" do
Colorize.enabled = false

path = "source.cr"
s = Source.new("", path).tap do |s|
s.error(ErrorRule.new, 1, 2, "ErrorRule", :disabled)
s.error(NamedRule.new, 2, 2, "NamedRule", :disabled)
end
subject.finished [s]
log = output.to_s
log.should contain "#{path}:1 #{ErrorRule.name}"
log.should contain "#{path}:2 #{NamedRule.name}"
ensure
output.clear
Colorize.enabled = true
end

it "does not write not-disabled rules" do
s = Source.new("", "source.cr").tap do |s|
s.error(ErrorRule.new, 1, 2, "ErrorRule")
s.error(NamedRule.new, 2, 2, "NamedRule", :disabled)
end
subject.finished [s]
output.to_s.should_not contain ErrorRule.name
end
end
end
end
1 change: 1 addition & 0 deletions src/ameba/config.cr
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ class Ameba::Config
todo: Formatter::TODOFormatter,
flycheck: Formatter::FlycheckFormatter,
silent: Formatter::BaseFormatter,
disabled: Formatter::DisabledFormatter,
}

PATH = ".ameba.yml"
Expand Down
17 changes: 17 additions & 0 deletions src/ameba/formatter/disabled_formatter.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
module Ameba::Formatter
# A formatter that shows all disabled line using inline directives.
class DisabledFormatter < BaseFormatter
def finished(sources)
output << "Disabled rules using inline directives: \n\n"

sources.each do |source|
source.errors.select(&.disabled?).each do |e|
if loc = e.location
output << "#{source.path}:#{loc.line_number}".colorize(:cyan)
output << " #{e.rule.name}\n"
end
end
end
end
end
end
2 changes: 1 addition & 1 deletion src/ameba/inline_comments.cr
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module Ameba
# 1. The line of the location ends with a comment directive.
# 2. The line above the location is a comment directive.
#
# For example, here is two examples of disabled location:
# For example, here are two examples of disabled location:
#
# ```
# # ameba:disable LargeNumbers
Expand Down
6 changes: 3 additions & 3 deletions src/ameba/source.cr
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module Ameba
# Represents an error caught by Ameba.
#
# Each error has the rule that created this error,
# location of the issue and a message.
# location of the issue, message and status.
record Error,
rule : Rule::Base,
location : Crystal::Location?,
Expand Down Expand Up @@ -43,7 +43,7 @@ module Ameba
def initialize(@code : String, @path = "")
end

# Adds new error to the list of errors.
# Adds a new error to the list of errors.
#
# ```
# source.error rule, location, "Line too long"
Expand All @@ -54,7 +54,7 @@ module Ameba
errors << Error.new rule, location, message, status
end

# Adds new error to the list of errors using line and column number.
# Adds a new error to the list of errors using line and column number.
#
# ```
# source.error rule, line_number, column_number, "Bad code"
Expand Down

0 comments on commit 69cff77

Please sign in to comment.