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.
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 |
#manifest ⇒ Object
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 |