fga-gpp-mds/2017.1-Escola-X

View on GitHub
app/controllers/sessions_controller.rb

Summary

Maintainability
A
2 hrs
Test Coverage

Assignment Branch Condition size for create is too high. [52.52/15]
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])

This cop checks that the ABC size of methods is not higher than the configured maximum. The ABC size is based on assignments, branches (method calls), and conditions. See http://c2.com/cgi/wiki?AbcMetric

Method has too many lines. [30/10]
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])

This cop checks if the length of a method exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable.

Perceived complexity for create is too high. [16/7]
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])

This cop tries to produce a complexity score that's a measure of the complexity the reader experiences when looking at a method. For that reason it considers when nodes as something that doesn't add as much complexity as an if or a &&. Except if it's one of those special case/when constructs where there's no expression after case. Then the cop treats it as an if/elsif/elsif... and lets all the when nodes count. In contrast to the CyclomaticComplexity cop, this cop considers else nodes as adding complexity.

Example:

def my_method                   # 1
  if cond                       # 1
    case var                    # 2 (0.8 + 4 * 0.2, rounded)
    when 1 then func_one
    when 2 then func_two
    when 3 then func_three
    when 4..10 then func_other
    end
  else                          # 1
    do_something until a && b   # 2
  end                           # ===
end                             # 7 complexity points

Cyclomatic complexity for create is too high. [12/3]
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])

This cop checks that the cyclomatic complexity of methods is not higher than the configured maximum. The cyclomatic complexity is the number of linearly independent paths through a method. The algorithm counts decision points and adds one.

An if statement (or unless or ?:) increases the complexity by one. An else branch does not, since it doesn't add a decision point. The && operator (or keyword and) can be converted to a nested if statement, and ||/or is shorthand for a sequence of ifs, so they also add one. Loops can be said to have an exit condition, so they add one.

Method create has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])
Severity: Minor
Found in app/controllers/sessions_controller.rb - About 1 hr to fix

Cognitive Complexity

Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

A method's cognitive complexity is based on a few simple rules:

  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
  • Code is considered more complex for each "break in the linear flow of the code"
  • Code is considered more complex when "flow breaking structures are nested"

Further reading

Method create has 30 lines of code (exceeds 25 allowed). Consider refactoring.
Open

  def create
    if ( !Alumn.find_by_registry(params[:login]).nil? )
      @user = Alumn.find_by_registry(params[:login])
    elsif ( !Parent.find_by_login(params[:login]).nil? )
      @user = Parent.find_by_login(params[:login])
Severity: Minor
Found in app/controllers/sessions_controller.rb - About 1 hr to fix

    SessionsController#create has approx 14 statements
    Open

      def create
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    A method with Too Many Statements is any method that has a large number of lines.

    Too Many Statements warns about any method that has more than 5 statements. Reek's smell detector for Too Many Statements counts +1 for every simple statement in a method and +1 for every statement within a control structure (if, else, case, when, for, while, until, begin, rescue) but it doesn't count the control structure itself.

    So the following method would score +6 in Reek's statement-counting algorithm:

    def parse(arg, argv, &error)
      if !(val = arg) and (argv.empty? or /\A-/ =~ (val = argv[0]))
        return nil, block, nil                                         # +1
      end
      opt = (val = parse_arg(val, &error))[1]                          # +2
      val = conv_arg(*val)                                             # +3
      if opt and !arg
        argv.shift                                                     # +4
      else
        val[0] = nil                                                   # +5
      end
      val                                                              # +6
    end

    (You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)

    SessionsController#create calls 'Employee.find_by_registry(params[:login])' 2 times
    Open

        elsif ( !Employee.find_by_registry(params[:login]).nil? )
          @user = Employee.find_by_registry(params[:login])
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    SessionsController#create calls 'Alumn.find_by_registry(params[:login])' 2 times
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )
          @user = Alumn.find_by_registry(params[:login])
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    SessionsController#create calls 'Parent.find_by_login(params[:login])' 2 times
    Open

        elsif ( !Parent.find_by_login(params[:login]).nil? )
          @user = Parent.find_by_login(params[:login])
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    SessionsController assumes too much for instance variable '@user'
    Open

    class SessionsController < ApplicationController
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    Classes should not assume that instance variables are set or present outside of the current class definition.

    Good:

    class Foo
      def initialize
        @bar = :foo
      end
    
      def foo?
        @bar == :foo
      end
    end

    Good as well:

    class Foo
      def foo?
        bar == :foo
      end
    
      def bar
        @bar ||= :foo
      end
    end

    Bad:

    class Foo
      def go_foo!
        @bar = :foo
      end
    
      def foo?
        @bar == :foo
      end
    end

    Example

    Running Reek on:

    class Dummy
      def test
        @ivar
      end
    end

    would report:

    [1]:InstanceVariableAssumption: Dummy assumes too much for instance variable @ivar

    Note that this example would trigger this smell warning as well:

    class Parent
      def initialize(omg)
        @omg = omg
      end
    end
    
    class Child < Parent
      def foo
        @omg
      end
    end

    The way to address the smell warning is that you should create an attr_reader to use @omg in the subclass and not access @omg directly like this:

    class Parent
      attr_reader :omg
    
      def initialize(omg)
        @omg = omg
      end
    end
    
    class Child < Parent
      def foo
        omg
      end
    end

    Directly accessing instance variables is considered a smell because it breaks encapsulation and makes it harder to reason about code.

    If you don't want to expose those methods as public API just make them private like this:

    class Parent
      def initialize(omg)
        @omg = omg
      end
    
      private
      attr_reader :omg
    end
    
    class Child < Parent
      def foo
        omg
      end
    end

    Current Support in Reek

    An instance variable must:

    • be set in the constructor
    • or be accessed through a method with lazy initialization / memoization.

    If not, Instance Variable Assumption will be reported.

    SessionsController#create calls 'params[:login]' 6 times
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )
          @user = Alumn.find_by_registry(params[:login])
        elsif ( !Parent.find_by_login(params[:login]).nil? )
          @user = Parent.find_by_login(params[:login])
        elsif ( !Employee.find_by_registry(params[:login]).nil? )
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    Duplication occurs when two fragments of code look nearly identical, or when two fragments of code have nearly identical effects at some conceptual level.

    Reek implements a check for Duplicate Method Call.

    Example

    Here's a very much simplified and contrived example. The following method will report a warning:

    def double_thing()
      @other.thing + @other.thing
    end

    One quick approach to silence Reek would be to refactor the code thus:

    def double_thing()
      thing = @other.thing
      thing + thing
    end

    A slightly different approach would be to replace all calls of double_thing by calls to @other.double_thing:

    class Other
      def double_thing()
        thing + thing
      end
    end

    The approach you take will depend on balancing other factors in your code.

    SessionsController#create performs a nil-check
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )
          @user = Alumn.find_by_registry(params[:login])
        elsif ( !Parent.find_by_login(params[:login]).nil? )
          @user = Parent.find_by_login(params[:login])
        elsif ( !Employee.find_by_registry(params[:login]).nil? )
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    A NilCheck is a type check. Failures of NilCheck violate the "tell, don't ask" principle.

    Additionally, type checks often mask bigger problems in your source code like not using OOP and / or polymorphism when you should.

    Example

    Given

    class Klass
      def nil_checker(argument)
        if argument.nil?
          puts "argument isn't nil!"
        end
      end
    end

    Reek would emit the following warning:

    test.rb -- 1 warning:
      [3]:Klass#nil_checker performs a nil-check. (NilCheck)

    SessionsController#check_if_date_exits doesn't depend on instance state (maybe move it to another class?)
    Open

      def check_if_date_exits(date)
    Severity: Minor
    Found in app/controllers/sessions_controller.rb by reek

    A Utility Function is any instance method that has no dependency on the state of the instance.

    Space inside parentheses detected.
    Open

        if ( @user and @user.authenticate(params[:password]) )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Extra blank line detected.
    Open

    
      def check_if_date_exits(date)

    This cops checks for two or more consecutive blank lines.

    Example:

    # bad - It has two empty lines.
    some_method
    # one empty line
    # two empty lines
    some_method
    
    # good
    some_method
    # one empty line
    some_method

    Space inside parentheses detected.
    Open

        elsif ( !Employee.find_by_registry(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Use empty lines between method definitions.
    Open

      def check_if_date_exits(date)

    This cop checks whether method definitions are separated by one empty line.

    NumberOfEmptyLines can be and integer (e.g. 1 by default) or an array (e.g. [1, 2]) to specificy a minimum and a maximum of empty lines.

    AllowAdjacentOneLineDefs can be used to configure is adjacent one line methods definitions are an offense

    Example:

    # bad
    def a
    end
    def b
    end

    Example:

    # good
    def a
    end
    
    def b
    end

    Space inside parentheses detected.
    Open

        if ( @user and @user.authenticate(params[:password]) )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Don't use parentheses around the condition of an if.
    Open

        if ( @user and @user.authenticate(params[:password]) )

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Missing space after #.
    Open

    #File name: session_controller.rb

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Don't use parentheses around the condition of an elsif.
    Open

          elsif (is_parent?)

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Don't use parentheses around the condition of an elsif.
    Open

          elsif (is_principal?)

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Don't use parentheses around the condition of an elsif.
    Open

          elsif (is_teacher?)

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Don't use parentheses around a method call.
    Open

          if (is_alumn?)

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Don't use parentheses around an unary operation.
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Redundant else-clause.
    Open

          else

    Checks for empty else-clauses, possibly including comments and/or an explicit nil depending on the EnforcedStyle.

    Example: EnforcedStyle: empty

    # warn only on empty else
    
    # bad
    if condition
      statement
    else
    end
    
    # good
    if condition
      statement
    else
      nil
    end
    
    # good
    if condition
      statement
    else
      statement
    end
    
    # good
    if condition
      statement
    end

    Example: EnforcedStyle: nil

    # warn on else with nil in it
    
    # bad
    if condition
      statement
    else
      nil
    end
    
    # good
    if condition
      statement
    else
    end
    
    # good
    if condition
      statement
    else
      statement
    end
    
    # good
    if condition
      statement
    end

    Example: EnforcedStyle: both (default)

    # warn on empty else and else with nil in it
    
    # bad
    if condition
      statement
    else
      nil
    end
    
    # bad
    if condition
      statement
    else
    end
    
    # good
    if condition
      statement
    else
      statement
    end
    
    # good
    if condition
      statement
    end

    Don't use parentheses around the condition of an elsif.
    Open

        elsif ( !Parent.find_by_login(params[:login]).nil? )

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Do not use semicolons to terminate expressions.
    Open

            data_exists = true;

    This cop checks for multiple expressions placed on the same line. It also checks for lines terminated with a semicolon.

    Example:

    # bad
    foo = 1; bar = 2;
    baz = 3;
    
    # good
    foo = 1
    bar = 2
    baz = 3

    Prefer single-quoted strings when you don't need string interpolation or special symbols.
    Open

          redirect_to root_url, notice: "Login e/ou senha incorreta(s)!"

    Checks if uses of quotes match the configured preference.

    Example: EnforcedStyle: single_quotes (default)

    # bad
    "No special symbols"
    "No string interpolation"
    "Just text"
    
    # good
    'No special symbols'
    'No string interpolation'
    'Just text'
    "Wait! What's #{this}!"

    Example: EnforcedStyle: double_quotes

    # bad
    'Just some text'
    'No special chars or interpolation'
    
    # good
    "Just some text"
    "No special chars or interpolation"
    "Every string in #{project} uses double_quotes"

    Missing space after #.
    Open

    #Description: Control the session login of the users

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Don't use parentheses around the condition of an if.
    Open

          if (day_of_class.date.to_s == date.to_s)

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Redundant return detected.
    Open

        return data_exists

    This cop checks for redundant return expressions.

    Example:

    def test
      return something
    end
    
    def test
      one
      two
      three
      return something
    end

    It should be extended to handle methods whose body is if/else or a case expression with a default branch.

    Space after keyword if is missing.
    Open

          if(data_exists == false)

    Checks the spacing around the keywords.

    Example:

    # bad
    something 'test'do|x|
    end
    
    while(something)
    end
    
    something = 123if test
    
    # good
    something 'test' do |x|
    end
    
    while (something)
    end
    
    something = 123 if test

    Put empty method definitions on a single line.
    Open

      def login_helper
      end

    This cop checks for the formatting of empty method definitions. By default it enforces empty method definitions to go on a single line (compact style), but it can be configured to enforce the end to go on its own line (expanded style).

    Note: A method definition is not considered empty if it contains comments.

    Example: EnforcedStyle: compact (default)

    # bad
    def foo(bar)
    end
    
    def self.foo(bar)
    end
    
    # good
    def foo(bar); end
    
    def foo(bar)
      # baz
    end
    
    def self.foo(bar); end

    Example: EnforcedStyle: expanded

    # bad
    def foo(bar); end
    
    def self.foo(bar); end
    
    # good
    def foo(bar)
    end
    
    def self.foo(bar)
    end

    Prefer each over for.
    Open

        for day_of_class in days_of_class

    This cop looks for uses of the for keyword, or each method. The preferred alternative is set in the EnforcedStyle configuration parameter. An each call with a block on a single line is always allowed, however.

    Don't use parentheses around the condition of an if.
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Extra empty line detected at class body end.
    Open

    
    end

    This cops checks if empty lines around the bodies of classes match the configuration.

    Example: EnforcedStyle: empty_lines

    # good
    
    class Foo
    
      def bar
        # ...
      end
    
    end

    Example: EnforcedStyle: emptylinesexcept_namespace

    # good
    
    class Foo
      class Bar
    
        # ...
    
      end
    end

    Example: EnforcedStyle: emptylinesspecial

    # good
    class Foo
    
      def bar; end
    
    end

    Example: EnforcedStyle: noemptylines (default)

    # good
    
    class Foo
      def bar
        # ...
      end
    end

    Don't use parentheses around a method call.
    Open

          elsif (is_principal?)

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Missing space after #.
    Open

            #data already exists

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Don't use parentheses around an unary operation.
    Open

        elsif ( !Parent.find_by_login(params[:login]).nil? )

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Don't use parentheses around a method call.
    Open

          elsif (is_teacher?)

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Missing space after #.
    Open

    #Class name: SessionsController

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Space inside parentheses detected.
    Open

        elsif ( !Parent.find_by_login(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Don't use parentheses around the condition of an if.
    Open

          if (is_alumn?)

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Space after keyword elsif is missing.
    Open

          elsif(is_secretary?)

    Checks the spacing around the keywords.

    Example:

    # bad
    something 'test'do|x|
    end
    
    while(something)
    end
    
    something = 123if test
    
    # good
    something 'test' do |x|
    end
    
    while (something)
    end
    
    something = 123 if test

    Don't use parentheses around an unary operation.
    Open

        elsif ( !Employee.find_by_registry(params[:login]).nil? )

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    Missing space after #.
    Open

            #nothing to do

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Missing space after #.
    Open

            #create new data

    This cop checks whether comments have a leading space after the # denoting the start of the comment. The leading space is not required for some RDoc special syntax, like #++, #--, #:nodoc, =begin- and =end comments, "shebang" directives, or rackup options.

    Example:

    # bad
    #Some comment
    
    # good
    # Some comment

    Space inside parentheses detected.
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Use && instead of and.
    Open

        if ( @user and @user.authenticate(params[:password]) )

    This cop checks for uses of and and or, and suggests using && and || instead. It can be configured to check only in conditions, or in all contexts.

    Example: EnforcedStyle: always (default)

    # bad
    foo.save and return
    
    # bad
    if foo and bar
    end
    
    # good
    foo.save && return
    
    # good
    if foo && bar
    end

    Example: EnforcedStyle: conditionals

    # bad
    if foo and bar
    end
    
    # good
    foo.save && return
    
    # good
    foo.save and return
    
    # good
    if foo && bar
    end

    Space missing after colon.
    Open

            DayOfClass.create(date:date)

    Checks for colon (:) not followed by some kind of space. N.B. this cop does not handle spaces after a ternary operator, which are instead handled by Layout/SpaceAroundOperators.

    Example:

    # bad
    def f(a:, b:2); {a:3}; end
    
    # good
    def f(a:, b: 2); {a: 3}; end

    Space inside parentheses detected.
    Open

        elsif ( !Parent.find_by_login(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Space inside parentheses detected.
    Open

        elsif ( !Employee.find_by_registry(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Favor modifier if usage when having a single-line body. Another good alternative is the usage of control flow &&/||.
    Open

          if (day_of_class.date.to_s == date.to_s)

    Checks for if and unless statements that would fit on one line if written as a modifier if/unless. The maximum line length is configured in the Metrics/LineLength cop.

    Example:

    # bad
    if condition
      do_stuff(bar)
    end
    
    unless qux.empty?
      Foo.do_something
    end
    
    # good
    do_stuff(bar) if condition
    Foo.do_something unless qux.empty?

    Do not use parentheses for method calls with no arguments.
    Open

          date = mountCurrentDate()

    This cop checks for unwanted parentheses in parameterless method calls.

    Example:

    # bad
    object.some_method()
    
    # good
    object.some_method

    Don't use parentheses around the condition of an elsif.
    Open

        elsif ( !Employee.find_by_registry(params[:login]).nil? )

    This cop checks for the presence of superfluous parentheses around the condition of if/unless/while/until.

    Example:

    # bad
    x += 1 while (x < 10)
    foo unless (bar || baz)
    
    if (x > 10)
    elsif (x < 3)
    end
    
    # good
    x += 1 while x < 10
    foo unless bar || baz
    
    if x > 10
    elsif x < 3
    end

    Extra blank line detected.
    Open

    
        else

    This cops checks for two or more consecutive blank lines.

    Example:

    # bad - It has two empty lines.
    some_method
    # one empty line
    # two empty lines
    some_method
    
    # good
    some_method
    # one empty line
    some_method

    Space inside parentheses detected.
    Open

        if ( !Alumn.find_by_registry(params[:login]).nil? )

    Checks for spaces inside ordinary round parentheses.

    Example:

    # bad
    f( 3)
    g = (a + 3 )
    
    # good
    f(3)
    g = (a + 3)

    Don't use parentheses around a method call.
    Open

          elsif (is_parent?)

    This cop checks for redundant parentheses.

    Example:

    # bad
    (x) if ((y.z).nil?)
    
    # good
    x if y.z.nil?

    There are no issues that match your filters.

    Category
    Status