CSC/ECE 517 Spring 2019 - Project E1916. Fix Code Climate issues in controllers with names beginning with A through N

From Expertiza_Wiki
Jump to navigation Jump to search

Description of the project

Project Team Member

swang28 Shuai Wang hchang15 Huan Chang gyu22 Guangyu Yu

Project Task

There is some code smells detected by the code climate. These violate many of the ruby/rails best practices and needs to be rectified.

Our team is to fix all code smells except:

  • Assignment Branch Condition size for [method name] is too high
  • Perceived complexity for [method name] is too high.
  • Cyclomatic complexity for [method name] is too high.
  • Method [method name] has a Cognitive Complexity of XX (exceeds 5 allowed). Consider refactoring.
  • File [file name] has XXX lines of code (exceeds 250 allowed). Consider refactoring.
  • Class [class name] has XX methods (exceeds 20 allowed). Consider refactoring.
  • Method [method name] has XX lines of code (exceeds 25 allowed). Consider refactoring.
  • Mass assignment is not restricted using attr_accessible.
  • Potentially dangerous attribute available for mass assignment.

Files modified in the project

In all files in app/controllers/ with names beginning with A through N, except assignment_controller.rb.

Main issue files:

  • app/controllers/assessment360_controller.rb. MAINTAINABILITY C
  • app/controllers/automated_metareviews_controller.rb MAINTAINABILITY B
  • app/controllers/grades_controller.rb MAINTAINABILITY B
  • app/controllers/impersonate_controller.rb MAINTAINABILITY C
  • app/controllers/import_file_controller.rb MAINTAINABILITY f
  • app/controllers/lottery_controller.rb MAINTAINABILITY C

Typical Issues and Improvements

Issue: Use a guard clause instead of wrapping the code inside a conditional expression.

Example
    if assignment.try(:is_selfreview_enabled) and unsubmitted_self_review?(participant.try(:id))
      return false
    else
      return true
    end
Solution
    return false if assignment.try(:is_selfreview_enabled) and unsubmitted_self_review?(participant.try(:id))
    true