eager_eye 1.1.10 → 1.1.11
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 +9 -0
- data/README.md +1 -1
- data/lib/eager_eye/detectors/custom_method_query.rb +8 -12
- 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: 200f52cfc9b2d47ee338155372eded81c115c5c05578e6ff89e689f148fabac5
|
|
4
|
+
data.tar.gz: 3b236fff4d78662c30140b3e429d222defed03100b2c8d6928711886bd7c525a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a09fbc10c6f944c9c42f31723dc0bf248eff29691a35fbc31f6a4e21836224225863eb625ac33e818a30b2e12b119831e02ec2f0d0689476e014a9ab0d5331e
|
|
7
|
+
data.tar.gz: 36dff575a0277abc141848a1866a057f31fcefe6fdecd861a32fcad7120167a56120f0ed8a507c9ff9fdcb4ac54be72be64a475ca0b5105574ace91e26618f8b
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.1.11] - 2026-01-13
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **CustomMethodQuery False Positive** - Skip `count`, `sum`, `find` on safe collections
|
|
15
|
+
- `id.to_s.count` no longer flagged (scalar count)
|
|
16
|
+
- `array.count` no longer flagged inside iteration
|
|
17
|
+
- Expanded safe transform methods (`to_s`, `to_i`, `to_a`, `chars`, `bytes`)
|
|
18
|
+
|
|
10
19
|
## [1.1.10] - 2026-01-12
|
|
11
20
|
|
|
12
21
|
### 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.11-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>
|
|
@@ -5,10 +5,8 @@ module EagerEye
|
|
|
5
5
|
class CustomMethodQuery < Base
|
|
6
6
|
QUERY_METHODS = %i[where find_by find_by! exists? find first last take pluck ids count sum average minimum
|
|
7
7
|
maximum].freeze
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
STRING_ARRAY_METHODS = %i[split].freeze
|
|
11
|
-
BRACKET_ARRAY_METHODS = %i[[]].freeze
|
|
8
|
+
SAFE_QUERY_METHODS = %i[first last take count sum find size length].freeze
|
|
9
|
+
SAFE_TRANSFORM_METHODS = %i[keys values split [] params sort pluck ids to_s to_a to_i chars bytes].freeze
|
|
12
10
|
ITERATION_METHODS = %i[each map select find_all reject collect detect find_index flat_map].freeze
|
|
13
11
|
|
|
14
12
|
def self.detector_name
|
|
@@ -67,9 +65,9 @@ module EagerEye
|
|
|
67
65
|
end
|
|
68
66
|
|
|
69
67
|
def skip_array_method?(node, block_var, is_array_collection)
|
|
70
|
-
return true if
|
|
68
|
+
return true if receiver_ends_with_safe_transform_method?(node.children[0])
|
|
71
69
|
|
|
72
|
-
|
|
70
|
+
SAFE_QUERY_METHODS.include?(node.children[1]) &&
|
|
73
71
|
is_array_collection && receiver_is_only_block_var?(node.children[0], block_var)
|
|
74
72
|
end
|
|
75
73
|
|
|
@@ -113,18 +111,16 @@ module EagerEye
|
|
|
113
111
|
|
|
114
112
|
def check_send_collection?(node, definitions)
|
|
115
113
|
method_name = node.children[1]
|
|
116
|
-
return true if %i[map select collect flat_map
|
|
117
|
-
|
|
114
|
+
return true if %i[map select collect flat_map uniq compact].include?(method_name)
|
|
115
|
+
return true if SAFE_TRANSFORM_METHODS.include?(method_name)
|
|
118
116
|
|
|
119
117
|
collection_is_array?(node.children[0], definitions)
|
|
120
118
|
end
|
|
121
119
|
|
|
122
|
-
def
|
|
120
|
+
def receiver_ends_with_safe_transform_method?(node)
|
|
123
121
|
return false unless node.is_a?(Parser::AST::Node) && node.type == :send
|
|
124
122
|
|
|
125
|
-
|
|
126
|
-
STRING_ARRAY_METHODS.include?(node.children[1]) ||
|
|
127
|
-
BRACKET_ARRAY_METHODS.include?(node.children[1])
|
|
123
|
+
SAFE_TRANSFORM_METHODS.include?(node.children[1])
|
|
128
124
|
end
|
|
129
125
|
|
|
130
126
|
def add_issue(node)
|
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.11
|
|
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-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ast
|