Skip to content

Commit

Permalink
MethodNames: correct reported location/end_location
Browse files Browse the repository at this point in the history
  • Loading branch information
veelenga committed Nov 24, 2018
1 parent e951c07 commit f8dab3b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 4 deletions.
6 changes: 3 additions & 3 deletions spec/ameba/rule/style/method_names_spec.cr
Expand Up @@ -40,14 +40,14 @@ module Ameba

it "reports rule, pos and message" do
s = Source.new %(
def bad_Name
def bad_Name(a)
end
), "source.cr"
subject.catch(s).should_not be_valid
issue = s.issues.first
issue.rule.should_not be_nil
issue.location.to_s.should eq "source.cr:1:1"
issue.end_location.to_s.should eq "source.cr:2:3"
issue.location.to_s.should eq "source.cr:1:5"
issue.end_location.to_s.should eq "source.cr:1:12"
issue.message.should eq(
"Method name should be underscore-cased: bad_name, not bad_Name"
)
Expand Down
7 changes: 7 additions & 0 deletions src/ameba/reportable.cr
Expand Up @@ -26,6 +26,13 @@ module Ameba
add_issue rule, location, nil, message, **args
end

# Adds a new issue for *location* and *end_location* defined by line and column numbers.
def add_issue(rule, location : Tuple(Int32, Int32), end_location : Tuple(Int32, Int32), message, **args)
location = Crystal::Location.new path, *location
end_location = Crystal::Location.new path, *end_location
add_issue rule, location, end_location, message, **args
end

# Returns true if the list of not disabled issues is empty, false otherwise.
def valid?
issues.reject(&.disabled?).empty?
Expand Down
11 changes: 10 additions & 1 deletion src/ameba/rule/style/method_names.cr
Expand Up @@ -52,7 +52,16 @@ module Ameba::Rule::Style
def test(source, node : Crystal::Def)
return if (expected = node.name.underscore) == node.name

issue_for node, MSG % {expected, node.name}
line_number = node.location.try &.line_number
column_number = node.name_column_number

return unless line_number

issue_for(
{line_number, column_number},
{line_number, column_number + node.name.size - 1},
MSG % {expected, node.name}
)
end
end
end

0 comments on commit f8dab3b

Please sign in to comment.