Class: RailsBestPractices::Reviews::LawOfDemeterReview

Inherits:
Review
  • Object
show all
Defined in:
lib/rails_best_practices/reviews/law_of_demeter_review.rb

Overview

Review to make sure not to avoid the law of demeter.

See the best practice details here rails-bestpractices.com/posts/2010/07/24/the-law-of-demeter/

Implementation:

Review process:

check all method calls to see if there is method call to the association object.
if there is a call node whose receiver is an object of model (compare by name),
and whose message is an association of that model (also compare by name),
and outer the call node, it is also a call node,
then it violate the law of demeter.

Constant Summary collapse

ASSOCIATION_METHODS =
%w[belongs_to has_one].freeze

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

Method Summary

Methods inherited from Review

#model_associations, #model_attributes, #models, #remember_variable_use_count, #reset_variable_use_count, #variable, #variable_use_count

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