module UnusedVarChecker

Public Class Methods

check_escapable(elem) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 17
def self.check_escapable(elem)
  escapables = [
    '', 'var', 'let', 'const', 'constructor', 'class', 'super', 'function', 'static', 'console',
    'prototype', 'get', 'set', 'this', 'alert', 'prompt', 'return', 'export', 'import', 'default',
    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'
  ]

  escapables.include?(elem)
end
check_unused_var(file) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 80
def self.check_unused_var(file)
  variable_instances = []
  var_instances_count_hash = {}
  lines_variables_hash = {}

  line_check = lambda { |line|
    commented_line = line.content.to_s.match?(%r{^\W+[\/\/]})

    from_parentsis = vars_parentesis(line.content.to_s) if !commented_line
    lines_variables_hash[line.number] = from_parentsis if from_parentsis
    variable_instances << from_parentsis if !check_escapable(from_parentsis) && !from_parentsis.nil?

    detected_var = match_variable(line.content.to_s) if !commented_line
    detected_accessd_var = match_accessd_var(line.content.to_s) if !commented_line

    lines_variables_hash[line.number] = detected_var if detected_var
    lines_variables_hash[line.number] = detected_accessd_var if detected_accessd_var

    variable_instances << detected_var if !check_escapable(detected_var) && !detected_var.nil?
    variable_instances << detected_accessd_var if !check_escapable(detected_accessd_var) && !detected_accessd_var.nil?
  }

  file.lines.each(&line_check)
  variable_instances.map { |el|
    var_instances_count_hash[el] = var_instances_count_hash[el] ? var_instances_count_hash[el] += 1 : 1
  }

  create_variables_check_info(var_instances_count_hash, lines_variables_hash, file.filename)
end
check_unused_var_res(error_bin, path) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 4
def self.check_unused_var_res(error_bin, path)
  unused_var = check_unused_var(path)
  unused_var.each { |line, _variabl| error_bin << line if !unused_var.empty? }

  error_bin
end
create_variables_check_info(count_vs_var, lines_vs_var, filename) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 65
def self.create_variables_check_info(count_vs_var, lines_vs_var, filename)
  err_type = 'UNUSED_VAR_ERR'

  lines_with_unused_var = []

  count_vs_var.each { |var_a, counter|
    lines_vs_var.each { |line, var_b|
      lines_with_unused_var << line if counter == 1 && var_a == var_b
      raise_err(line, err_type, filename, var_b) if counter == 1 && var_a == var_b
    }
  }

  lines_with_unused_var
end
match_accessd_var(vari) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 42
def self.match_accessd_var(vari)
  /(?<lhs>[\w+\-*]+)[\[](?<rhs>[\w+\-*]+)/ =~ vari
  sqad = Regexp.last_match(:rhs)

  /(?<lhs>[\w+\-*]+)\.(?<rhs>[\w+\-*]+)/ =~ vari
  awda = Regexp.last_match(:rhs)

  sqad || awda
end
match_variable(contents) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 52
def self.match_variable(contents)
  /(?<lhs>\w+)\s*=\s*(?<rhs>\w*\W*)/ =~ contents
  equals_var = Regexp.last_match(:lhs)

  /(?<lhs>(let|var|const))\s{1,}(?<rhs>[\w\-]*)/ =~ contents
  lazy_init_var = Regexp.last_match(:rhs)

  /(?<lhs>\w+)\s*(?<rhs>[\(\w+\)]*)/ =~ contents
  func_call_var = Regexp.last_match(:lhs)

  lazy_init_var || func_call_var || equals_var
end
vars_parentesis(paramz) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 27
def self.vars_parentesis(paramz)
  /(?<lhs>[\(])(?<rhs>[^\{]*[\w\-]+)/ =~ paramz
  vars = Regexp.last_match(:rhs)
  vars = vars.to_s.split if vars
  vars_match_data = vars.to_s.split

  each_var = vars_match_data.collect { |var|
    /([\w\-]+)/ =~ var
    wanted = Regexp.last_match(0)
    wanted = wanted.to_s
    wanted
  }
  each_var[0] if each_var[0] && !each_var.nil?
end

Private Class Methods

raise_err(line, message, path, variable) click to toggle source
# File lib/jscop/unused_var_checker.rb, line 11
                     def self.raise_err(line, message, path, variable)
  error = Error.new(line, message, path, variable)
  unused_var_err = error.print_err(line, message, path, variable) if error
  unused_var_err
end