eager_eye 1.1.1 → 1.1.3
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/README.md +1 -1
- data/lib/eager_eye/detectors/callback_query.rb +21 -4
- data/lib/eager_eye/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 928603853f971cca5717d7db1ca527da41562b4aef18c27b37be3b2824a4993e
|
|
4
|
+
data.tar.gz: b3e7af83cfb0085a6e34ad65e3e633da6d3eaa517d548b530504dbb6f0a7c5c4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1879d46b6a428002adfc1d241b763fb8b59c5f6a0c82656459dbd389fe04d37ffcdf39394185141ce78837cec72386b689147171291a494f7484dbcae0bfe438
|
|
7
|
+
data.tar.gz: b6cdafbe35419653bd4d374504b1d32475c9cab7fc7ec41d8612c77924589aa1d950c819bd901f0196cdf1de33b2f114bbbbb5fcb11defb7d4624f5043356ee2
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.1.3] - 2026-01-04
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **CallbackQuery False Positive** - Skip iterations over constants, arrays, and ranges
|
|
15
|
+
- `CONDITIONS.each { |c| ... }` no longer triggers warning
|
|
16
|
+
- `[:a, :b].each { |x| ... }` and `(1..5).each { |i| ... }` are now ignored
|
|
17
|
+
|
|
18
|
+
## [1.1.2] - 2026-01-04
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **CallbackQuery False Positive** - Only flag iterations that contain actual AR query methods
|
|
23
|
+
- Non-AR iterations (Redis, Sidekiq, mailers) are no longer flagged
|
|
24
|
+
- `Sidekiq::ScheduledSet.new.select { |job| ... }.each(&:delete)` no longer triggers warning
|
|
25
|
+
|
|
10
26
|
## [1.1.1] - 2026-01-03
|
|
11
27
|
|
|
12
28
|
### 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.
|
|
13
|
+
<a href="https://rubygems.org/gems/eager_eye"><img src="https://img.shields.io/badge/gem-v1.1.3-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>
|
|
@@ -85,8 +85,10 @@ module EagerEye
|
|
|
85
85
|
|
|
86
86
|
if iteration_block?(node)
|
|
87
87
|
block_var = extract_block_variable(node)
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if block_var && contains_ar_query_on_variable?(node, block_var)
|
|
89
|
+
add_iteration_issue(node, method_name, callback_type)
|
|
90
|
+
find_query_calls_in_block(node, method_name, callback_type, block_var)
|
|
91
|
+
end
|
|
90
92
|
end
|
|
91
93
|
|
|
92
94
|
node.children.each { |child| find_iterations_with_queries(child, method_name, callback_type) }
|
|
@@ -107,8 +109,16 @@ module EagerEye
|
|
|
107
109
|
end
|
|
108
110
|
|
|
109
111
|
def iteration_block?(node)
|
|
110
|
-
node.type == :block && node.children[0]&.type == :send
|
|
111
|
-
|
|
112
|
+
return false unless node.type == :block && node.children[0]&.type == :send
|
|
113
|
+
return false unless ITERATION_METHODS.include?(node.children[0].children[1])
|
|
114
|
+
|
|
115
|
+
!static_collection?(node.children[0].children[0])
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def static_collection?(node)
|
|
119
|
+
return true unless node.is_a?(Parser::AST::Node)
|
|
120
|
+
|
|
121
|
+
%i[array const irange erange].include?(node.type)
|
|
112
122
|
end
|
|
113
123
|
|
|
114
124
|
def add_query_issue(node, method_name, callback_type)
|
|
@@ -155,6 +165,13 @@ module EagerEye
|
|
|
155
165
|
false
|
|
156
166
|
end
|
|
157
167
|
end
|
|
168
|
+
|
|
169
|
+
def contains_ar_query_on_variable?(node, block_var)
|
|
170
|
+
return false unless node.is_a?(Parser::AST::Node)
|
|
171
|
+
return true if query_call?(node) && receiver_chain_starts_with?(node.children[0], block_var)
|
|
172
|
+
|
|
173
|
+
node.children.any? { |child| contains_ar_query_on_variable?(child, block_var) }
|
|
174
|
+
end
|
|
158
175
|
end
|
|
159
176
|
end
|
|
160
177
|
end
|
data/lib/eager_eye/version.rb
CHANGED
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.
|
|
4
|
+
version: 1.1.3
|
|
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-
|
|
11
|
+
date: 2026-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ast
|