Module: UnusedVarChecker

Defined in:
lib/jscop/unused_var_checker.rb

Class Method Summary collapse

Class Method Details

.check_unused_var(file) ⇒ Object



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
90
91
92
# File 'lib/jscop/unused_var_checker.rb', line 56

def self.check_unused_var(file)
  variable_instances = []
  var_instances_count_hash = {}
  lines_variables_hash = {}

  line_check = lambda { |line|
    /([\(][\w\W]+[\)])/ =~ line.content.to_s
    vars_match_data = Regexp.last_match

    vars_match_data = vars_match_data if !vars_match_data.nil?
    vars_match_data_str_arr = vars_match_data.to_s.split

    escapables = ['var', 'let', '', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

    vars_match_data_str_arr.collect { |var|
      /([\w\-]+)/ =~ var
      wanted = Regexp.last_match
      wanted = wanted.to_s
      lines_variables_hash[line.number] = wanted if wanted
      variable_instances << wanted if !escapables.include?(wanted)
    }

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

    detected_variable = match_variable(line.content.to_s) if !commented_line
    lines_variables_hash[line.number] = detected_variable if detected_variable
    variable_instances << detected_variable if detected_variable
  }

  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) ⇒ Object



4
5
6
7
8
9
# 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) ⇒ Object

rubocop:enable Lint/UselessAssignment



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jscop/unused_var_checker.rb', line 41

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

.extract_from_parentesis(expresn) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/jscop/unused_var_checker.rb', line 17

def self.extract_from_parentesis(expresn)
  /([\(][\w\W]+[\)])/ =~ expresn
  vars_match_data = Regexp.last_match

  vars_match_data_str_arr = vars_match_data.to_s.split

  vars_match_data_str_arr.collect { |var|
    /([\w\-]+)/ =~ var
    wanted = Regexp.last_match
    wanted = wanted.to_s

    all_params << wanted.to_s if !wanted.empty?
  }
end

.match_variable(contents) ⇒ Object

rubocop:disable Lint/UselessAssignment



34
35
36
37
38
# File 'lib/jscop/unused_var_checker.rb', line 34

def self.match_variable(contents)
  /(?<lhs>\w+)\s*=\s*(?<rhs>\w*\W*)/ =~ contents

  lhs
end