mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Unused argument name suggession
This commit is contained in:
parent
0b54b10579
commit
402a0c0dab
2 changed files with 20 additions and 10 deletions
|
@ -27,7 +27,8 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
s.errors.first.message.should eq "Unused argument `c`"
|
s.errors.first.message.should eq "Unused argument `c`. If it's necessary, use `_c` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reports if block argument is unused" do
|
it "reports if block argument is unused" do
|
||||||
|
@ -37,7 +38,8 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
s.errors.first.message.should eq "Unused argument `i`"
|
s.errors.first.message.should eq "Unused argument `i`. If it's necessary, use `_` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reports if proc argument is unused" do
|
it "reports if proc argument is unused" do
|
||||||
|
@ -47,7 +49,8 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
s.errors.first.message.should eq "Unused argument `b`"
|
s.errors.first.message.should eq "Unused argument `b`. If it's necessary, use `_b` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reports multiple unused args" do
|
it "reports multiple unused args" do
|
||||||
|
@ -57,9 +60,12 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
s.errors[0].message.should eq "Unused argument `a`"
|
s.errors[0].message.should eq "Unused argument `a`. If it's necessary, use `_a` " \
|
||||||
s.errors[1].message.should eq "Unused argument `b`"
|
"as an argument name to indicate that it won't be used."
|
||||||
s.errors[2].message.should eq "Unused argument `c`"
|
s.errors[1].message.should eq "Unused argument `b`. If it's necessary, use `_b` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
|
s.errors[2].message.should eq "Unused argument `c`. If it's necessary, use `_c` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't report if it is an instance var argument" do
|
it "doesn't report if it is an instance var argument" do
|
||||||
|
@ -158,7 +164,8 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
s.errors.first.message.should eq "Unused argument `b`"
|
s.errors.first.message.should eq "Unused argument `b`. If it's necessary, use `_b` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reports rule, location and message" do
|
it "reports rule, location and message" do
|
||||||
|
@ -169,7 +176,8 @@ module Ameba::Rule
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
error = s.errors.first
|
error = s.errors.first
|
||||||
error.rule.should_not be_nil
|
error.rule.should_not be_nil
|
||||||
error.message.should eq "Unused argument `a`"
|
error.message.should eq "Unused argument `a`. If it's necessary, use `_a` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
error.location.to_s.should eq "source.cr:2:22"
|
error.location.to_s.should eq "source.cr:2:22"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -34,7 +34,8 @@ module Ameba::Rule
|
||||||
ignore_procs false
|
ignore_procs false
|
||||||
end
|
end
|
||||||
|
|
||||||
MSG = "Unused argument `%s`"
|
MSG = "Unused argument `%s`. If it's necessary, use `%s` " \
|
||||||
|
"as an argument name to indicate that it won't be used."
|
||||||
|
|
||||||
def test(source)
|
def test(source)
|
||||||
AST::ScopeVisitor.new self, source
|
AST::ScopeVisitor.new self, source
|
||||||
|
@ -56,7 +57,8 @@ module Ameba::Rule
|
||||||
scope.arguments.each do |argument|
|
scope.arguments.each do |argument|
|
||||||
next if argument.ignored? || scope.references?(argument.variable)
|
next if argument.ignored? || scope.references?(argument.variable)
|
||||||
|
|
||||||
source.error self, argument.location, MSG % argument.name
|
name_suggestion = scope.node.is_a?(Crystal::Block) ? '_' : "_#{argument.name}"
|
||||||
|
source.error self, argument.location, MSG % [argument.name, name_suggestion]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue