Class: RailsBestPractices::Reviews::Review

Inherits:
Core::Check
  • Object
show all
Defined in:
lib/rails_best_practices/reviews/review.rb

Overview

A Review class that takes charge of reviewing one rails best practice.

Constant Summary

Constants inherited from Core::Check

Core::Check::ALL_FILES, Core::Check::CAPFILE, Core::Check::CONFIG_FILES, Core::Check::CONTROLLER_FILES, Core::Check::DEPLOY_FILES, Core::Check::GEMFILE_LOCK, Core::Check::HELPER_FILES, Core::Check::INITIALIZER_FILES, Core::Check::MAILER_FILES, Core::Check::MIGRATION_FILES, Core::Check::MODEL_FILES, Core::Check::PARTIAL_VIEW_FILES, Core::Check::ROUTE_FILES, Core::Check::SCHEMA_FILE, Core::Check::SKIP_FILES, Core::Check::VIEW_FILES

Instance Method Summary collapse

Methods inherited from Core::Check

#add_error, debug, debug?, #errors, #initialize, #is_ignored?, #is_interesting_file?, #method_missing, #parse_file?, #regex_ignored_files, #url, url

Constructor Details

This class inherits a constructor from RailsBestPractices::Core::Check

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RailsBestPractices::Core::Check

Instance Method Details

#model_associationsHash

get the model associations from Prepares.

Returns:

  • (Hash)


53
54
55
# File 'lib/rails_best_practices/reviews/review.rb', line 53

def model_associations
  @model_associations ||= Prepares.model_associations
end

#model_attributesHash

get the model attributes from Prepares.

Returns:

  • (Hash)


60
61
62
# File 'lib/rails_best_practices/reviews/review.rb', line 60

def model_attributes
  @model_attributes ||= Prepares.model_attributes
end

#modelsArray

get the models from Prepares.

Returns:

  • (Array)


46
47
48
# File 'lib/rails_best_practices/reviews/review.rb', line 46

def models
  @models ||= Prepares.models
end

#remember_variable_use_count(node) ⇒ Object

remember use count for the variable in the call or assign node.

find the variable in the call or assign node, then save it to as key in @variable_use_count hash, and add the call count (hash value).



14
15
16
17
18
19
20
21
# File 'lib/rails_best_practices/reviews/review.rb', line 14

def remember_variable_use_count(node)
  variable_node = variable(node)
  if variable_node && variable_node.to_s != 'self' && @last_variable_node != variable_node
    @last_variable_node = variable_node
    variable_use_count[variable_node.to_s] ||= 0
    variable_use_count[variable_node.to_s] += 1
  end
end

#reset_variable_use_countObject

reset @variable_use_count hash.



29
30
31
# File 'lib/rails_best_practices/reviews/review.rb', line 29

def reset_variable_use_count
  @variable_use_count = nil
end

#variable(node) ⇒ Object

find variable in the call or field node.



34
35
36
37
38
39
40
41
# File 'lib/rails_best_practices/reviews/review.rb', line 34

def variable(node)
  while %i[call field method_add_arg method_add_block].include?(node.receiver.sexp_type)
    node = node.receiver
  end
  return if %i[fcall hash].include?(node.receiver.sexp_type)

  node.receiver
end

#variable_use_countObject

return @variable_use_count hash.



24
25
26
# File 'lib/rails_best_practices/reviews/review.rb', line 24

def variable_use_count
  @variable_use_count ||= {}
end