Class: CodeAnalyzer::Checker
- Inherits:
-
Object
- Object
- CodeAnalyzer::Checker
- Defined in:
- lib/code_analyzer/checker.rb
Overview
A checker class that takes charge of checking the sexp.
Class Method Summary collapse
- .add_callback(*names, &block) ⇒ Object
- .callbacks ⇒ Object
- .get_callbacks(name) ⇒ Object
- .interesting_files(*file_patterns) ⇒ Object
- .interesting_nodes(*nodes) ⇒ Object
Instance Method Summary collapse
-
#add_warning(message, filename = @node.file, line_number = @node.line_number) ⇒ Object
add an warning.
-
#interesting_files ⇒ Object
interesting files that the check will parse.
-
#interesting_nodes ⇒ Object
interesting nodes that the check will parse.
-
#node_end(node) ⇒ Object
delegate to end_### according to the sexp_type, like.
-
#node_start(node) ⇒ Object
delegate to start_### according to the sexp_type, like.
-
#parse_file?(node_file) ⇒ Boolean
check if the checker will parse the node file.
-
#warnings ⇒ Object
all warnings.
Class Method Details
.add_callback(*names, &block) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/code_analyzer/checker.rb', line 76 def add_callback(*names, &block) names.each do |name| callbacks[name] ||= [] callbacks[name] << block end end |
.callbacks ⇒ Object
83 84 85 |
# File 'lib/code_analyzer/checker.rb', line 83 def callbacks @callbacks ||= {} end |
.get_callbacks(name) ⇒ Object
71 72 73 74 |
# File 'lib/code_analyzer/checker.rb', line 71 def get_callbacks(name) callbacks[name] ||= [] callbacks[name] end |
.interesting_files(*file_patterns) ⇒ Object
66 67 68 69 |
# File 'lib/code_analyzer/checker.rb', line 66 def interesting_files(*file_patterns) @interesting_files ||= [] @interesting_files += file_patterns end |
.interesting_nodes(*nodes) ⇒ Object
61 62 63 64 |
# File 'lib/code_analyzer/checker.rb', line 61 def interesting_nodes(*nodes) @interesting_nodes ||= [] @interesting_nodes += nodes end |
Instance Method Details
#add_warning(message, filename = @node.file, line_number = @node.line_number) ⇒ Object
add an warning.
51 52 53 |
# File 'lib/code_analyzer/checker.rb', line 51 def add_warning(, filename = @node.file, line_number = @node.line_number) warnings << Warning.new(filename: filename, line_number: line_number, message: ) end |
#interesting_files ⇒ Object
interesting files that the check will parse.
12 13 14 |
# File 'lib/code_analyzer/checker.rb', line 12 def interesting_files self.class.interesting_files end |
#interesting_nodes ⇒ Object
interesting nodes that the check will parse.
7 8 9 |
# File 'lib/code_analyzer/checker.rb', line 7 def interesting_nodes self.class.interesting_nodes end |
#node_end(node) ⇒ Object
delegate to end_### according to the sexp_type, like
end_call
end_def
41 42 43 44 |
# File 'lib/code_analyzer/checker.rb', line 41 def node_end(node) @node = node self.class.get_callbacks("end_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) } end |
#node_start(node) ⇒ Object
delegate to start_### according to the sexp_type, like
start_call
start_def
30 31 32 33 |
# File 'lib/code_analyzer/checker.rb', line 30 def node_start(node) @node = node self.class.get_callbacks("start_#{node.sexp_type}".to_sym).each { |block| self.instance_exec(node, &block) } end |
#parse_file?(node_file) ⇒ Boolean
check if the checker will parse the node file.
20 21 22 |
# File 'lib/code_analyzer/checker.rb', line 20 def parse_file?(node_file) interesting_files.any? { |pattern| node_file =~ pattern } end |
#warnings ⇒ Object
all warnings.
56 57 58 |
# File 'lib/code_analyzer/checker.rb', line 56 def warnings @warnings ||= [] end |