class Pipeline::ESLint

Public Class Methods

new(trigger, tracker) click to toggle source
Calls superclass method Pipeline::BaseTask::new
# File lib/pipeline/tasks/eslint.rb, line 10
def initialize(trigger, tracker)
  super(trigger,tracker)
  @name = "ESLint/ScanJS"
  @description = "Source analysis for JavaScript"
  @stage = :code
  @labels << "code" << "javascript"
end

Public Instance Methods

analyze() click to toggle source
# File lib/pipeline/tasks/eslint.rb, line 25
def analyze
  # puts @result
  begin
    parsed = JSON.parse(@result)
    parsed.each do |result|
      findings = {}
      prints = []
      messages = []
      result['messages'].each do |msg|
        message = msg['message']
        findings[message] = {} if findings[message].nil?
        findings[message][:detail] = msg['ruleId']
        if messages.include?(message)
          findings[message][:source] = "#{findings[message][:source]},#{msg['line']}" unless findings[message][:source].include?(",#{msg['line']}")
        else
          findings[message][:source] = "#{result['filePath']} Line: #{msg['line']}"
          messages << message
        end
        findings[message][:severity] = severity(msg['severity'].to_s)
      end
      findings.each do |key, value|
        print = fingerprint("#{key}#{value[:detail]}#{value[:source]}#{value[:sev]}")
        unless prints.include?(print)
          prints << print
          report key, value[:detail], value[:source], value[:severity], print
        end
      end
    end
  rescue Exception => e
    Pipeline.warn e.message
    Pipeline.warn e.backtrace
  end
end
run() click to toggle source
# File lib/pipeline/tasks/eslint.rb, line 18
def run
  rootpath = @trigger.path
  currentpath = File.expand_path File.dirname(__FILE__)
  Pipeline.debug "ESLint Config Path: #{currentpath}"
  @result = `eslint -c #{currentpath}/scanjs-eslintrc --no-color --quiet --format json #{rootpath}`
end
supported?() click to toggle source
# File lib/pipeline/tasks/eslint.rb, line 59
def supported?
  supported=runsystem(true, "eslint", "-c", "~/.scanjs-eslintrc")
  if supported =~ /command not found/
    Pipeline.notify "Install eslint and the scanjs .eslintrc"
    return false
  else
    return true
  end
end