puppet-lint 3.4.0 → 4.0.0.rc.1

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/lib/puppet-lint/bin.rb +7 -11
  3. data/lib/puppet-lint/checkplugin.rb +4 -8
  4. data/lib/puppet-lint/checks.rb +7 -9
  5. data/lib/puppet-lint/configuration.rb +2 -2
  6. data/lib/puppet-lint/data.rb +35 -39
  7. data/lib/puppet-lint/lexer/string_slurper.rb +2 -3
  8. data/lib/puppet-lint/lexer/token.rb +6 -5
  9. data/lib/puppet-lint/lexer.rb +35 -38
  10. data/lib/puppet-lint/monkeypatches.rb +4 -4
  11. data/lib/puppet-lint/optparser.rb +1 -1
  12. data/lib/puppet-lint/plugins/check_classes/arrow_on_right_operand_line.rb +1 -0
  13. data/lib/puppet-lint/plugins/check_classes/autoloader_layout.rb +2 -4
  14. data/lib/puppet-lint/plugins/check_classes/class_inherits_from_params_class.rb +2 -2
  15. data/lib/puppet-lint/plugins/check_classes/code_on_top_scope.rb +1 -1
  16. data/lib/puppet-lint/plugins/check_classes/nested_classes_or_defines.rb +5 -5
  17. data/lib/puppet-lint/plugins/check_classes/parameter_order.rb +8 -9
  18. data/lib/puppet-lint/plugins/check_classes/variable_scope.rb +32 -34
  19. data/lib/puppet-lint/plugins/check_conditionals/case_without_default.rb +2 -2
  20. data/lib/puppet-lint/plugins/check_documentation/documentation.rb +7 -6
  21. data/lib/puppet-lint/plugins/check_nodes/unquoted_node_name.rb +1 -1
  22. data/lib/puppet-lint/plugins/check_resources/ensure_first_param.rb +3 -5
  23. data/lib/puppet-lint/plugins/check_resources/ensure_not_symlink_target.rb +2 -2
  24. data/lib/puppet-lint/plugins/check_resources/file_mode.rb +6 -6
  25. data/lib/puppet-lint/plugins/check_resources/unquoted_file_mode.rb +4 -4
  26. data/lib/puppet-lint/plugins/check_strings/double_quoted_strings.rb +4 -4
  27. data/lib/puppet-lint/plugins/check_strings/only_variable_string.rb +4 -5
  28. data/lib/puppet-lint/plugins/check_strings/quoted_booleans.rb +4 -4
  29. data/lib/puppet-lint/plugins/check_strings/single_quote_string_with_variables.rb +2 -2
  30. data/lib/puppet-lint/plugins/check_strings/variables_not_enclosed.rb +8 -7
  31. data/lib/puppet-lint/plugins/check_variables/variable_contains_dash.rb +3 -3
  32. data/lib/puppet-lint/plugins/check_variables/variable_is_lowercase.rb +2 -2
  33. data/lib/puppet-lint/plugins/check_whitespace/140chars.rb +1 -0
  34. data/lib/puppet-lint/plugins/check_whitespace/80chars.rb +2 -1
  35. data/lib/puppet-lint/plugins/check_whitespace/arrow_alignment.rb +9 -9
  36. data/lib/puppet-lint/plugins/check_whitespace/hard_tabs.rb +2 -2
  37. data/lib/puppet-lint/plugins/check_whitespace/line_length.rb +6 -6
  38. data/lib/puppet-lint/plugins/legacy_facts/legacy_facts.rb +106 -105
  39. data/lib/puppet-lint/plugins/top_scope_facts/top_scope_facts.rb +3 -2
  40. data/lib/puppet-lint/plugins.rb +3 -4
  41. data/lib/puppet-lint/report/codeclimate.rb +3 -2
  42. data/lib/puppet-lint/report/github.rb +1 -0
  43. data/lib/puppet-lint/tasks/puppet-lint.rb +7 -26
  44. data/lib/puppet-lint/tasks/release_test.rb +4 -4
  45. data/lib/puppet-lint/version.rb +1 -1
  46. data/lib/puppet-lint.rb +5 -3
  47. data/rubocop_baseline.yml +3 -440
  48. data/spec/spec_helper.rb +3 -2
  49. data/spec/spec_helper_acceptance_local.rb +1 -1
  50. data/spec/unit/puppet-lint/bin_spec.rb +12 -2
  51. data/spec/unit/puppet-lint/configuration_spec.rb +14 -14
  52. data/spec/unit/puppet-lint/lexer/string_slurper_spec.rb +3 -5
  53. data/spec/unit/puppet-lint/lexer_spec.rb +10 -11
  54. data/spec/unit/puppet-lint/plugins/check_classes/parameter_order_spec.rb +2 -2
  55. data/spec/unit/puppet-lint/plugins/check_conditionals/case_without_default_spec.rb +5 -5
  56. data/spec/unit/puppet-lint/plugins/check_strings/double_quoted_strings_spec.rb +1 -1
  57. data/spec/unit/puppet-lint/plugins/check_strings/only_variable_string_spec.rb +1 -1
  58. data/spec/unit/puppet-lint/plugins/check_whitespace/140chars_spec.rb +0 -2
  59. data/spec/unit/puppet-lint/plugins/check_whitespace/80chars_spec.rb +1 -3
  60. data/spec/unit/puppet-lint/plugins/legacy_facts/legacy_facts_spec.rb +16 -0
  61. data/spec/unit/puppet-lint/plugins/top_scope_facts/top_scope_facts_spec.rb +1 -0
  62. metadata +5 -5
@@ -5,7 +5,7 @@
5
5
  PuppetLint.new_check(:class_inherits_from_params_class) do
6
6
  def check
7
7
  class_indexes.each do |class_idx|
8
- next unless class_idx[:inherited_token] && class_idx[:inherited_token]&.value&.end_with?('::params')
8
+ next unless class_idx[:inherited_token]&.value&.end_with?('::params')
9
9
 
10
10
  notify(
11
11
  :warning,
@@ -18,4 +18,4 @@ PuppetLint.new_check(:class_inherits_from_params_class) do
18
18
  end
19
19
  end
20
20
  end
21
- PuppetLint.configuration.send('disable_class_inherits_from_params_class')
21
+ PuppetLint.configuration.send(:disable_class_inherits_from_params_class)
@@ -20,4 +20,4 @@ PuppetLint.new_check(:code_on_top_scope) do
20
20
  end
21
21
  end
22
22
  end
23
- PuppetLint.configuration.send('disable_code_on_top_scope')
23
+ PuppetLint.configuration.send(:disable_code_on_top_scope)
@@ -2,18 +2,18 @@
2
2
  # defined inside another class.
3
3
  #
4
4
  # https://puppet.com/docs/puppet/latest/style_guide.html#nested-classes-or-defined-types
5
+ CLASS_DEFINE_TOKENS = Set[:CLASS, :DEFINE]
5
6
  PuppetLint.new_check(:nested_classes_or_defines) do
6
- TOKENS = Set[:CLASS, :DEFINE]
7
-
8
7
  def check
9
8
  class_indexes.each do |class_idx|
10
9
  # Skip the first token so that we don't pick up the first :CLASS
11
- class_tokens = class_idx[:tokens][1..-1]
10
+ class_tokens = class_idx[:tokens][1..]
12
11
 
13
12
  class_tokens.each do |token|
14
- next unless TOKENS.include?(token.type)
13
+ next unless CLASS_DEFINE_TOKENS.include?(token.type)
15
14
  next if token.next_code_token.type == :LBRACE
16
- type = token.type == :CLASS ? 'class' : 'defined type'
15
+
16
+ type = (token.type == :CLASS) ? 'class' : 'defined type'
17
17
 
18
18
  notify(
19
19
  :warning,
@@ -11,13 +11,14 @@ PuppetLint.new_check(:parameter_order) do
11
11
  paren_stack = []
12
12
  hash_or_array_stack = []
13
13
  class_idx[:param_tokens].each_with_index do |token, i|
14
- if token.type == :LPAREN
14
+ case token.type
15
+ when :LPAREN
15
16
  paren_stack.push(true)
16
- elsif token.type == :RPAREN
17
+ when :RPAREN
17
18
  paren_stack.pop
18
- elsif token.type == :LBRACE || token.type == :LBRACK
19
+ when :LBRACE, :LBRACK
19
20
  hash_or_array_stack.push(true)
20
- elsif token.type == :RBRACE || token.type == :RBRACK
21
+ when :RBRACE, :RBRACK
21
22
  hash_or_array_stack.pop
22
23
  end
23
24
 
@@ -34,8 +35,8 @@ PuppetLint.new_check(:parameter_order) do
34
35
  message: msg,
35
36
  line: token.line,
36
37
  column: token.column,
37
- description: 'Test the manifest tokens for any parameterised classes or defined types that take '\
38
- 'parameters and record a warning if there are any optional parameters listed before required parameters.',
38
+ description: 'Test the manifest tokens for any parameterised classes or defined types that take ' \
39
+ 'parameters and record a warning if there are any optional parameters listed before required parameters.',
39
40
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#display-order-of-parameters',
40
41
  )
41
42
  end
@@ -58,9 +59,7 @@ PuppetLint.new_check(:parameter_order) do
58
59
  data_type = token.prev_token_of(:TYPE, skip_blocks: true)
59
60
  return false if data_type && data_type.value == 'Optional'
60
61
 
61
- if token.next_code_token.nil? || [:COMMA, :RPAREN].include?(token.next_code_token.type)
62
- return !(token.prev_code_token && token.prev_code_token.type == :EQUALS)
63
- end
62
+ return !(token.prev_code_token && token.prev_code_token.type == :EQUALS) if token.next_code_token.nil? || [:COMMA, :RPAREN].include?(token.next_code_token.type)
64
63
 
65
64
  false
66
65
  end
@@ -5,35 +5,35 @@
5
5
  # not.
6
6
  #
7
7
  # https://puppet.com/docs/puppet/latest/style_guide.html#namespacing-variables
8
- PuppetLint.new_check(:variable_scope) do
9
- DEFAULT_SCOPE_VARS = Set[
10
- 'name',
11
- 'title',
12
- 'module_name',
13
- 'environment',
14
- 'clientcert',
15
- 'clientversion',
16
- 'servername',
17
- 'serverip',
18
- 'serverversion',
19
- 'caller_module_name',
20
- 'alias',
21
- 'audit',
22
- 'before',
23
- 'loglevel',
24
- 'noop',
25
- 'notify',
26
- 'require',
27
- 'schedule',
28
- 'stage',
29
- 'subscribe',
30
- 'tag',
31
- 'facts',
32
- 'trusted',
33
- 'server_facts',
34
- ]
35
- POST_VAR_TOKENS = Set[:COMMA, :EQUALS, :RPAREN]
8
+ DEFAULT_SCOPE_VARS = Set[
9
+ 'name',
10
+ 'title',
11
+ 'module_name',
12
+ 'environment',
13
+ 'clientcert',
14
+ 'clientversion',
15
+ 'servername',
16
+ 'serverip',
17
+ 'serverversion',
18
+ 'caller_module_name',
19
+ 'alias',
20
+ 'audit',
21
+ 'before',
22
+ 'loglevel',
23
+ 'noop',
24
+ 'notify',
25
+ 'require',
26
+ 'schedule',
27
+ 'stage',
28
+ 'subscribe',
29
+ 'tag',
30
+ 'facts',
31
+ 'trusted',
32
+ 'server_facts',
33
+ ]
34
+ POST_VAR_TOKENS = Set[:COMMA, :EQUALS, :RPAREN]
36
35
 
36
+ PuppetLint.new_check(:variable_scope) do
37
37
  def check
38
38
  variables_in_scope = DEFAULT_SCOPE_VARS.clone
39
39
 
@@ -93,7 +93,7 @@ PuppetLint.new_check(:variable_scope) do
93
93
  end_token = nil
94
94
  brace_depth = 0
95
95
 
96
- tokens[start_idx..-1].each do |sub_token|
96
+ tokens[start_idx..].each do |sub_token|
97
97
  case sub_token.type
98
98
  when :LBRACE
99
99
  brace_depth += 1
@@ -117,9 +117,7 @@ PuppetLint.new_check(:variable_scope) do
117
117
 
118
118
  msg = 'top-scope variable being used without an explicit namespace'
119
119
  referenced_variables.each do |token|
120
- unless future_parser_scopes[token.line].nil?
121
- next if future_parser_scopes[token.line].include?(token.value.gsub(%r{\[.+\]\Z}, ''))
122
- end
120
+ next if !future_parser_scopes[token.line].nil? && future_parser_scopes[token.line].include?(token.value.gsub(%r{\[.+\]\Z}, ''))
123
121
 
124
122
  next if token.value.include?('::')
125
123
  next if %r{^(facts|trusted)\[.+\]}.match?(token.value)
@@ -132,8 +130,8 @@ PuppetLint.new_check(:variable_scope) do
132
130
  line: token.line,
133
131
  column: token.column,
134
132
  description: 'Test the manifest tokens for any variables that are referenced in the manifest. ' \
135
- 'If the variables are not fully qualified or one of the variables automatically created in the scope, ' \
136
- 'check that they have been defined in the local scope and record a warning for each variable that has not.',
133
+ 'If the variables are not fully qualified or one of the variables automatically created in the scope, ' \
134
+ 'check that they have been defined in the local scope and record a warning for each variable that has not.',
137
135
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#namespacing-variables',
138
136
  )
139
137
  end
@@ -10,7 +10,7 @@ PuppetLint.new_check(:case_without_default) do
10
10
  next unless tokens[token_idx].type == :CASE
11
11
 
12
12
  depth = 0
13
- tokens[(token_idx + 1)..-1].each_index do |case_token_idx|
13
+ tokens[(token_idx + 1)..].each_index do |case_token_idx|
14
14
  idx = case_token_idx + token_idx + 1
15
15
  if tokens[idx].type == :LBRACE
16
16
  depth += 1
@@ -27,7 +27,7 @@ PuppetLint.new_check(:case_without_default) do
27
27
  case_indexes.each_with_index do |kase, kase_index|
28
28
  case_tokens = tokens[kase[:start]..kase[:end]]
29
29
 
30
- case_indexes[(kase_index + 1)..-1].each do |successor_kase|
30
+ case_indexes[(kase_index + 1)..].each do |successor_kase|
31
31
  case_tokens -= tokens[successor_kase[:start]..successor_kase[:end]]
32
32
  end
33
33
 
@@ -3,10 +3,10 @@
3
3
  # record a warning for each instance found.
4
4
  #
5
5
  # https://puppet.com/docs/puppet/latest/style_guide.html#public-and-private
6
- PuppetLint.new_check(:documentation) do
7
- COMMENT_TOKENS = Set[:COMMENT, :MLCOMMENT, :SLASH_COMMENT]
8
- WHITESPACE_TOKENS = Set[:WHITESPACE, :NEWLINE, :INDENT]
6
+ COMMENT_TOKENS = Set[:COMMENT, :MLCOMMENT, :SLASH_COMMENT]
7
+ WHITESPACE_TOKENS = Set[:WHITESPACE, :NEWLINE, :INDENT]
9
8
 
9
+ PuppetLint.new_check(:documentation) do
10
10
  def check
11
11
  (class_indexes + defined_type_indexes).each do |item_idx|
12
12
  comment_token = find_comment_token(item_idx[:tokens].first)
@@ -25,9 +25,9 @@ PuppetLint.new_check(:documentation) do
25
25
  message: "#{type} not documented",
26
26
  line: first_token.line,
27
27
  column: first_token.column,
28
- description: 'Check the manifest tokens for any class or defined type that does not '\
29
- 'have a comment directly above it (hopefully, explaining the usage of it) and record '\
30
- 'a warning for each instance found.',
28
+ description: 'Check the manifest tokens for any class or defined type that does not ' \
29
+ 'have a comment directly above it (hopefully, explaining the usage of it) and record ' \
30
+ 'a warning for each instance found.',
31
31
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#public-and-private',
32
32
  )
33
33
  end
@@ -40,6 +40,7 @@ PuppetLint.new_check(:documentation) do
40
40
  while !prev_token.nil? && WHITESPACE_TOKENS.include?(prev_token.type)
41
41
  newlines += 1 if prev_token.type == :NEWLINE
42
42
  break if newlines > 1
43
+
43
44
  prev_token = prev_token.prev_token
44
45
  end
45
46
 
@@ -7,7 +7,7 @@ PuppetLint.new_check(:unquoted_node_name) do
7
7
  node_tokens = tokens.select { |token| token.type == :NODE }
8
8
  node_tokens.each do |node|
9
9
  node_token_idx = tokens.index(node)
10
- node_lbrace_tok = tokens[node_token_idx..-1].find { |token| token.type == :LBRACE }
10
+ node_lbrace_tok = tokens[node_token_idx..].find { |token| token.type == :LBRACE }
11
11
  if node_lbrace_tok.nil?
12
12
  notify(
13
13
  :error,
@@ -21,8 +21,8 @@ PuppetLint.new_check(:ensure_first_param) do
21
21
  line: ensure_token.line,
22
22
  column: ensure_token.column,
23
23
  resource: resource,
24
- description: 'Check the tokens of each resource instance for an ensure parameter and if '\
25
- 'found, check that it is the first parameter listed. If it is not the first parameter, record a warning.',
24
+ description: 'Check the tokens of each resource instance for an ensure parameter and if ' \
25
+ 'found, check that it is the first parameter listed. If it is not the first parameter, record a warning.',
26
26
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#attribute-ordering',
27
27
  )
28
28
  end
@@ -37,9 +37,7 @@ PuppetLint.new_check(:ensure_first_param) do
37
37
 
38
38
  ensure_param_comma_token = ensure_param_name_token.next_token_of([:COMMA, :SEMIC])
39
39
 
40
- if first_param_name_token.nil? || first_param_comma_token.nil? || ensure_param_comma_token.nil?
41
- raise PuppetLint::NoFix
42
- end
40
+ raise PuppetLint::NoFix if first_param_name_token.nil? || first_param_comma_token.nil? || ensure_param_comma_token.nil?
43
41
 
44
42
  first_param_name_idx = tokens.index(first_param_name_token)
45
43
  first_param_comma_idx = tokens.index(first_param_comma_token)
@@ -21,8 +21,8 @@ PuppetLint.new_check(:ensure_not_symlink_target) do
21
21
  column: value_token.column,
22
22
  param_token: ensure_token,
23
23
  value_token: value_token,
24
- description: 'Check the tokens of each File resource instance for an ensure parameter and '\
25
- 'record a warning if the value of that parameter looks like a symlink target (starts with a \'/\').',
24
+ description: 'Check the tokens of each File resource instance for an ensure parameter and ' \
25
+ 'record a warning if the value of that parameter looks like a symlink target (starts with a \'/\').',
26
26
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#symbolic-links',
27
27
  )
28
28
  end
@@ -3,12 +3,12 @@
3
3
  # not a 4 digit octal value (0755) or a symbolic mode ('o=rwx,g+r').
4
4
  #
5
5
  # https://puppet.com/docs/puppet/latest/style_guide.html#file-modes
6
- PuppetLint.new_check(:file_mode) do
7
- MSG = 'mode should be represented as a 4 digit octal value or symbolic mode'.freeze
8
- SYM_RE = '([ugoa]*[-=+][-=+rstwxXugo]*)(,[ugoa]*[-=+][-=+rstwxXugo]*)*'.freeze
9
- IGNORE_TYPES = Set[:VARIABLE, :UNDEF, :FUNCTION_NAME]
10
- MODE_RE = %r{\A([0-7]{4}|#{SYM_RE})\Z}.freeze
6
+ MSG = 'mode should be represented as a 4 digit octal value or symbolic mode'.freeze
7
+ SYM_RE = '([ugoa]*[-=+][-=+rstwxXugo]*)(,[ugoa]*[-=+][-=+rstwxXugo]*)*'.freeze
8
+ IGNORE_TYPES = Set[:VARIABLE, :UNDEF, :FUNCTION_NAME]
9
+ MODE_RE = %r{\A([0-7]{4}|#{SYM_RE})\Z}.freeze
11
10
 
11
+ PuppetLint.new_check(:file_mode) do
12
12
  def check
13
13
  resource_indexes.each do |resource|
14
14
  next unless resource[:type].value == 'file' || resource[:type].value == 'concat'
@@ -30,7 +30,7 @@ PuppetLint.new_check(:file_mode) do
30
30
  column: value_token.column,
31
31
  token: value_token,
32
32
  description: 'Check the tokens of each File resource instance for a mode parameter and if found, ' \
33
- 'record a warning if the value of that parameter is not a 4 digit octal value (0755) or a symbolic mode (\'o=rwx,g\+r\').',
33
+ 'record a warning if the value of that parameter is not a 4 digit octal value (0755) or a symbolic mode (\'o=rwx,g\+r\').',
34
34
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#file-modes',
35
35
  )
36
36
  end
@@ -3,9 +3,9 @@
3
3
  # not a quoted string.
4
4
  #
5
5
  # https://puppet.com/docs/puppet/latest/style_guide.html#file-modes
6
- PuppetLint.new_check(:unquoted_file_mode) do
7
- TOKEN_TYPES = Set[:NAME, :NUMBER]
6
+ TOKEN_TYPES = Set[:NAME, :NUMBER]
8
7
 
8
+ PuppetLint.new_check(:unquoted_file_mode) do
9
9
  def check
10
10
  resource_indexes.each do |resource|
11
11
  next unless resource[:type].value == 'file' || resource[:type].value == 'concat'
@@ -23,8 +23,8 @@ PuppetLint.new_check(:unquoted_file_mode) do
23
23
  line: value_token.line,
24
24
  column: value_token.column,
25
25
  token: value_token,
26
- description: 'Check the tokens of each File resource instance for a mode parameter '\
27
- 'and if found, record a warning if the value of that parameter is not a quoted string.',
26
+ description: 'Check the tokens of each File resource instance for a mode parameter ' \
27
+ 'and if found, record a warning if the value of that parameter is not a quoted string.',
28
28
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#file-modes',
29
29
  )
30
30
  end
@@ -3,9 +3,9 @@
3
3
  # each instance found.
4
4
  #
5
5
  # https://puppet.com/docs/puppet/latest/style_guide.html#quoting
6
- PuppetLint.new_check(:double_quoted_strings) do
7
- ESCAPE_CHAR_RE = %r{(\\\$|\\"|\\'|'|\r|\t|\\t|\\s|\n|\\n|\\\\)}.freeze
6
+ ESCAPE_CHAR_RE = %r{(\\\$|\\"|\\'|'|\r|\t|\\t|\\s|\n|\\n|\\\\)}.freeze
8
7
 
8
+ PuppetLint.new_check(:double_quoted_strings) do
9
9
  def check
10
10
  invalid_tokens = tokens.select do |token|
11
11
  token.type == :STRING &&
@@ -19,8 +19,8 @@ PuppetLint.new_check(:double_quoted_strings) do
19
19
  line: token.line,
20
20
  column: token.column,
21
21
  token: token,
22
- description: 'Check the manifest tokens for any double quoted strings that don\'t '\
23
- 'contain any variables or common escape characters and record a warning for each instance found.',
22
+ description: 'Check the manifest tokens for any double quoted strings that don\'t ' \
23
+ 'contain any variables or common escape characters and record a warning for each instance found.',
24
24
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#quoting',
25
25
  )
26
26
  end
@@ -2,9 +2,9 @@
2
2
  # a single variable only and record a warning for each instance found.
3
3
  #
4
4
  # https://puppet.com/docs/puppet/latest/style_guide.html#quoting
5
- PuppetLint.new_check(:only_variable_string) do
6
- VAR_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
5
+ VAR_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
7
6
 
7
+ PuppetLint.new_check(:only_variable_string) do
8
8
  def check
9
9
  tokens.each_with_index do |start_token, start_token_idx|
10
10
  next unless start_token.type == :DQPRE && start_token.value == ''
@@ -20,9 +20,8 @@ PuppetLint.new_check(:only_variable_string) do
20
20
  eos_offset += 3
21
21
  when :DQPOST
22
22
  if eos_token.value == ''
23
- if eos_token.next_code_token && eos_token.next_code_token.type == :FARROW
24
- break
25
- end
23
+ break if eos_token.next_code_token && eos_token.next_code_token.type == :FARROW
24
+
26
25
  notify(
27
26
  :warning,
28
27
  message: 'string containing only a variable',
@@ -3,10 +3,10 @@
3
3
  # found.
4
4
  #
5
5
  # No style guide reference
6
- PuppetLint.new_check(:quoted_booleans) do
7
- STRING_TYPES = Set[:STRING, :SSTRING]
8
- BOOLEANS = Set['true', 'false']
6
+ STRING_TYPES = Set[:STRING, :SSTRING]
7
+ BOOLEANS = Set['true', 'false']
9
8
 
9
+ PuppetLint.new_check(:quoted_booleans) do
10
10
  def check
11
11
  invalid_tokens = tokens.select do |token|
12
12
  STRING_TYPES.include?(token.type) && BOOLEANS.include?(token.value)
@@ -29,4 +29,4 @@ PuppetLint.new_check(:quoted_booleans) do
29
29
  problem[:token].type = problem[:token].value.upcase.to_sym
30
30
  end
31
31
  end
32
- PuppetLint.configuration.send('disable_quoted_booleans')
32
+ PuppetLint.configuration.send(:disable_quoted_booleans)
@@ -14,8 +14,8 @@ PuppetLint.new_check(:single_quote_string_with_variables) do
14
14
  message: 'single quoted string containing a variable found',
15
15
  line: token.line,
16
16
  column: token.column,
17
- description: 'Check the manifest tokens for any single quoted strings containing '\
18
- 'a enclosed variable and record an error for each instance found.',
17
+ description: 'Check the manifest tokens for any single quoted strings containing ' \
18
+ 'a enclosed variable and record an error for each instance found.',
19
19
  help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#quoting',
20
20
  )
21
21
  end
@@ -6,14 +6,14 @@ require 'strscan'
6
6
  # found.
7
7
  #
8
8
  # https://puppet.com/docs/puppet/latest/style_guide.html#quoting
9
- PuppetLint.new_check(:variables_not_enclosed) do
10
- STRING_TOKEN_TYPES = Set[
11
- :DQMID,
12
- :DQPOST,
13
- :HEREDOC_MID,
14
- :HEREDOC_POST,
15
- ]
9
+ STRING_TOKEN_TYPES = Set[
10
+ :DQMID,
11
+ :DQPOST,
12
+ :HEREDOC_MID,
13
+ :HEREDOC_POST,
14
+ ]
16
15
 
16
+ PuppetLint.new_check(:variables_not_enclosed) do
17
17
  def check
18
18
  invalid_tokens = tokens.select do |token|
19
19
  token.type == :UNENC_VARIABLE
@@ -74,6 +74,7 @@ PuppetLint.new_check(:variables_not_enclosed) do
74
74
  var_token.value = var_name
75
75
 
76
76
  return if str_token.nil?
77
+
77
78
  str_token.value = "-#{text}#{str_token.value}"
78
79
  end
79
80
 
@@ -2,16 +2,16 @@
2
2
  # record a warning for each instance found.
3
3
  #
4
4
  # No style guide reference
5
- PuppetLint.new_check(:variable_contains_dash) do
6
- VARIABLE_DASH_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
5
+ VARIABLE_DASH_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
7
6
 
7
+ PuppetLint.new_check(:variable_contains_dash) do
8
8
  def check
9
9
  invalid_tokens = tokens.select do |token|
10
10
  VARIABLE_DASH_TYPES.include?(token.type)
11
11
  end
12
12
 
13
13
  invalid_tokens.each do |token|
14
- next unless %r{-}.match?(token.value.gsub(%r{\[.+?\]}, ''))
14
+ next unless token.value.gsub(%r{\[.+?\]}, '').include?('-')
15
15
 
16
16
  notify(
17
17
  :warning,
@@ -2,9 +2,9 @@
2
2
  # letter and record a warning for each instance found.
3
3
  #
4
4
  # No style guide reference
5
- PuppetLint.new_check(:variable_is_lowercase) do
6
- VARIABLE_LOWERCASE_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
5
+ VARIABLE_LOWERCASE_TYPES = Set[:VARIABLE, :UNENC_VARIABLE]
7
6
 
7
+ PuppetLint.new_check(:variable_is_lowercase) do
8
8
  def check
9
9
  invalid_tokens = tokens.select do |token|
10
10
  VARIABLE_LOWERCASE_TYPES.include?(token.type)
@@ -10,6 +10,7 @@ PuppetLint.new_check(:'140chars') do
10
10
  result = PuppetLint::LineLengthCheck.check(idx + 1, line, 140)
11
11
 
12
12
  next if result.nil?
13
+
13
14
  notify(*result)
14
15
  end
15
16
  end
@@ -9,8 +9,9 @@ PuppetLint.new_check(:'80chars') do
9
9
  result = PuppetLint::LineLengthCheck.check(idx + 1, line, 80)
10
10
 
11
11
  next if result.nil?
12
+
12
13
  notify(*result)
13
14
  end
14
15
  end
15
16
  end
16
- PuppetLint.configuration.send('disable_80chars')
17
+ PuppetLint.configuration.send(:disable_80chars)
@@ -2,9 +2,9 @@
2
2
  # are not aligned with other arrows in that grouping.
3
3
  #
4
4
  # https://puppet.com/docs/puppet/latest/style_guide.html#spacing-indentation-and-whitespace
5
- PuppetLint.new_check(:arrow_alignment) do
6
- COMMENT_TYPES = Set[:COMMENT, :SLASH_COMMENT, :MLCOMMENT]
5
+ COMMENT_TYPES = Set[:COMMENT, :SLASH_COMMENT, :MLCOMMENT]
7
6
 
7
+ PuppetLint.new_check(:arrow_alignment) do
8
8
  def check
9
9
  resource_indexes.each do |res_idx|
10
10
  arrow_column = [0]
@@ -24,7 +24,8 @@ PuppetLint.new_check(:arrow_alignment) do
24
24
  next if resource_tokens[first_arrow].line == resource_tokens[last_arrow].line
25
25
 
26
26
  resource_tokens.each do |token|
27
- if token.type == :FARROW
27
+ case token.type
28
+ when :FARROW
28
29
  param_token = token.prev_code_token
29
30
 
30
31
  if param_token.type == :DQPOST
@@ -54,17 +55,15 @@ PuppetLint.new_check(:arrow_alignment) do
54
55
  this_arrow_column += 1
55
56
  end
56
57
 
57
- if arrow_column[level_idx] < this_arrow_column
58
- arrow_column[level_idx] = this_arrow_column
59
- end
58
+ arrow_column[level_idx] = this_arrow_column if arrow_column[level_idx] < this_arrow_column
60
59
 
61
60
  (level_tokens[level_idx] ||= []) << token
62
- elsif token.type == :LBRACE
61
+ when :LBRACE
63
62
  level_idx += 1
64
63
  arrow_column << 0
65
64
  level_tokens[level_idx] ||= []
66
65
  param_column << nil
67
- elsif token.type == :RBRACE || token.type == :SEMIC
66
+ when :RBRACE, :SEMIC
68
67
  if (level_tokens[level_idx] ||= []).map(&:line).uniq.length > 1
69
68
  level_tokens[level_idx].each do |arrow_tok|
70
69
  next if arrow_tok.column == arrow_column[level_idx] || level_tokens[level_idx].size == 1
@@ -117,7 +116,8 @@ PuppetLint.new_check(:arrow_alignment) do
117
116
  new_ws_len += (problem[:arrow_column] - problem[:token].column)
118
117
  end
119
118
 
120
- raise PuppetLint::NoFix if new_ws_len < 0
119
+ raise PuppetLint::NoFix if new_ws_len.negative?
120
+
121
121
  new_ws = ' ' * new_ws_len
122
122
 
123
123
  if problem[:token].prev_token.type == :WHITESPACE
@@ -2,9 +2,9 @@
2
2
  # characters and record an error for each instance found.
3
3
  #
4
4
  # https://puppet.com/docs/puppet/latest/style_guide.html#spacing-indentation-and-whitespace
5
- PuppetLint.new_check(:hard_tabs) do
6
- WHITESPACE_TYPES = Set[:INDENT, :WHITESPACE]
5
+ WHITESPACE_TYPES = Set[:INDENT, :WHITESPACE]
7
6
 
7
+ PuppetLint.new_check(:hard_tabs) do
8
8
  def check
9
9
  invalid_tokens = tokens.select do |token|
10
10
  WHITESPACE_TYPES.include?(token.type) && token.value.include?("\t")
@@ -18,12 +18,12 @@ class PuppetLint::LineLengthCheck
18
18
 
19
19
  [
20
20
  :warning,
21
- message: "line has more than #{character_count} characters",
22
- line: line_number,
23
- column: character_count,
24
- description: 'Test the raw manifest string for lines containing more than #{character_count} characters and record a warning for each instance found. '\
25
- 'The only exceptions to this rule are lines containing URLs and template() calls which would hurt readability if split.',
26
- help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#spacing-indentation-and-whitespace',
21
+ { message: "line has more than #{character_count} characters",
22
+ line: line_number,
23
+ column: character_count,
24
+ description: "Test the raw manifest string for lines containing more than #{character_count} characters and record a warning for each instance found. " \
25
+ 'The only exceptions to this rule are lines containing URLs and template() calls which would hurt readability if split.',
26
+ help_uri: 'https://puppet.com/docs/puppet/latest/style_guide.html#spacing-indentation-and-whitespace' },
27
27
  ]
28
28
  end
29
29
  end