Class: RailsBestPractices::Reviews::Review
- Inherits:
-
Core::Check
- Object
- CodeAnalyzer::Checker
- Core::Check
- RailsBestPractices::Reviews::Review
- Defined in:
- lib/rails_best_practices/reviews/review.rb
Overview
A Review class that takes charge of reviewing one rails best practice.
Direct Known Subclasses
AddModelVirtualAttributeReview, AlwaysAddDbIndexReview, CheckDestroyReturnValueReview, CheckSaveReturnValueReview, DefaultScopeIsEvilReview, DryBundlerInCapistranoReview, HashSyntaxReview, IsolateSeedDataReview, KeepFindersOnTheirOwnModelReview, LawOfDemeterReview, MoveCodeIntoControllerReview, MoveCodeIntoHelperReview, MoveCodeIntoModelReview, MoveFinderToNamedScopeReview, MoveModelLogicIntoModelReview, NeedlessDeepNestingReview, NotRescueExceptionReview, NotUseDefaultRouteReview, NotUseTimeAgoInWordsReview, OveruseRouteCustomizationsReview, ProtectMassAssignmentReview, RemoveEmptyHelpersReview, RemoveUnusedMethodsInControllersReview, RemoveUnusedMethodsInHelpersReview, RemoveUnusedMethodsInModelsReview, ReplaceComplexCreationWithFactoryMethodReview, ReplaceInstanceVariableWithLocalVariableReview, RestrictAutoGeneratedRoutesReview, SimplifyRenderInControllersReview, SimplifyRenderInViewsReview, UseBeforeFilterReview, UseModelAssociationReview, UseMultipartAlternativeAsContentTypeOfEmailReview, UseObserverReview, UseParenthesesInMethodDefReview, UseQueryAttributeReview, UseSayWithTimeInMigrationsReview, UseScopeAccessReview, UseTurboSprocketsRails3Review
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
-
#model_associations ⇒ Hash
get the model associations from Prepares.
-
#model_attributes ⇒ Hash
get the model attributes from Prepares.
-
#models ⇒ Array
get the models from Prepares.
-
#remember_variable_use_count(node) ⇒ Object
remember use count for the variable in the call or assign node.
-
#reset_variable_use_count ⇒ Object
reset @variable_use_count hash.
-
#variable(node) ⇒ Object
find variable in the call or field node.
-
#variable_use_count ⇒ Object
return @variable_use_count hash.
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_associations ⇒ Hash
get the model associations from Prepares.
53 54 55 |
# File 'lib/rails_best_practices/reviews/review.rb', line 53 def model_associations @model_associations ||= Prepares.model_associations end |
#model_attributes ⇒ Hash
get the model attributes from Prepares.
60 61 62 |
# File 'lib/rails_best_practices/reviews/review.rb', line 60 def model_attributes @model_attributes ||= Prepares.model_attributes end |
#models ⇒ Array
get the models from Prepares.
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_count ⇒ Object
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_count ⇒ Object
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 |