Class: PuppetLint::Checks
- Inherits:
-
Object
- Object
- PuppetLint::Checks
- 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
-
#problems ⇒ Object
Public: Get an Array of problem Hashes.
Instance Method Summary collapse
-
#enabled_checks ⇒ Object
Internal: Get a list of checks that have not been disabled.
-
#initialize ⇒ Checks
constructor
Public: Initialise a new PuppetLint::Checks object.
-
#load_data(path, content) ⇒ Object
Internal: Tokenise the manifest code and prepare it for checking.
-
#manifest ⇒ Object
Internal: Render the fixed manifest.
-
#run(fileinfo, data) ⇒ Object
Internal: Run the lint checks over the manifest code.
Constructor Details
#initialize ⇒ Checks
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
#problems ⇒ Object
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_checks ⇒ Object
Internal: Get a list of checks that have not been disabled.
Returns an Array of String check names.
77 78 79 80 81 82 83 |
# File 'lib/puppet-lint/checks.rb', line 77 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") 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 |
#manifest ⇒ Object
Internal: Render the fixed manifest.
Returns the manifest as a String.
88 89 90 |
# File 'lib/puppet-lint/checks.rb', line 88 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 69 70 71 72 |
# 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 checks_run << klass else @problems.concat(problems) end end checks_run.each do |check| @problems.concat(check.fix_problems) end @problems end |