Class: PreCommit::DebuggerCheck

Inherits:
Object
  • Object
show all
Defined in:
lib/pre-commit/checks/debugger_check.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#error_messageObject

Returns the value of attribute error_message.



4
5
6
# File 'lib/pre-commit/checks/debugger_check.rb', line 4

def error_message
  @error_message
end

#grep_commandObject

Returns the value of attribute grep_command.



4
5
6
# File 'lib/pre-commit/checks/debugger_check.rb', line 4

def grep_command
  @grep_command
end

#staged_filesObject

Returns the value of attribute staged_files.



4
5
6
# File 'lib/pre-commit/checks/debugger_check.rb', line 4

def staged_files
  @staged_files
end

Class Method Details

.call(quiet = false) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/pre-commit/checks/debugger_check.rb', line 6

def self.call(quiet=false)
  dirs = ['app/', 'lib/', 'script/', 'vendor/', 'test/'].reject {|d| !File.exists?(d)}
  check = new
  check.staged_files = Utils.staged_files(*dirs)

  result = check.run
  if !quiet && !result
    $stderr.puts check.error_message
    $stderr.puts
    check.print_dash_n_reminder
  end
  result
end

Instance Method Details

#detected_bad_code?Boolean



32
33
34
# File 'lib/pre-commit/checks/debugger_check.rb', line 32

def detected_bad_code?
  !system("git diff --cached -Sdebugger --quiet --exit-code")
end

#instances_of_debugger_violationsObject



36
37
38
39
# File 'lib/pre-commit/checks/debugger_check.rb', line 36

def instances_of_debugger_violations
  cmd = grep_command || "git grep"
  `#{cmd} -nH debugger #{staged_files}`
end


41
42
43
44
# File 'lib/pre-commit/checks/debugger_check.rb', line 41

def print_dash_n_reminder
  $stderr.puts 'You can bypass this check using `git commit -n`'
  $stderr.puts
end

#runObject



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/pre-commit/checks/debugger_check.rb', line 20

def run
  return true if staged_files.empty?

  if detected_bad_code?
    @error_message = "pre-commit: debugger statement(s) found:\n"
    @error_message += instances_of_debugger_violations
    false
  else
    true
  end
end