diff --git a/shard.yml b/shard.yml index 8787db0a..75e60809 100644 --- a/shard.yml +++ b/shard.yml @@ -1,5 +1,5 @@ name: ameba -version: 0.14.1 +version: 0.14.2 authors: - Vitalii Elenhaupt diff --git a/spec/ameba/rule/style/is_a_filter_spec.cr b/spec/ameba/rule/style/is_a_filter_spec.cr index 1413600c..a45a96ed 100644 --- a/spec/ameba/rule/style/is_a_filter_spec.cr +++ b/spec/ameba/rule/style/is_a_filter_spec.cr @@ -26,6 +26,15 @@ module Ameba::Rule::Style subject.catch(source).should_not be_valid end + it "does not report if there .is_a? call within block with multiple arguments" do + source = Source.new %( + t.all? { |_, v| v.is_a?(String) } + t.all? { |foo, bar| foo.is_a?(String) } + t.all? { |foo, bar| bar.is_a?(String) } + ) + subject.catch(source).should be_valid + end + context "properties" do it "allows to configure filter_names" do source = Source.new %( diff --git a/spec/ameba/rule/style/verbose_block_spec.cr b/spec/ameba/rule/style/verbose_block_spec.cr index f6f9b06f..f324263e 100644 --- a/spec/ameba/rule/style/verbose_block_spec.cr +++ b/spec/ameba/rule/style/verbose_block_spec.cr @@ -92,6 +92,7 @@ module Ameba::Rule::Style .catch(source).should be_valid rule .tap(&.exclude_prefix_operators = false) + .tap(&.exclude_operators = false) .catch(source).should_not be_valid end @@ -190,7 +191,10 @@ module Ameba::Rule::Style (1..3).map { |i| i.in?(1, *foo, 3, **bar) } (1..3).join(separator: '.') { |i| i.to_s } ) - subject.catch(source).should_not be_valid + rule = VerboseBlock.new + rule + .tap(&.exclude_operators = false) + .catch(source).should_not be_valid source.issues.size.should eq(short_block_variants.size) source.issues.each_with_index do |issue, i| diff --git a/src/ameba/rule/performance/map_instead_of_block.cr b/src/ameba/rule/performance/map_instead_of_block.cr index 377130fc..a00a4698 100644 --- a/src/ameba/rule/performance/map_instead_of_block.cr +++ b/src/ameba/rule/performance/map_instead_of_block.cr @@ -24,6 +24,7 @@ module Ameba::Rule::Performance # ``` class MapInsteadOfBlock < Base properties do + enabled false description "Identifies usage of `join/sum/product` calls that follow `map`." end diff --git a/src/ameba/rule/style/is_a_filter.cr b/src/ameba/rule/style/is_a_filter.cr index 151cd2c4..6dd4a777 100644 --- a/src/ameba/rule/style/is_a_filter.cr +++ b/src/ameba/rule/style/is_a_filter.cr @@ -61,6 +61,7 @@ module Ameba::Rule::Style return unless (body = block.body).is_a?(Crystal::IsA) return unless (path = body.const).is_a?(Crystal::Path) return unless body.obj.is_a?(Crystal::Var) + return if block.args.size > 1 name = path.names.join("::") name = "::#{name}" if path.global? && !body.nil_check? diff --git a/src/ameba/rule/style/verbose_block.cr b/src/ameba/rule/style/verbose_block.cr index 433768ca..62d52ca0 100644 --- a/src/ameba/rule/style/verbose_block.cr +++ b/src/ameba/rule/style/verbose_block.cr @@ -22,7 +22,7 @@ module Ameba::Rule::Style # ExcludeMultipleLineBlocks: true # ExcludeCallsWithBlocks: true # ExcludePrefixOperators: true - # ExcludeOperators: false + # ExcludeOperators: true # ExcludeSetters: false # MaxLineLength: ~ # MaxLength: 50 # use ~ to disable @@ -34,7 +34,7 @@ module Ameba::Rule::Style exclude_multiple_line_blocks true exclude_calls_with_block true exclude_prefix_operators true - exclude_operators false + exclude_operators true exclude_setters false max_line_length : Int32? = nil # 100