simplycop 2.3.2 → 2.5.0

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: 2cd8f4d3b21badbb734986a32b7aa1283414acfe91d8f73f12131335a8b52b60
4
- data.tar.gz: d8a6a4c018995bc720ddc50cd026735a26c3ed23e6eebe7b09330be30f3e804b
3
+ metadata.gz: fd09f4e7858d5143a39f3666e79cb20bf1f458720decf82b23149d4f7aba71e1
4
+ data.tar.gz: b35dc71c87ff97229dda37d0daa3e2c1c5f5003b52b4d3c6649bcde166c9bb7c
5
5
  SHA512:
6
- metadata.gz: 480339d5068f0870e62c660559529f879c8eebc33f770a69942f69b2597f2c1364324bc9360e2f53eba86e06a7d80e8cb0d787d700ddd7d4fa1c5b83f7ca5716
7
- data.tar.gz: 1fc5096f3e507f71e3ea1749772c5b866c291109ce10e512a010938ce9bb1f11735e291ef715edb4a843295dd32ddc4de84d9e821121603011d96682fa772db4
6
+ metadata.gz: 006b209f8bf36036bf7a902c7377793c8b73c2d7683ff94dd5d175dd93f94ccef005f9fc40c8cc6e3401c24874f357c83dbaf221097be62f8e1cee7d1bc39d57
7
+ data.tar.gz: 99e00ad5963e97f95041879c72e37e34b1fb7412706d547e90652408337c62143a334dd8a6202dac9ae55c8d2f6d964f0d08ace104ec00fc7276a45183486cd7
@@ -1,6 +1,7 @@
1
1
  require:
2
2
  - './lib/simplycop/custom_cops/timecop_without_block.rb'
3
3
  - './lib/simplycop/custom_cops/dont_print_all_env.rb'
4
+ - './lib/simplycop/custom_cops/no_foreground_indices.rb'
4
5
 
5
6
  AllCops:
6
7
  ExtraDetails: true
@@ -15,3 +16,10 @@ CustomCops/DontPrintAllEnv:
15
16
  Enabled: true
16
17
  Details: >-
17
18
  This cop checks if someone accidentally print all environment variables as they may contain secrets.
19
+
20
+ CustomCops/NoForegroundIndices:
21
+ Enabled: true
22
+ Details: We want to prevent adding Mongoid indices that are not in background, otherwise the collection will lock during indexing.
23
+
24
+ Include:
25
+ - app/models/*
data/.simplycop_lint.yml CHANGED
@@ -212,7 +212,6 @@ Lint/NextWithoutAccumulator:
212
212
  Lint/NoReturnInBeginEndBlocks:
213
213
  Enabled: true
214
214
 
215
- # Overridden to false in Chopin
216
215
  Lint/NonAtomicFileOperation:
217
216
  Enabled: true
218
217
 
@@ -294,7 +293,6 @@ Lint/RequireParentheses:
294
293
  Lint/RequireRangeParentheses:
295
294
  Enabled: true
296
295
 
297
- # Overridden to false in Chopin
298
296
  Lint/RequireRelativeSelfPath:
299
297
  Enabled: true
300
298
 
@@ -25,7 +25,6 @@ Security/CheckForVulnerableCode:
25
25
 
26
26
  # Standard security cops
27
27
 
28
- # Overridden to false in Chopin
29
28
  Security/CompoundHash:
30
29
  Enabled: true
31
30
 
data/.simplycop_style.yml CHANGED
@@ -16,7 +16,6 @@ Style/ArgumentsForwarding:
16
16
  Style/ArrayCoercion:
17
17
  Enabled: true
18
18
 
19
- # Overridden to false in Chopin
20
19
  Style/ArrayIntersect:
21
20
  Enabled: true
22
21
 
@@ -825,7 +824,6 @@ Style/WhileUntilDo:
825
824
  Style/WhileUntilModifier:
826
825
  Enabled: true
827
826
 
828
- # Overridden to false in Chopin
829
827
  Style/WordArray:
830
828
  EnforcedStyle: brackets
831
829
 
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CustomCops
4
+ # This cop checks for the presence of Mongoid indexes that have not been
5
+ # flagged with the flag `background: true`.
6
+ #
7
+ # @example
8
+ # #bad
9
+ # index(reference: 1)
10
+ #
11
+ # #good
12
+ # index({ reference: 1 }, { background: true })
13
+ #
14
+ class NoForegroundIndices < RuboCop::Cop::Cop
15
+ MSG = 'Do not create indices that lack the background flag.'
16
+
17
+ def_node_matcher :model_index?, <<~PATTERN
18
+ (send nil? :index $...)
19
+ PATTERN
20
+
21
+ def_node_matcher :hash?, <<~PATTERN
22
+ (hash $...)
23
+ PATTERN
24
+
25
+ def_node_matcher :background_pair?, <<~PATTERN
26
+ (pair
27
+ (sym :background)
28
+ (:true)
29
+ )
30
+ PATTERN
31
+
32
+ def on_send(node)
33
+ model_index?(node) do |_fields, options|
34
+ add_offense(node, location: :selector) unless background_enabled?(options)
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def background_enabled?(hash)
41
+ return false if hash.nil? || !hash?(hash)
42
+
43
+ hash.pairs.any? { |pair| background_pair?(pair) }
44
+ end
45
+ end
46
+ end
@@ -7,5 +7,5 @@
7
7
  #
8
8
 
9
9
  module Simplycop
10
- VERSION = '2.3.2'
10
+ VERSION = '2.5.0'
11
11
  end
data/simplycop.gemspec CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'rubocop-ast', '1.32.3'
22
22
  spec.add_dependency 'rubocop-capybara', '2.21.0'
23
23
  spec.add_dependency 'rubocop-factory_bot', '2.26.1'
24
- spec.add_dependency 'rubocop-performance', '1.21.1'
25
- spec.add_dependency 'rubocop-rails', '2.26.1'
24
+ spec.add_dependency 'rubocop-performance', '1.22.1'
25
+ spec.add_dependency 'rubocop-rails', '2.26.2'
26
26
  spec.add_dependency 'rubocop-rspec', '3.0.5'
27
27
  spec.add_dependency 'rubocop-rspec_rails', '2.30.0'
28
28
  spec.add_development_dependency 'bundler', '>= 2.2.15'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simplycop
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simply Business
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-11 00:00:00.000000000 Z
11
+ date: 2024-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -72,28 +72,28 @@ dependencies:
72
72
  requirements:
73
73
  - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: 1.21.1
75
+ version: 1.22.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: 1.21.1
82
+ version: 1.22.1
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 2.26.1
89
+ version: 2.26.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 2.26.1
96
+ version: 2.26.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -218,6 +218,7 @@ files:
218
218
  - lib/simplycop/custom_cops/dont_print_all_env.rb
219
219
  - lib/simplycop/custom_cops/instance_eval.rb
220
220
  - lib/simplycop/custom_cops/method_missing.rb
221
+ - lib/simplycop/custom_cops/no_foreground_indices.rb
221
222
  - lib/simplycop/custom_cops/timecop_without_block.rb
222
223
  - lib/simplycop/custom_cops/variable_name_shadowing_method.rb
223
224
  - lib/simplycop/security/check_for_vulnerable_code.rb