rf-stylez 0.2.12 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7df6e0db6c26722063fd17eaeba95892bdc7a83a3f9157f246f91aeea104d671
4
- data.tar.gz: a0b68384bc85436ed593a5fbbe734896b08498ea50d0d35fc6be1bc1e6af5c87
3
+ metadata.gz: 4637e73990ffdf9494d85b346bef5679a32cfb2f7dd80cf4a619e2367a16f0e3
4
+ data.tar.gz: b8bc8869394241260e18f9fad024473a8ead0330fe06d099ca1af56c1b32dff7
5
5
  SHA512:
6
- metadata.gz: beb10f74bd156bc68abfb38bff258f483842fe115b9de58b1c8f641a032f121fbc3eb10400941ecf45845b3d5899cfc087bd1ec4e5d58fc9c5c3059ae3f9c611
7
- data.tar.gz: 288d7639d488622900c7a801350120aed9a88825d4215386df27242e68774e67a37e0e666ad83969df40e5f313bce9223df7946a63a4ae35a57f08b8862bcc85
6
+ metadata.gz: 501fc3fb8b183136ae320a937ca6e02f52162d057c7d93897e1424fe6a25f8b3bb6410ccf95de8a3b959854d4f7f6f455e9704ea7337e27cc5c932d1a9923e66
7
+ data.tar.gz: 2a969a0daac927c764988423b3c03aa283e8ee202d62e11c323c144dc3dc4bdf7752d348abb48cbcb74cb80c1595ef3bc445eb358ca2848b53da3065c1490faf
data/lib/rf/stylez.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  require "rf/stylez/version"
2
2
  require 'rubocop/cop/lint/no_env'
3
3
  require 'rubocop/cop/lint/no_http_party'
4
+ require 'rubocop/cop/lint/obscure'
5
+ require 'rubocop/cop/lint/no_grape_api'
6
+ require 'rubocop/cop/lint/use_positive_int32_validator'
4
7
 
5
8
 
6
9
  module Rf
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module Rf
3
3
  module Stylez
4
- VERSION = '0.2.12'
4
+ VERSION = '0.2.15'
5
5
  end
6
6
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Cop
5
+ module Lint
6
+ # @example
7
+ # # bad
8
+ # class Foo < Grape::API
9
+ #
10
+ # # good
11
+ # class Foo < Api::AuthBase
12
+ #
13
+ # # good
14
+ # class Foo < Api::Base
15
+ class NoGrapeAPI < Cop
16
+ MSG = 'Prefer inheriting `Api::AuthBase` or `Api::Base` instead of `Grape::API`.'.freeze
17
+
18
+ def_node_matcher :inherits_Grape_API?, '(class (const ...) (const (const nil? :Grape) :API) ...)'
19
+
20
+ def on_class(node)
21
+ return unless inherits_Grape_API?(node)
22
+ add_offense(node)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+ require 'byebug'
3
+
4
+ module RuboCop
5
+ module Cop
6
+ module Lint
7
+ # @example
8
+ # # bad
9
+ # params do
10
+ # requires :id, type: Integer
11
+ # end
12
+ #
13
+ # # good
14
+ # params do
15
+ # requires :id, type: Integer, positive_int32: true
16
+ # end
17
+ class UsePositiveInt32Validator < Cop
18
+ MSG = 'If this Integer maps to a postgres Integer column, validate with `positive_int32: true`'.freeze
19
+
20
+ # if a params block, return all the nodes in it
21
+ def_node_matcher :is_grape_params?, '(block (send nil? :params) (args) $...)'
22
+ # check if the param is `requires` / `optional`
23
+ def_node_search :find_params_hashes, <<~PATTERN
24
+ (send nil? {:requires :optional}
25
+ (sym _)
26
+ $(hash ...) ...)
27
+ PATTERN
28
+ # check if hash contains `type: Integer`
29
+ def_node_search :is_type_integer?, '(pair (sym :type) (const nil? :Integer))'
30
+ # check if the hash contains the `positive_int32` validator
31
+ def_node_search :validates_integer?, '(pair (sym :positive_int32) (true))'
32
+
33
+ def on_block(node)
34
+ params = is_grape_params?(node)
35
+ return unless
36
+ hash = find_params_hashes(node)
37
+ hash&.each do |param|
38
+ if is_type_integer?(param) && !validates_integer?(param)
39
+ add_offense(param)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
data/ruby/rubocop.yml CHANGED
@@ -19,12 +19,17 @@ inherit_from:
19
19
  require:
20
20
  - rf/stylez
21
21
 
22
+ # Custom cops
22
23
  Lint/NoENV:
23
24
  Enabled: true
24
25
  Lint/NoHTTParty:
25
26
  Enabled: true
26
27
  Lint/Obscure:
27
28
  Enabled: true
29
+ Lint/NoGrapeAPI:
30
+ Enabled: true
31
+ Lint/UserPositiveInt32Validator:
32
+ Enabled: true
28
33
 
29
34
  # Good style cops
30
35
  Layout/BlockAlignment:
@@ -105,6 +110,10 @@ Naming/FileName:
105
110
  Naming/MethodName:
106
111
  Enabled: true
107
112
 
113
+ Style/SpecialGlobalVars:
114
+ Enabled: true
115
+ Style/GlobalVars:
116
+ Enabled: true
108
117
  Style/FrozenStringLiteralComment:
109
118
  Enabled: true
110
119
  EnforcedStyle: always
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rf-stylez
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emanuel Evans
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-12 00:00:00.000000000 Z
11
+ date: 2018-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -100,8 +100,10 @@ files:
100
100
  - lib/rf/stylez.rb
101
101
  - lib/rf/stylez/version.rb
102
102
  - lib/rubocop/cop/lint/no_env.rb
103
+ - lib/rubocop/cop/lint/no_grape_api.rb
103
104
  - lib/rubocop/cop/lint/no_http_party.rb
104
105
  - lib/rubocop/cop/lint/obscure.rb
106
+ - lib/rubocop/cop/lint/use_positive_int32_validator.rb
105
107
  - rf-stylez.gemspec
106
108
  - ruby/rubocop.yml
107
109
  - ruby/rubocop_lint.yml