cookstyle 7.15.3 → 7.18.0

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: 4f116bfdcd0e284199c7b8b88cee62d6996fc1d73a9121cee6bb0680d5caffdc
4
- data.tar.gz: b6ec8250e505bc20e30188f50981f90f5d866520ce533f3c7feb35f40fd860be
3
+ metadata.gz: e1efe7fb1177e49d1ee5f83fef4238438ad397342bf04e4aa1efa705b567ebc2
4
+ data.tar.gz: 0a5899ba6f505c59470620c738affb9a5642258ede37d690fb6270b81b89c8d1
5
5
  SHA512:
6
- metadata.gz: 28c7d62c93b33ca7fc885a02cf17b87a1ea51a296e656aedf509d48215de59701aae1edc063ecf21d9287a94d7bc0c4464ca19ecb32de985e4ab15305e286528
7
- data.tar.gz: bc7811af3489dc73ee1fa0d2e2934cdb321ca0486386ccd24f190bd19e914f1da7c896c40ea6f8390181c580a19218cb8c368c336c3ec1ed015b256cbadc9764
6
+ metadata.gz: e96d0dc478cb7ff1b75d04bbeee4bd35b66a88f4f930b738f92edbb908df7f002878688253a28473da39ccac587c950fa4c694e5f3f400d693ae54340029a5cd
7
+ data.tar.gz: adf2a361b46f9c47c47343990a677bac16161f1d53b76f23cadea0ba22b708d6d131f227350a058a42d9be690fedf0f264f0f4231f4d7bb9fa2bf088c1cef802
data/config/cookstyle.yml CHANGED
@@ -481,6 +481,14 @@ Chef/Correctness/OctalModeAsString:
481
481
  - '**/metadata.rb'
482
482
  - '**/Berksfile'
483
483
 
484
+ Chef/Correctness/MetadataMalformedDepends:
485
+ Description: Don't represent file modes as strings containing octal values. Use standard base 10 file modes instead.
486
+ StyleGuide: 'chef_correctness_metadatamalformeddepends'
487
+ Enabled: true
488
+ VersionAdded: '7.16'
489
+ Include:
490
+ - '**/metadata.rb'
491
+
484
492
  ###############################
485
493
  # Chef/Sharing: Issues that prevent sharing code with other teams or with the Chef community in general
486
494
  ###############################
@@ -1217,6 +1225,18 @@ Chef/Deprecations/PolicyfileCommunitySource:
1217
1225
  Include:
1218
1226
  - '**/Policyfile.rb'
1219
1227
 
1228
+ Chef/Deprecations/DeprecatedSudoActions:
1229
+ Description: The `sudo` resource in the sudo cookbook 5.0 (2018) or Chef Infra Client 14 and later have replaced the existing `:install` and `:remove` actions with `:create` and `:delete` actions to better match other resources in Chef Infra.
1230
+ StyleGuide: 'chef_deprecations_deprecatedsudoactions'
1231
+ Enabled: true
1232
+ VersionAdded: '7.18.0'
1233
+ Exclude:
1234
+ - '**/spec/**/*.rb'
1235
+ - '**/metadata.rb'
1236
+ - '**/attributes/*.rb'
1237
+ - '**/Berksfile'
1238
+ - '**/Rakefile'
1239
+
1220
1240
  ###############################
1221
1241
  # Chef/Modernize: Cleaning up legacy code and using new built-in resources
1222
1242
  ###############################
@@ -2450,6 +2470,8 @@ Lint/HandleExceptions:
2450
2470
  Enabled: true
2451
2471
  Lint/ImplicitStringConcatenation:
2452
2472
  Enabled: true
2473
+ Exclude:
2474
+ - '**/metadata.rb' # this prevents conflicts with Chef/Correctness/MetadataMalformedDepends
2453
2475
  Lint/IneffectiveAccessModifier:
2454
2476
  Enabled: true
2455
2477
  Lint/LiteralAsCondition:
@@ -219,6 +219,8 @@ Lint/AmbiguousBlockAssociation:
219
219
  Enabled: false
220
220
  Lint/AmbiguousOperator:
221
221
  Enabled: false
222
+ Lint/AmbiguousRange:
223
+ Enabled: false
222
224
  Lint/AmbiguousRegexpLiteral:
223
225
  Enabled: false
224
226
  Lint/AssignmentInCondition:
@@ -705,6 +707,8 @@ Style/RedundantFileExtensionInRequire:
705
707
  Enabled: false
706
708
  Style/RedundantSelfAssignment:
707
709
  Enabled: false
710
+ Style/RedundantSelfAssignmentBranch:
711
+ Enabled: false
708
712
  Style/SoleNestedConditional:
709
713
  Enabled: false
710
714
  Style/StaticClass:
data/config/upstream.yml CHANGED
@@ -1434,6 +1434,13 @@ Lint/AmbiguousOperator:
1434
1434
  VersionAdded: '0.17'
1435
1435
  VersionChanged: '0.83'
1436
1436
 
1437
+ Lint/AmbiguousRange:
1438
+ Description: Checks for ranges with ambiguous boundaries.
1439
+ Enabled: pending
1440
+ VersionAdded: '1.19'
1441
+ SafeAutoCorrect: false
1442
+ RequireParenthesesForMethodChains: false
1443
+
1437
1444
  Lint/AmbiguousRegexpLiteral:
1438
1445
  Description: >-
1439
1446
  Checks for ambiguous regexp literals in the first argument of
@@ -1824,7 +1831,6 @@ Lint/MultipleComparison:
1824
1831
  Enabled: true
1825
1832
  VersionAdded: '0.47'
1826
1833
  VersionChanged: '1.1'
1827
- AllowMethodComparison: true
1828
1834
 
1829
1835
  Lint/NestedMethodDefinition:
1830
1836
  Description: 'Do not use nested method definitions.'
@@ -2557,6 +2563,7 @@ Naming/InclusiveLanguage:
2557
2563
  - denylist
2558
2564
  - block
2559
2565
  slave:
2566
+ WholeWord: true
2560
2567
  Suggestions: ['replica', 'secondary', 'follower']
2561
2568
 
2562
2569
  Naming/MemoizedInstanceVariableName:
@@ -3155,8 +3162,9 @@ Style/CommentAnnotation:
3155
3162
  Style/CommentedKeyword:
3156
3163
  Description: 'Do not place comments on the same line as certain keywords.'
3157
3164
  Enabled: true
3165
+ SafeAutoCorrect: false
3158
3166
  VersionAdded: '0.51'
3159
- VersionChanged: '1.7'
3167
+ VersionChanged: '1.19'
3160
3168
 
3161
3169
  Style/ConditionalAssignment:
3162
3170
  Description: >-
@@ -3603,8 +3611,9 @@ Style/IdenticalConditionalBranches:
3603
3611
  line at the end of each branch, which can validly be moved
3604
3612
  out of the conditional.
3605
3613
  Enabled: true
3614
+ SafeAutoCorrect: false
3606
3615
  VersionAdded: '0.36'
3607
- VersionChanged: '1.16'
3616
+ VersionChanged: '1.19'
3608
3617
 
3609
3618
  Style/IfInsideElse:
3610
3619
  Description: 'Finds if nodes inside else, which can be converted to elsif.'
@@ -3929,6 +3938,7 @@ Style/MultipleComparison:
3929
3938
  Enabled: true
3930
3939
  VersionAdded: '0.49'
3931
3940
  VersionChanged: '1.1'
3941
+ AllowMethodComparison: true
3932
3942
 
3933
3943
  Style/MutableConstant:
3934
3944
  Description: 'Do not assign mutable objects to constants.'
@@ -4152,6 +4162,7 @@ Style/OptionHash:
4152
4162
  - args
4153
4163
  - params
4154
4164
  - parameters
4165
+ Allowlist: []
4155
4166
 
4156
4167
  Style/OptionalArguments:
4157
4168
  Description: >-
@@ -4404,6 +4415,11 @@ Style/RedundantSelfAssignment:
4404
4415
  Safe: false
4405
4416
  VersionAdded: '0.90'
4406
4417
 
4418
+ Style/RedundantSelfAssignmentBranch:
4419
+ Description: 'Checks for places where conditional branch makes redundant self-assignment.'
4420
+ Enabled: pending
4421
+ VersionAdded: '1.19'
4422
+
4407
4423
  Style/RedundantSort:
4408
4424
  Description: >-
4409
4425
  Use `min` instead of `sort.first`,
@@ -4575,6 +4591,7 @@ Style/SpecialGlobalVars:
4575
4591
  VersionAdded: '0.13'
4576
4592
  VersionChanged: '0.36'
4577
4593
  SafeAutoCorrect: false
4594
+ RequireEnglish: true
4578
4595
  EnforcedStyle: use_english_names
4579
4596
  SupportedStyles:
4580
4597
  - use_perl_names
@@ -4895,7 +4912,7 @@ Style/VariableInterpolation:
4895
4912
 
4896
4913
  Style/WhenThen:
4897
4914
  Description: 'Use when x then ... for one-line cases.'
4898
- StyleGuide: '#one-line-cases'
4915
+ StyleGuide: '#no-when-semicolons'
4899
4916
  Enabled: true
4900
4917
  VersionAdded: '0.9'
4901
4918
 
@@ -4919,7 +4936,7 @@ Style/WordArray:
4919
4936
  StyleGuide: '#percent-w'
4920
4937
  Enabled: true
4921
4938
  VersionAdded: '0.9'
4922
- VersionChanged: '0.36'
4939
+ VersionChanged: '1.19'
4923
4940
  EnforcedStyle: percent
4924
4941
  SupportedStyles:
4925
4942
  # percent style: %w(word1 word2)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Cookstyle
3
- VERSION = "7.15.3" # rubocop: disable Style/StringLiterals
4
- RUBOCOP_VERSION = '1.18.4'
3
+ VERSION = "7.18.0" # rubocop: disable Style/StringLiterals
4
+ RUBOCOP_VERSION = '1.19.0'
5
5
  end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Correctness
22
+ # metadata.rb cookbook dependencies and version constraints should be comma separated
23
+ #
24
+ # @example
25
+ #
26
+ # #### incorrect
27
+ # depends 'some_awesome_cookbook' '= 4.5.5'
28
+ # depends 'some_other_cool_cookbook' '< 8.0'
29
+ #
30
+ # #### correct
31
+ # depends 'some_awesome_cookbook', '= 4.5.5'
32
+ # depends 'some_other_cool_cookbook', '< 8.0'
33
+ #
34
+ class MetadataMalformedDepends < Base
35
+ extend RuboCop::Cop::AutoCorrector
36
+
37
+ RESTRICT_ON_SEND = [:depends].freeze
38
+ MSG = 'metadata.rb cookbook dependencies and version constraints should be comma separated'
39
+
40
+ def_node_matcher :depends_without_comma?, <<-PATTERN
41
+ (send nil? :depends
42
+ (dstr
43
+ $(str _ )
44
+ $(str _ )))
45
+ PATTERN
46
+
47
+ def on_send(node)
48
+ depends_without_comma?(node) do |cb, ver|
49
+ add_offense(node, message: MSG, severity: :refactor) do |corrector|
50
+ corrector.replace(node, "depends '#{cb.value}', '#{ver.value}'")
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
- # Copyright:: 2019, Chef Software Inc.
3
+ # Copyright:: 2019-2021, Chef Software Inc.
4
4
  # Author:: Tim Smith (<tsmith@chef.io>)
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,6 +27,7 @@ module RuboCop
27
27
  # name 'foo'
28
28
  #
29
29
  class MetadataMissingName < Base
30
+ extend AutoCorrector
30
31
  include RangeHelp
31
32
 
32
33
  MSG = 'metadata.rb needs to include the name method or it will fail on Chef Infra Client 12 and later.'
@@ -37,11 +38,10 @@ module RuboCop
37
38
  # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
38
39
  return if cb_name?(processed_source.ast)
39
40
  range = source_range(processed_source.buffer, 1, 0)
40
- add_offense(range, message: MSG, severity: :refactor) do |_corrector|
41
+ add_offense(range, message: MSG, severity: :refactor) do |corrector|
41
42
  path = processed_source.path
42
43
  cb_name = File.basename(File.dirname(path))
43
- metadata = IO.read(path)
44
- IO.write(path, "name '#{cb_name}'\n" + metadata)
44
+ corrector.insert_before(processed_source.ast, "name '#{cb_name}'\n")
45
45
  end
46
46
  end
47
47
  end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021, Chef Software, Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Deprecations
22
+ # The `sudo` resource in the sudo cookbook 5.0 (2018) or Chef Infra Client 14 and later have replaced the existing `:install` and `:remove` actions with `:create` and `:delete` actions to better match other resources in Chef Infra.
23
+ #
24
+ # @example
25
+ #
26
+ # #### incorrect
27
+ # sudo 'admins' do
28
+ # users 'bob'
29
+ # groups 'sysadmins, superusers'
30
+ # action :remove
31
+ # end
32
+ #
33
+ # #### correct
34
+ # sudo 'admins' do
35
+ # users 'bob'
36
+ # groups 'sysadmins, superusers'
37
+ # action :delete
38
+ # end
39
+ #
40
+ class DeprecatedSudoActions < Base
41
+ include RuboCop::Chef::CookbookHelpers
42
+ extend TargetChefVersion
43
+ extend AutoCorrector
44
+
45
+ minimum_target_chef_version '14.0'
46
+
47
+ MSG = 'The `sudo` resource in the sudo cookbook 5.0 (2018) or Chef Infra Client 14 and later have replaced the existing `:install` and `:remove` actions with `:create` and `:delete` actions to better match other resources in Chef Infra.'
48
+
49
+ def on_block(node)
50
+ match_property_in_resource?(:sudo, 'action', node) do |prop_node|
51
+ next unless prop_node.arguments.first.sym_type?
52
+ next unless [s(:sym, :install), s(:sym, :remove)].include?(prop_node.arguments.first)
53
+
54
+ add_offense(prop_node, message: MSG, severity: :warning) do |corrector|
55
+ corrector.replace(prop_node, prop_node.source
56
+ .gsub('install', 'create')
57
+ .gsub('remove', 'delete'))
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -54,6 +54,9 @@ module RuboCop
54
54
  def_node_search :provides, '(send nil? :provides ...)'
55
55
 
56
56
  def on_new_investigation
57
+ # gracefully fail if the resource is empty
58
+ return if processed_source.ast.nil?
59
+
57
60
  # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
58
61
  return if unified_mode?(processed_source.ast)
59
62
  range = source_range(processed_source.buffer, 1, 0)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.15.3
4
+ version: 7.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-07-29 00:00:00.000000000 Z
12
+ date: 2021-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.18.4
20
+ version: 1.19.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: 1.18.4
27
+ version: 1.19.0
28
28
  description:
29
29
  email:
30
30
  - thom@chef.io
@@ -69,6 +69,7 @@ files:
69
69
  - lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb
70
70
  - lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb
71
71
  - lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb
72
+ - lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb
72
73
  - lib/rubocop/cop/chef/correctness/metadata_missing_name.rb
73
74
  - lib/rubocop/cop/chef/correctness/node_normal.rb
74
75
  - lib/rubocop/cop/chef/correctness/node_normal_unless.rb
@@ -105,6 +106,7 @@ files:
105
106
  - lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb
106
107
  - lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb
107
108
  - lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb
109
+ - lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb
108
110
  - lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb
109
111
  - lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb
110
112
  - lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb