rubocop-github 0.18.0 → 0.20.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -17
- data/STYLEGUIDE.md +395 -92
- data/config/default.yml +1400 -46
- data/config/default_cops.yml +3 -0
- data/config/default_pending.yml +6 -0
- data/config/rails.yml +364 -80
- data/config/rails_cops.yml +50 -0
- data/config/rails_pending.yml +20 -0
- data/lib/rubocop/cop/github/rails_view_render_shorthand.rb +8 -2
- data/lib/rubocop/cop/github.rb +2 -11
- data/lib/rubocop/github/inject.rb +27 -0
- data/lib/rubocop/github.rb +9 -0
- data/lib/rubocop-github-rails.rb +16 -0
- data/lib/rubocop-github.rb +9 -0
- metadata +17 -12
- data/guides/rails-render-inline.md +0 -27
- data/lib/rubocop/cop/github/rails_application_record.rb +0 -29
- data/lib/rubocop/cop/github/rails_render_inline.rb +0 -29
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.20.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.37'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: '1.37'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rubocop-performance
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.15'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.15'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rubocop-rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.17'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.17'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: actionview
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,23 +104,28 @@ files:
|
|
104
104
|
- README.md
|
105
105
|
- STYLEGUIDE.md
|
106
106
|
- config/default.yml
|
107
|
+
- config/default_cops.yml
|
108
|
+
- config/default_pending.yml
|
107
109
|
- config/rails.yml
|
110
|
+
- config/rails_cops.yml
|
111
|
+
- config/rails_pending.yml
|
108
112
|
- guides/rails-controller-render-shorthand.md
|
109
|
-
- guides/rails-render-inline.md
|
110
113
|
- guides/rails-render-literal.md
|
114
|
+
- lib/rubocop-github-rails.rb
|
115
|
+
- lib/rubocop-github.rb
|
111
116
|
- lib/rubocop/cop/github.rb
|
112
117
|
- lib/rubocop/cop/github/insecure_hash_algorithm.rb
|
113
|
-
- lib/rubocop/cop/github/rails_application_record.rb
|
114
118
|
- lib/rubocop/cop/github/rails_controller_render_action_symbol.rb
|
115
119
|
- lib/rubocop/cop/github/rails_controller_render_literal.rb
|
116
120
|
- lib/rubocop/cop/github/rails_controller_render_paths_exist.rb
|
117
121
|
- lib/rubocop/cop/github/rails_controller_render_shorthand.rb
|
118
|
-
- lib/rubocop/cop/github/rails_render_inline.rb
|
119
122
|
- lib/rubocop/cop/github/rails_render_object_collection.rb
|
120
123
|
- lib/rubocop/cop/github/rails_view_render_literal.rb
|
121
124
|
- lib/rubocop/cop/github/rails_view_render_paths_exist.rb
|
122
125
|
- lib/rubocop/cop/github/rails_view_render_shorthand.rb
|
123
126
|
- lib/rubocop/cop/github/render_literal_helpers.rb
|
127
|
+
- lib/rubocop/github.rb
|
128
|
+
- lib/rubocop/github/inject.rb
|
124
129
|
homepage: https://github.com/github/rubocop-github
|
125
130
|
licenses:
|
126
131
|
- MIT
|
@@ -140,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
145
|
- !ruby/object:Gem::Version
|
141
146
|
version: '0'
|
142
147
|
requirements: []
|
143
|
-
rubygems_version: 3.
|
148
|
+
rubygems_version: 3.3.7
|
144
149
|
signing_key:
|
145
150
|
specification_version: 4
|
146
151
|
summary: RuboCop GitHub
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# GitHub/RailsRenderInline
|
2
|
-
|
3
|
-
tldr; Do not use `render inline:`.
|
4
|
-
|
5
|
-
## Rendering plain text
|
6
|
-
|
7
|
-
``` ruby
|
8
|
-
render inline: "Just plain text" # bad
|
9
|
-
```
|
10
|
-
|
11
|
-
The `inline:` option is often misused when plain text is being returned. Instead use `render plain: "Just plain text"`.
|
12
|
-
|
13
|
-
## Rendering a dynamic ERB string
|
14
|
-
|
15
|
-
String `#{}` interpolation is often misused with `render inline:` instead of using `<%= %>` interpolation. This will lead to a memory leak where an ERB method will be compiled and cached for each invocation of `render inline:`.
|
16
|
-
|
17
|
-
``` ruby
|
18
|
-
render inline: "Hello #{@name}" # bad
|
19
|
-
```
|
20
|
-
|
21
|
-
## Rendering static ERB strings
|
22
|
-
|
23
|
-
``` ruby
|
24
|
-
render inline: "Hello <%= @name %>" # bad
|
25
|
-
```
|
26
|
-
|
27
|
-
If you are passing a static ERB string to `render inline:`, this string is best moved to a `.erb` template under `app/views`. Template files are able to be precompiled at boot time.
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rubocop"
|
4
|
-
|
5
|
-
module RuboCop
|
6
|
-
module Cop
|
7
|
-
module GitHub
|
8
|
-
class RailsApplicationRecord < Base
|
9
|
-
MSG = "Models should subclass from ApplicationRecord"
|
10
|
-
|
11
|
-
def_node_matcher :active_record_base_const?, <<-PATTERN
|
12
|
-
(const (const nil? :ActiveRecord) :Base)
|
13
|
-
PATTERN
|
14
|
-
|
15
|
-
def_node_matcher :application_record_const?, <<-PATTERN
|
16
|
-
(const nil? :ApplicationRecord)
|
17
|
-
PATTERN
|
18
|
-
|
19
|
-
def on_class(node)
|
20
|
-
klass, superclass, _ = *node
|
21
|
-
|
22
|
-
if active_record_base_const?(superclass) && !(application_record_const?(klass))
|
23
|
-
add_offense(superclass)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rubocop"
|
4
|
-
|
5
|
-
module RuboCop
|
6
|
-
module Cop
|
7
|
-
module GitHub
|
8
|
-
class RailsRenderInline < Base
|
9
|
-
MSG = "Avoid `render inline:`"
|
10
|
-
|
11
|
-
def_node_matcher :render_with_options?, <<-PATTERN
|
12
|
-
(send nil? {:render :render_to_string} (hash $...))
|
13
|
-
PATTERN
|
14
|
-
|
15
|
-
def_node_matcher :inline_key?, <<-PATTERN
|
16
|
-
(pair (sym :inline) $_)
|
17
|
-
PATTERN
|
18
|
-
|
19
|
-
def on_send(node)
|
20
|
-
if option_pairs = render_with_options?(node)
|
21
|
-
if option_pairs.detect { |pair| inline_key?(pair) }
|
22
|
-
add_offense(node)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|