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.
94 95 96 97 98 99 100 |
# File 'lib/puppet-lint/checks.rb', line 94 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.
105 106 107 |
# File 'lib/puppet-lint/checks.rb', line 105 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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# 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 rescue => e puts <<-END Whoops! It looks like puppet-lint has encountered an error that it doesn't know how to handle. Please open an issue at https://github.com/rodjek/puppet-lint and paste the following output into the issue description. --- puppet-lint version: #{PuppetLint::VERSION} ruby version: #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} platform: #{RUBY_PLATFORM} file path: #{fileinfo} file contents: ``` #{File.read(fileinfo) if File.readable?(fileinfo)} ``` error: ``` #{e.class}: #{e.} #{e.backtrace.join("\n")} ``` END exit 1 end |