Class: PuppetLint::Checks

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet-lint/checks.rb

Overview

Internal: Various methods that orchestrate the actions of the puppet-lint check plugins.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeChecks

Public: Initialise a new PuppetLint::Checks object.



10
11
12
# File 'lib/puppet-lint/checks.rb', line 10

def initialize
  @problems = []
end

Instance Attribute Details

#problemsObject

Public: Get an Array of problem Hashes.



7
8
9
# File 'lib/puppet-lint/checks.rb', line 7

def problems
  @problems
end

Instance Method Details

#enabled_checksObject

Internal: Get a list of checks that have not been disabled.

Returns an Array of String check names.



73
74
75
76
77
78
79
# File 'lib/puppet-lint/checks.rb', line 73

def enabled_checks
  @enabled_checks ||= Proc.new do
    PuppetLint.configuration.checks.select { |check|
      PuppetLint.configuration.send("#{check}_enabled?")
    }
  end.call
end

#load_data(path, content) ⇒ Object

Internal: Tokenise the manifest code and prepare it for checking.

path - The path to the file as passed to puppet-lint as a String. content - The String manifest code to be checked.

Returns nothing.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/puppet-lint/checks.rb', line 20

def load_data(path, content)
  lexer = PuppetLint::Lexer.new
  PuppetLint::Data.path = path
  PuppetLint::Data.manifest_lines = content.split("\n", -1)
  begin
    PuppetLint::Data.tokens = lexer.tokenise(content)
    PuppetLint::Data.parse_control_comments
  rescue PuppetLint::LexerError => e
    problems << {
      :kind     => :error,
      :check    => :syntax,
      :message  => 'Syntax error (try running `puppet parser validate <file>`)',
      :line     => e.line_no,
      :column   => e.column,
      :fullpath => PuppetLint::Data.fullpath,
      :path     => PuppetLint::Data.path,
      :filename => PuppetLint::Data.filename,
    }
    PuppetLint::Data.tokens = []
  end
end

#manifestObject

Internal: Render the fixed manifest.

Returns the manifest as a String.



84
85
86
# File 'lib/puppet-lint/checks.rb', line 84

def manifest
  PuppetLint::Data.tokens.map { |t| t.to_manifest }.join('')
end

#run(fileinfo, data) ⇒ Object

Internal: Run the lint checks over the manifest code.

fileinfo - A Hash containing the following:

:fullpath - The expanded path to the file as a String.
:filename - The name of the file as a String.
:path     - The original path to the file as passed to puppet-lint as
            a String.

data - The String manifest code to be checked.

Returns an Array of problem Hashes.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/puppet-lint/checks.rb', line 52

def run(fileinfo, data)
  load_data(fileinfo, data)

  checks_run = []
  enabled_checks.each do |check|
    klass = PuppetLint.configuration.check_object[check].new
    problems = klass.run

    if PuppetLint.configuration.fix
      @problems.concat(klass.fix_problems)
    else
      @problems.concat(problems)
    end
  end

  @problems
end