mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Add rule namespaces: style, lint, layout (#63)
This commit is contained in:
parent
d9f04af057
commit
4cb5328513
71 changed files with 128 additions and 128 deletions
|
@ -35,10 +35,10 @@ Inspecting 107 files.
|
||||||
...............F.....................F....................................................................
|
...............F.....................F....................................................................
|
||||||
|
|
||||||
src/ameba/rule/unneeded_disable_directive.cr:29:7
|
src/ameba/rule/unneeded_disable_directive.cr:29:7
|
||||||
UselessAssign: Useless assignment to variable `s`
|
Lint/UselessAssign: Useless assignment to variable `s`
|
||||||
|
|
||||||
src/ameba/formatter/flycheck_formatter.cr:5:21
|
src/ameba/formatter/flycheck_formatter.cr:5:21
|
||||||
UnusedArgument: Unused argument `location`
|
Lint/UnusedArgument: Unused argument `location`
|
||||||
|
|
||||||
Finished in 248.9 milliseconds
|
Finished in 248.9 milliseconds
|
||||||
|
|
||||||
|
@ -102,10 +102,10 @@ Generate new file by running `ameba --gen-config`.
|
||||||
One or more rules can be disabled using inline directives:
|
One or more rules can be disabled using inline directives:
|
||||||
|
|
||||||
```crystal
|
```crystal
|
||||||
# ameba:disable LargeNumbers
|
# ameba:disable Style/LargeNumbers
|
||||||
time = Time.epoch(1483859302)
|
time = Time.epoch(1483859302)
|
||||||
|
|
||||||
time = Time.epoch(1483859302) # ameba:disable LargeNumbers
|
time = Time.epoch(1483859302) # ameba:disable Style/LargeNumbers
|
||||||
```
|
```
|
||||||
|
|
||||||
## Editor integration
|
## Editor integration
|
||||||
|
|
|
@ -21,8 +21,8 @@ module Ameba::Formatter
|
||||||
end
|
end
|
||||||
subject.finished [s]
|
subject.finished [s]
|
||||||
log = output.to_s
|
log = output.to_s
|
||||||
log.should contain "#{path}:1 #{ErrorRule.name}"
|
log.should contain "#{path}:1 #{ErrorRule.rule_name}"
|
||||||
log.should contain "#{path}:2 #{NamedRule.name}"
|
log.should contain "#{path}:2 #{NamedRule.rule_name}"
|
||||||
ensure
|
ensure
|
||||||
output.clear
|
output.clear
|
||||||
Colorize.enabled = true
|
Colorize.enabled = true
|
||||||
|
@ -35,7 +35,7 @@ module Ameba::Formatter
|
||||||
message: "NamedRule", status: :disabled)
|
message: "NamedRule", status: :disabled)
|
||||||
end
|
end
|
||||||
subject.finished [s]
|
subject.finished [s]
|
||||||
output.to_s.should_not contain ErrorRule.name
|
output.to_s.should_not contain ErrorRule.rule_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ module Ameba::Formatter
|
||||||
subject = flycheck
|
subject = flycheck
|
||||||
subject.source_finished s
|
subject.source_finished s
|
||||||
subject.output.to_s.should eq(
|
subject.output.to_s.should eq(
|
||||||
"source.cr:1:2: E: [#{DummyRule.name}] message\n"
|
"source.cr:1:2: E: [#{DummyRule.rule_name}] message\n"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ module Ameba::Formatter
|
||||||
subject = flycheck
|
subject = flycheck
|
||||||
subject.source_finished s
|
subject.source_finished s
|
||||||
subject.output.to_s.should eq(
|
subject.output.to_s.should eq(
|
||||||
"source.cr:1:2: E: [#{DummyRule.name}] multi line\n"
|
"source.cr:1:2: E: [#{DummyRule.rule_name}] multi line\n"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ module Ameba
|
||||||
s.add_issue DummyRule.new, {1, 2}, "message1"
|
s.add_issue DummyRule.new, {1, 2}, "message1"
|
||||||
|
|
||||||
result = get_result [s]
|
result = get_result [s]
|
||||||
result["sources"][0]["issues"][0]["rule_name"].should eq DummyRule.name
|
result["sources"][0]["issues"][0]["rule_name"].should eq DummyRule.rule_name
|
||||||
end
|
end
|
||||||
|
|
||||||
it "shows a message" do
|
it "shows a message" do
|
||||||
|
|
|
@ -57,7 +57,7 @@ module Ameba
|
||||||
formatter = Formatter::TODOFormatter.new IO::Memory.new, file
|
formatter = Formatter::TODOFormatter.new IO::Memory.new, file
|
||||||
|
|
||||||
s = Source.new "def invalid_syntax"
|
s = Source.new "def invalid_syntax"
|
||||||
s.add_issue Rule::Syntax.new, {1, 2}, "message"
|
s.add_issue Rule::Lint::Syntax.new, {1, 2}, "message"
|
||||||
|
|
||||||
formatter.finished [s]
|
formatter.finished [s]
|
||||||
content = file.to_s
|
content = file.to_s
|
||||||
|
|
|
@ -11,7 +11,7 @@ module Ameba
|
||||||
|
|
||||||
describe "#name" do
|
describe "#name" do
|
||||||
it "returns name of the rule" do
|
it "returns name of the rule" do
|
||||||
DummyRule.new.name.should eq "Ameba::DummyRule"
|
DummyRule.new.name.should eq "Ameba/DummyRule"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
subject = LineLength.new
|
subject = LineLength.new
|
||||||
long_line = "*" * 81
|
long_line = "*" * 81
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
subject = TrailingBlankLines.new
|
subject = TrailingBlankLines.new
|
||||||
|
|
||||||
describe TrailingBlankLines do
|
describe TrailingBlankLines do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
subject = TrailingWhitespace.new
|
subject = TrailingWhitespace.new
|
||||||
|
|
||||||
describe TrailingWhitespace do
|
describe TrailingWhitespace do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = ComparisonToBoolean.new
|
subject = ComparisonToBoolean.new
|
||||||
|
|
||||||
describe ComparisonToBoolean do
|
describe ComparisonToBoolean do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = DebuggerStatement.new
|
subject = DebuggerStatement.new
|
||||||
|
|
||||||
describe DebuggerStatement do
|
describe DebuggerStatement do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe EmptyEnsure do
|
describe EmptyEnsure do
|
||||||
subject = EmptyEnsure.new
|
subject = EmptyEnsure.new
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::EmptyExpression.new
|
subject = Rule::Lint::EmptyExpression.new
|
||||||
|
|
||||||
def it_detects_empty_expression(code)
|
def it_detects_empty_expression(code)
|
||||||
it "detects empty expression" do
|
it "detects empty expression" do
|
||||||
s = Source.new code
|
s = Source.new code
|
||||||
rule = Rule::EmptyExpression.new
|
rule = Rule::Lint::EmptyExpression.new
|
||||||
rule.catch(s).should_not be_valid
|
rule.catch(s).should_not be_valid
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::EmptyExpression do
|
describe Rule::Lint::EmptyExpression do
|
||||||
it "passes if there is no empty expression" do
|
it "passes if there is no empty expression" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
def method()
|
def method()
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe HashDuplicatedKey do
|
describe HashDuplicatedKey do
|
||||||
subject = HashDuplicatedKey.new
|
subject = HashDuplicatedKey.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = LiteralInCondition.new
|
subject = LiteralInCondition.new
|
||||||
|
|
||||||
describe LiteralInCondition do
|
describe LiteralInCondition do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = LiteralInInterpolation.new
|
subject = LiteralInInterpolation.new
|
||||||
|
|
||||||
describe LiteralInInterpolation do
|
describe LiteralInInterpolation do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe PercentArrays do
|
describe PercentArrays do
|
||||||
subject = PercentArrays.new
|
subject = PercentArrays.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe RandZero do
|
describe RandZero do
|
||||||
subject = RandZero.new
|
subject = RandZero.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe ShadowedArgument do
|
describe ShadowedArgument do
|
||||||
subject = ShadowedArgument.new
|
subject = ShadowedArgument.new
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
private def check_shadowed(source, exceptions)
|
private def check_shadowed(source, exceptions)
|
||||||
s = Ameba::Source.new source
|
s = Ameba::Source.new source
|
||||||
Ameba::Rule::ShadowedException.new.catch(s).should_not be_valid
|
Ameba::Rule::Lint::ShadowedException.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain exceptions.join(", ")
|
s.issues.first.message.should contain exceptions.join(", ")
|
||||||
end
|
end
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe ShadowedException do
|
describe ShadowedException do
|
||||||
subject = ShadowedException.new
|
subject = ShadowedException.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe ShadowingOuterLocalVar do
|
describe ShadowingOuterLocalVar do
|
||||||
subject = ShadowingOuterLocalVar.new
|
subject = ShadowingOuterLocalVar.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe Syntax do
|
describe Syntax do
|
||||||
subject = Syntax.new
|
subject = Syntax.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe UnneededDisableDirective do
|
describe UnneededDisableDirective do
|
||||||
subject = UnneededDisableDirective.new
|
subject = UnneededDisableDirective.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = UnusedArgument.new
|
subject = UnusedArgument.new
|
||||||
subject.ignore_defs = false
|
subject.ignore_defs = false
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
describe UselessAssign do
|
describe UselessAssign do
|
||||||
subject = UselessAssign.new
|
subject = UselessAssign.new
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
subject = UselessConditionInWhen.new
|
subject = UselessConditionInWhen.new
|
||||||
|
|
||||||
describe UselessConditionInWhen do
|
describe UselessConditionInWhen do
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::ConstantNames.new
|
subject = Rule::Style::ConstantNames.new
|
||||||
|
|
||||||
private def it_reports_constant(code, expected)
|
private def it_reports_constant(code, expected)
|
||||||
it "reports constant name #{expected}" do
|
it "reports constant name #{expected}" do
|
||||||
s = Source.new code
|
s = Source.new code
|
||||||
Rule::ConstantNames.new.catch(s).should_not be_valid
|
Rule::Style::ConstantNames.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain expected
|
s.issues.first.message.should contain expected
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::ConstantNames do
|
describe Rule::Style::ConstantNames do
|
||||||
it "passes if type names are screaming-cased" do
|
it "passes if type names are screaming-cased" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
LUCKY_NUMBERS = [3, 7, 11]
|
LUCKY_NUMBERS = [3, 7, 11]
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::LargeNumbers.new
|
subject = Rule::Style::LargeNumbers.new
|
||||||
|
|
||||||
private def it_transforms(number, expected)
|
private def it_transforms(number, expected)
|
||||||
it "transforms large number #{number}" do
|
it "transforms large number #{number}" do
|
||||||
s = Source.new number
|
s = Source.new number
|
||||||
Rule::LargeNumbers.new.catch(s).should_not be_valid
|
Rule::Style::LargeNumbers.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain expected
|
s.issues.first.message.should contain expected
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::LargeNumbers do
|
describe Rule::Style::LargeNumbers do
|
||||||
it "passes if large number does not require underscore" do
|
it "passes if large number does not require underscore" do
|
||||||
s = Source.new %q(
|
s = Source.new %q(
|
||||||
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||||
|
@ -124,7 +124,7 @@ module Ameba
|
||||||
context "properties" do
|
context "properties" do
|
||||||
it "allows to configure integer min digits" do
|
it "allows to configure integer min digits" do
|
||||||
s = Source.new %q(1200000)
|
s = Source.new %q(1200000)
|
||||||
rule = Rule::LargeNumbers.new
|
rule = Rule::Style::LargeNumbers.new
|
||||||
rule.int_min_digits = 10
|
rule.int_min_digits = 10
|
||||||
rule.catch(s).should be_valid
|
rule.catch(s).should be_valid
|
||||||
end
|
end
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::MethodNames.new
|
subject = Rule::Style::MethodNames.new
|
||||||
|
|
||||||
private def it_reports_method_name(code, expected)
|
private def it_reports_method_name(code, expected)
|
||||||
it "reports method name #{expected}" do
|
it "reports method name #{expected}" do
|
||||||
s = Source.new code
|
s = Source.new code
|
||||||
Rule::MethodNames.new.catch(s).should_not be_valid
|
Rule::Style::MethodNames.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain expected
|
s.issues.first.message.should contain expected
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::MethodNames do
|
describe Rule::Style::MethodNames do
|
||||||
it "passes if method names are underscore-cased" do
|
it "passes if method names are underscore-cased" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
class Person
|
class Person
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
subject = NegatedConditionsInUnless.new
|
subject = NegatedConditionsInUnless.new
|
||||||
|
|
||||||
describe NegatedConditionsInUnless do
|
describe NegatedConditionsInUnless do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
subject = PredicateName.new
|
subject = PredicateName.new
|
||||||
|
|
||||||
describe PredicateName do
|
describe PredicateName do
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
describe RedundantBegin do
|
describe RedundantBegin do
|
||||||
subject = RedundantBegin.new
|
subject = RedundantBegin.new
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::TypeNames.new
|
subject = Rule::Style::TypeNames.new
|
||||||
|
|
||||||
private def it_reports_name(code, expected)
|
private def it_reports_name(code, expected)
|
||||||
it "reports type name #{expected}" do
|
it "reports type name #{expected}" do
|
||||||
s = Source.new code
|
s = Source.new code
|
||||||
Rule::TypeNames.new.catch(s).should_not be_valid
|
Rule::Style::TypeNames.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain expected
|
s.issues.first.message.should contain expected
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::TypeNames do
|
describe Rule::Style::TypeNames do
|
||||||
it "passes if type names are camelcased" do
|
it "passes if type names are camelcased" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
class ParseError < Exception
|
class ParseError < Exception
|
|
@ -1,6 +1,6 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
subject = UnlessElse.new
|
subject = UnlessElse.new
|
||||||
|
|
||||||
describe UnlessElse do
|
describe UnlessElse do
|
|
@ -1,17 +1,17 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
module Ameba
|
module Ameba
|
||||||
subject = Rule::VariableNames.new
|
subject = Rule::Style::VariableNames.new
|
||||||
|
|
||||||
private def it_reports_var_name(code, expected)
|
private def it_reports_var_name(code, expected)
|
||||||
it "reports method name #{expected}" do
|
it "reports method name #{expected}" do
|
||||||
s = Source.new code
|
s = Source.new code
|
||||||
Rule::VariableNames.new.catch(s).should_not be_valid
|
Rule::Style::VariableNames.new.catch(s).should_not be_valid
|
||||||
s.issues.first.message.should contain expected
|
s.issues.first.message.should contain expected
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe Rule::VariableNames do
|
describe Rule::Style::VariableNames do
|
||||||
it "passes if var names are underscore-cased" do
|
it "passes if var names are underscore-cased" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
class Greeting
|
class Greeting
|
|
@ -1,4 +1,4 @@
|
||||||
require "../../spec_helper"
|
require "../../../spec_helper"
|
||||||
|
|
||||||
valid_source = <<-EOF
|
valid_source = <<-EOF
|
||||||
a = 1
|
a = 1
|
||||||
|
@ -16,7 +16,7 @@ while true
|
||||||
end
|
end
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
subject = WhileTrue.new
|
subject = WhileTrue.new
|
||||||
|
|
||||||
describe WhileTrue do
|
describe WhileTrue do
|
|
@ -54,16 +54,16 @@ module Ameba
|
||||||
|
|
||||||
context "invalid syntax" do
|
context "invalid syntax" do
|
||||||
it "reports a syntax error" do
|
it "reports a syntax error" do
|
||||||
rules = [Rule::Syntax.new] of Rule::Base
|
rules = [Rule::Lint::Syntax.new] of Rule::Base
|
||||||
source = Source.new "def bad_syntax"
|
source = Source.new "def bad_syntax"
|
||||||
|
|
||||||
Runner.new(rules, [source], formatter).run
|
Runner.new(rules, [source], formatter).run
|
||||||
source.should_not be_valid
|
source.should_not be_valid
|
||||||
source.issues.first.rule.name.should eq Rule::Syntax.rule_name
|
source.issues.first.rule.name.should eq Rule::Lint::Syntax.rule_name
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not run other rules" do
|
it "does not run other rules" do
|
||||||
rules = [Rule::Syntax.new, Rule::ConstantNames.new] of Rule::Base
|
rules = [Rule::Lint::Syntax.new, Rule::Style::ConstantNames.new] of Rule::Base
|
||||||
source = Source.new %q(
|
source = Source.new %q(
|
||||||
MyBadConstant = 1
|
MyBadConstant = 1
|
||||||
|
|
||||||
|
@ -78,14 +78,14 @@ module Ameba
|
||||||
|
|
||||||
context "unneeded disables" do
|
context "unneeded disables" do
|
||||||
it "reports an issue if such disable exists" do
|
it "reports an issue if such disable exists" do
|
||||||
rules = [Rule::UnneededDisableDirective.new] of Rule::Base
|
rules = [Rule::Lint::UnneededDisableDirective.new] of Rule::Base
|
||||||
source = Source.new %(
|
source = Source.new %(
|
||||||
a = 1 # ameba:disable LineLength
|
a = 1 # ameba:disable LineLength
|
||||||
)
|
)
|
||||||
|
|
||||||
Runner.new(rules, [source], formatter).run
|
Runner.new(rules, [source], formatter).run
|
||||||
source.should_not be_valid
|
source.should_not be_valid
|
||||||
source.issues.first.rule.name.should eq Rule::UnneededDisableDirective.rule_name
|
source.issues.first.rule.name.should eq Rule::Lint::UnneededDisableDirective.rule_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
require "./ameba/*"
|
require "./ameba/*"
|
||||||
require "./ameba/ast/**"
|
require "./ameba/ast/**"
|
||||||
require "./ameba/rule/*"
|
require "./ameba/rule/**"
|
||||||
require "./ameba/formatter/*"
|
require "./ameba/formatter/*"
|
||||||
require "./ameba/support/*"
|
require "./ameba/support/*"
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ module Ameba::Formatter
|
||||||
private def rule_issues_map(issues)
|
private def rule_issues_map(issues)
|
||||||
Hash(Rule::Base, Array(Issue)).new.tap do |h|
|
Hash(Rule::Base, Array(Issue)).new.tap do |h|
|
||||||
issues.each do |issue|
|
issues.each do |issue|
|
||||||
next if issue.disabled? || issue.rule.is_a? Rule::Syntax
|
next if issue.disabled? || issue.rule.is_a? Rule::Lint::Syntax
|
||||||
h[issue.rule] ||= Array(Issue).new
|
h[issue.rule] ||= Array(Issue).new
|
||||||
h[issue.rule] << issue
|
h[issue.rule] << issue
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,8 @@ module Ameba::Rule
|
||||||
# List of names of the special rules, which
|
# List of names of the special rules, which
|
||||||
# behave differently than usual rules.
|
# behave differently than usual rules.
|
||||||
SPECIAL = [
|
SPECIAL = [
|
||||||
Syntax.rule_name,
|
Lint::Syntax.rule_name,
|
||||||
UnneededDisableDirective.rule_name,
|
Lint::UnneededDisableDirective.rule_name,
|
||||||
]
|
]
|
||||||
|
|
||||||
# Represents a base of all rules. In other words, all rules
|
# Represents a base of all rules. In other words, all rules
|
||||||
|
@ -96,7 +96,7 @@ module Ameba::Rule
|
||||||
end
|
end
|
||||||
|
|
||||||
protected def self.rule_name
|
protected def self.rule_name
|
||||||
name.gsub("Ameba::Rule::", "")
|
name.gsub("Ameba::Rule::", "").gsub("::", "/")
|
||||||
end
|
end
|
||||||
|
|
||||||
protected def self.subclasses
|
protected def self.subclasses
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
# A rule that disallows lines longer than `max_length` number of symbols.
|
# A rule that disallows lines longer than `max_length` number of symbols.
|
||||||
#
|
#
|
||||||
# YAML configuration example:
|
# YAML configuration example:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
# A rule that disallows trailing blank lines at the end of the source file.
|
# A rule that disallows trailing blank lines at the end of the source file.
|
||||||
#
|
#
|
||||||
# YAML configuration example:
|
# YAML configuration example:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Layout
|
||||||
# A rule that disallows trailing whitespaces.
|
# A rule that disallows trailing whitespaces.
|
||||||
#
|
#
|
||||||
# YAML configuration example:
|
# YAML configuration example:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows comparison to booleans.
|
# A rule that disallows comparison to booleans.
|
||||||
#
|
#
|
||||||
# For example, these are considered invalid:
|
# For example, these are considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows calls to debugger.
|
# A rule that disallows calls to debugger.
|
||||||
#
|
#
|
||||||
# This is because we don't want debugger breakpoints accidentally being
|
# This is because we don't want debugger breakpoints accidentally being
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows empty ensure statement.
|
# A rule that disallows empty ensure statement.
|
||||||
#
|
#
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows empty expressions.
|
# A rule that disallows empty expressions.
|
||||||
#
|
#
|
||||||
# This is considered invalid:
|
# This is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows duplicated keys in hash literals.
|
# A rule that disallows duplicated keys in hash literals.
|
||||||
#
|
#
|
||||||
# This is considered invalid:
|
# This is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows useless conditional statements that contain a literal
|
# A rule that disallows useless conditional statements that contain a literal
|
||||||
# in place of a variable or predicate function.
|
# in place of a variable or predicate function.
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows useless string interpolations
|
# A rule that disallows useless string interpolations
|
||||||
# that contain a literal value instead of a variable or function.
|
# that contain a literal value instead of a variable or function.
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows some unwanted symbols in percent array literals.
|
# A rule that disallows some unwanted symbols in percent array literals.
|
||||||
#
|
#
|
||||||
# For example, this is usually written by mistake:
|
# For example, this is usually written by mistake:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows `rand(0)` and `rand(1)` calls.
|
# A rule that disallows `rand(0)` and `rand(1)` calls.
|
||||||
# Such calls always return `0`.
|
# Such calls always return `0`.
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows shadowed arguments.
|
# A rule that disallows shadowed arguments.
|
||||||
#
|
#
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows a rescued exception that get shadowed by a
|
# A rule that disallows a rescued exception that get shadowed by a
|
||||||
# less specific exception being rescued before a more specific
|
# less specific exception being rescued before a more specific
|
||||||
# exception is rescued.
|
# exception is rescued.
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows the usage of the same name as outer local variables
|
# A rule that disallows the usage of the same name as outer local variables
|
||||||
# for block or proc arguments.
|
# for block or proc arguments.
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that reports invalid Crystal syntax.
|
# A rule that reports invalid Crystal syntax.
|
||||||
#
|
#
|
||||||
# For example, this syntax is invalid:
|
# For example, this syntax is invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that reports unneeded disable directives.
|
# A rule that reports unneeded disable directives.
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that reports unused arguments.
|
# A rule that reports unused arguments.
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows useless assignments.
|
# A rule that disallows useless assignments.
|
||||||
#
|
#
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Lint
|
||||||
# A rule that disallows useless conditions in when clause
|
# A rule that disallows useless conditions in when clause
|
||||||
# where it is guaranteed to always return the same result.
|
# where it is guaranteed to always return the same result.
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that enforces constant names to be in screaming case.
|
# A rule that enforces constant names to be in screaming case.
|
||||||
#
|
#
|
||||||
# For example, these constant names are considered valid:
|
# For example, these constant names are considered valid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows usage of large numbers without underscore.
|
# A rule that disallows usage of large numbers without underscore.
|
||||||
# These do not affect the value of the number, but can help read
|
# These do not affect the value of the number, but can help read
|
||||||
# large numbers more easily.
|
# large numbers more easily.
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that enforces method names to be in underscored case.
|
# A rule that enforces method names to be in underscored case.
|
||||||
#
|
#
|
||||||
# For example, these are considered valid:
|
# For example, these are considered valid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows negated conditions in unless.
|
# A rule that disallows negated conditions in unless.
|
||||||
#
|
#
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows tautological predicate names, meaning those that
|
# A rule that disallows tautological predicate names, meaning those that
|
||||||
# start with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).
|
# start with the prefix `has_` or the prefix `is_`. Ignores if the alternative isn't valid Crystal code (e.g. `is_404?`).
|
||||||
#
|
#
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows redundant begin blocks.
|
# A rule that disallows redundant begin blocks.
|
||||||
#
|
#
|
||||||
# Currently it is able to detect:
|
# Currently it is able to detect:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that enforces type names in camelcase manner.
|
# A rule that enforces type names in camelcase manner.
|
||||||
#
|
#
|
||||||
# For example, these are considered valid:
|
# For example, these are considered valid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows the use of an `else` block with the `unless`.
|
# A rule that disallows the use of an `else` block with the `unless`.
|
||||||
#
|
#
|
||||||
# For example, the rule considers these valid:
|
# For example, the rule considers these valid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that enforces variable names to be in underscored case.
|
# A rule that enforces variable names to be in underscored case.
|
||||||
#
|
#
|
||||||
# For example, these variable names are considered valid:
|
# For example, these variable names are considered valid:
|
|
@ -1,4 +1,4 @@
|
||||||
module Ameba::Rule
|
module Ameba::Rule::Style
|
||||||
# A rule that disallows the use of `while true` instead of using the idiomatic `loop`
|
# A rule that disallows the use of `while true` instead of using the idiomatic `loop`
|
||||||
#
|
#
|
||||||
# For example, this is considered invalid:
|
# For example, this is considered invalid:
|
|
@ -21,7 +21,7 @@ module Ameba
|
||||||
@formatter : Formatter::BaseFormatter
|
@formatter : Formatter::BaseFormatter
|
||||||
|
|
||||||
# A syntax rule which always inspects a source first
|
# A syntax rule which always inspects a source first
|
||||||
@syntax_rule = Rule::Syntax.new
|
@syntax_rule = Rule::Lint::Syntax.new
|
||||||
|
|
||||||
# Checks for unneeded disable directives. Always inspects a source last
|
# Checks for unneeded disable directives. Always inspects a source last
|
||||||
@unneeded_disable_directive_rule : Rule::Base?
|
@unneeded_disable_directive_rule : Rule::Base?
|
||||||
|
@ -43,7 +43,7 @@ module Ameba
|
||||||
|
|
||||||
@unneeded_disable_directive_rule =
|
@unneeded_disable_directive_rule =
|
||||||
config.rules
|
config.rules
|
||||||
.find &.name.==(Rule::UnneededDisableDirective.rule_name)
|
.find &.name.==(Rule::Lint::UnneededDisableDirective.rule_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
# :nodoc:
|
# :nodoc:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue