eager_eye 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 60b775a876ad65129457036e90c076a5e14b789f9049ede284c86bacbebba9b8
4
- data.tar.gz: fa8080dd194f991025218fa0188d4aef6eb37e3c2210f6f7c1a5710894070aa6
3
+ metadata.gz: b43ce92b9c6437cbf79890d4bac363d23a81c1297429e70bd7d47ffda5c179ef
4
+ data.tar.gz: 913b85723206ed1c0b9d193bbad46394ff8bbf4cce6cbacf9b9e33ef6e7f7be3
5
5
  SHA512:
6
- metadata.gz: 78d62d608b7326a8fae187fd1cc6ff66bd9d5a2d3896a2ae3457017ab315002a56965fc6a6fe57dec48036e7c9c37eb38795263f6a6ff34dd0f119d0bbe9d175
7
- data.tar.gz: d1a22234a0fc7265f42b27e91301730dbba9b1845609f5150a93fbc2c35a2ba22071babb35e46e67db5669693641791dd2e0d055881a8323a4e54fdd4bd0b667
6
+ metadata.gz: d065cbff74e8d0499fc9cd2218b1e0c1ed2629200cb8447b0c9fd53bfc4814c914b942514872cd8b76181f41c773fb50737f108dc954fc58d1ad64cec6469991
7
+ data.tar.gz: 21b23f430fecc8a4137e18e55a0c9d0bcfb40ebb7c0c36adaff7c92f86eedec895ec37dd1073b0124199fe43833aed8d04fdc55107e3a1532a726f5c060f6b28
data/CHANGELOG.md CHANGED
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.1.8] - 2026-01-10
11
+
12
+ ### Fixed
13
+
14
+ - **CustomMethodQuery False Positive** - Skip `[]` (bracket access) chains
15
+ - `data["items"].first` no longer flagged as ActiveRecord query
16
+ - Recognizes bracket access returns Array/Hash for subsequent enumerable calls
17
+
10
18
  ## [1.1.7] - 2026-01-09
11
19
 
12
20
  ### Fixed
data/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  <p align="center">
12
12
  <a href="https://github.com/hamzagedikkaya/eager_eye/actions/workflows/main.yml"><img src="https://github.com/hamzagedikkaya/eager_eye/actions/workflows/main.yml/badge.svg" alt="CI"></a>
13
- <a href="https://rubygems.org/gems/eager_eye"><img src="https://img.shields.io/badge/gem-v1.1.7-red.svg" alt="Gem Version"></a>
13
+ <a href="https://rubygems.org/gems/eager_eye"><img src="https://img.shields.io/badge/gem-v1.1.8-red.svg" alt="Gem Version"></a>
14
14
  <a href="https://github.com/hamzagedikkaya/eager_eye"><img src="https://img.shields.io/badge/coverage-95%25-brightgreen.svg" alt="Coverage"></a>
15
15
  <a href="https://www.ruby-lang.org/"><img src="https://img.shields.io/badge/ruby-%3E%3D%203.1-ruby.svg" alt="Ruby"></a>
16
16
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
@@ -8,6 +8,7 @@ module EagerEye
8
8
  ARRAY_METHODS = %i[first last take].freeze
9
9
  HASH_ARRAY_METHODS = %i[keys values].freeze
10
10
  STRING_ARRAY_METHODS = %i[split].freeze
11
+ BRACKET_ARRAY_METHODS = %i[[]].freeze
11
12
  ITERATION_METHODS = %i[each map select find_all reject collect detect find_index flat_map].freeze
12
13
 
13
14
  def self.detector_name
@@ -64,10 +65,10 @@ module EagerEye
64
65
  end
65
66
 
66
67
  def skip_array_method?(node, block_var, is_array_collection)
67
- return false unless ARRAY_METHODS.include?(node.children[1])
68
+ return true if receiver_ends_with_hash_array_method?(node.children[0])
68
69
 
69
- receiver_ends_with_hash_array_method?(node.children[0]) ||
70
- (is_array_collection && receiver_is_only_block_var?(node.children[0], block_var))
70
+ ARRAY_METHODS.include?(node.children[1]) &&
71
+ is_array_collection && receiver_is_only_block_var?(node.children[0], block_var)
71
72
  end
72
73
 
73
74
  def receiver_is_only_block_var?(node, block_var)
@@ -97,7 +98,8 @@ module EagerEye
97
98
 
98
99
  case node.type
99
100
  when :array then true
100
- when :send then %i[map select collect flat_map to_a uniq compact keys values split].include?(node.children[1])
101
+ when :send then %i[map select collect flat_map to_a uniq compact keys values split
102
+ []].include?(node.children[1])
101
103
  else false
102
104
  end
103
105
  end
@@ -105,7 +107,9 @@ module EagerEye
105
107
  def receiver_ends_with_hash_array_method?(node)
106
108
  return false unless node.is_a?(Parser::AST::Node) && node.type == :send
107
109
 
108
- HASH_ARRAY_METHODS.include?(node.children[1]) || STRING_ARRAY_METHODS.include?(node.children[1])
110
+ HASH_ARRAY_METHODS.include?(node.children[1]) ||
111
+ STRING_ARRAY_METHODS.include?(node.children[1]) ||
112
+ BRACKET_ARRAY_METHODS.include?(node.children[1])
109
113
  end
110
114
 
111
115
  def add_issue(node)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EagerEye
4
- VERSION = "1.1.7"
4
+ VERSION = "1.1.8"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eager_eye
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - hamzagedikkaya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-01-09 00:00:00.000000000 Z
11
+ date: 2026-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast