tulul/lycantulul_bot

View on GitHub
lib/lycantulul_bot/lycantulul/game.rb

Summary

Maintainability
F
1 wk
Test Coverage

Class has too many lines. [787/100]
Open

  class Game
    include Mongoid::Document
    include Mongoid::Locker
    include Mongoid::Timestamps

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

File game.rb has 791 lines of code (exceeds 250 allowed). Consider refactoring.
Open

module Lycantulul
  class Game
    include Mongoid::Document
    include Mongoid::Locker
    include Mongoid::Timestamps
Severity: Major
Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 day to fix

    Assignment Branch Condition size for kill_victim is too high. [121.3/15]
    Open

        def kill_victim
          self.with_lock(wait: true) do
            vc = self.sort(victim)
            hhost = self.homeless_host
            LycantululBot.log(vc.to_s)

    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 kill_victim has a Cognitive Complexity of 70 (exceeds 5 allowed). Consider refactoring.
    Open

        def kill_victim
          self.with_lock(wait: true) do
            vc = self.sort(victim)
            hhost = self.homeless_host
            LycantululBot.log(vc.to_s)
    Severity: Minor
    Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 day 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

    Class Game has 63 methods (exceeds 20 allowed). Consider refactoring.
    Open

      class Game
        include Mongoid::Document
        include Mongoid::Locker
        include Mongoid::Timestamps
    
    
    Severity: Major
    Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 day to fix

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

          def kill_victim
            self.with_lock(wait: true) do
              vc = self.sort(victim)
              hhost = self.homeless_host
              LycantululBot.log(vc.to_s)

      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.

      Assignment Branch Condition size for list_players is too high. [53.47/15]
      Open

          def list_players
            liv_count = self.living_players.count
            ded_count = self.dead_players.count
      
            res = "Masi idup: <b>#{liv_count} makhluk</b>\n"

      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

      Assignment Branch Condition size for kill_votee is too high. [52.43/15]
      Open

          def kill_votee
            self.with_lock(wait: true) do
              vc = self.sort(votee)
              LycantululBot.log(vc.to_s)
              self.update_attribute(:night, true)

      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 role_count has a Cognitive Complexity of 34 (exceeds 5 allowed). Consider refactoring.
      Open

          def role_count(role, count = nil)
            count ||= self.players.count
            count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
      
            custom = self.custom_roles[role] rescue nil
      Severity: Minor
      Found in lib/lycantulul_bot/lycantulul/game.rb - About 5 hrs 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

      Assignment Branch Condition size for raise_the_dead is too high. [43.85/15]
      Open

          def raise_the_dead
            self.with_lock(wait: true) do
              ss = self.necromancee
              LycantululBot.log(ss.to_s)
              self.update_attribute(:necromancee, [])

      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. [36/10]
      Open

          def role_count(role, count = nil)
            count ||= self.players.count
            count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
      
            custom = self.custom_roles[role] rescue nil

      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.

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

          def get_task(role)
            case role
            when VILLAGER
              "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"
            when GREEDY_VILLAGER

      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.

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

          def get_role(role)
            case role
            when VILLAGER
              'Warga Kampung'
            when GREEDY_VILLAGER

      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.

      Assignment Branch Condition size for protect_players is too high. [37.87/15]
      Open

          def protect_players
            self.with_lock(wait: true) do
              ss = self.protectee
              LycantululBot.log(ss.to_s)
              self.update_attribute(:protectee, [])

      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

      Cyclomatic complexity for role_count is too high. [28/6]
      Open

          def role_count(role, count = nil)
            count ||= self.players.count
            count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
      
            custom = self.custom_roles[role] rescue nil

      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.

      Assignment Branch Condition size for round_finished? is too high. [37.43/15]
      Open

          def round_finished?
            self.with_lock(wait: true) do
              res =
                self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&
                self.seen.count == self.living_seers.count &&

      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

      Assignment Branch Condition size for role_count is too high. [37.82/15]
      Open

          def role_count(role, count = nil)
            count ||= self.players.count
            count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
      
            custom = self.custom_roles[role] rescue nil

      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. [29/10]
      Open

          def finish(stats: true)
            self.with_lock(wait: true) do
              self.update_attribute(:finished, true)
              if stats
                self.players.each do |pl|

      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.

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

          def list_players
            liv_count = self.living_players.count
            ded_count = self.dead_players.count
      
            res = "Masi idup: <b>#{liv_count} makhluk</b>\n"

      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.

      Assignment Branch Condition size for finish is too high. [32.2/15]
      Open

          def finish(stats: true)
            self.with_lock(wait: true) do
              self.update_attribute(:finished, true)
              if stats
                self.players.each do |pl|

      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. [25/10]
      Open

          def raise_the_dead
            self.with_lock(wait: true) do
              ss = self.necromancee
              LycantululBot.log(ss.to_s)
              self.update_attribute(:necromancee, [])

      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.

      Block has too many lines. [61/25]
      Open

            self.with_lock(wait: true) do
              vc = self.sort(victim)
              hhost = self.homeless_host
              LycantululBot.log(vc.to_s)
              self.update_attribute(:victim, [])

      This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

      Assignment Branch Condition size for enlighten_seer is too high. [28.88/15]
      Open

          def enlighten_seer
            self.with_lock(wait: true) do
              ss = self.seen
              LycantululBot.log(ss.to_s)
              self.update_attribute(:seen, [])

      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

      Perceived complexity for kill_victim is too high. [20/7]
      Open

          def kill_victim
            self.with_lock(wait: true) do
              vc = self.sort(victim)
              hhost = self.homeless_host
              LycantululBot.log(vc.to_s)

      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

      Assignment Branch Condition size for role_valid? is too high. [27.82/15]
      Open

          def role_valid?
            ww_count_valid =
              if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))
                val = true
                wwc = ww > 0 rescue true

      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. [21/10]
      Open

          def restart
            self.with_lock(wait: true) do
              self.players.map(&:reset_state)
              self.round = 0
              self.night = true

      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.

      Cyclomatic complexity for kill_victim is too high. [17/6]
      Open

          def kill_victim
            self.with_lock(wait: true) do
              vc = self.sort(victim)
              hhost = self.homeless_host
              LycantululBot.log(vc.to_s)

      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 has too many lines. [21/10]
      Open

          def kill_votee
            self.with_lock(wait: true) do
              vc = self.sort(votee)
              LycantululBot.log(vc.to_s)
              self.update_attribute(:night, true)

      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.

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

          def enlighten_seer
            self.with_lock(wait: true) do
              ss = self.seen
              LycantululBot.log(ss.to_s)
              self.update_attribute(:seen, [])

      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.

      Cyclomatic complexity for get_task is too high. [16/6]
      Open

          def get_task(role)
            case role
            when VILLAGER
              "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"
            when GREEDY_VILLAGER

      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.

      Cyclomatic complexity for get_role is too high. [16/6]
      Open

          def get_role(role)
            case role
            when VILLAGER
              'Warga Kampung'
            when GREEDY_VILLAGER

      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.

      Assignment Branch Condition size for assign is too high. [25.34/15]
      Open

          def assign(role)
            # https://gist.github.com/O-I/3e0654509dd8057b539a
            role_const = self.class.const_get(role.upcase)
            role_count(role_const).times do
              arr = self.living_villagers.to_a

      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

      Perceived complexity for role_count is too high. [17/7]
      Open

          def role_count(role, count = nil)
            count ||= self.players.count
            count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
      
            custom = self.custom_roles[role] rescue nil

      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

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

          def check_custom_role(role_string)
            self.with_lock(wait: true) do
              custom = nil
              return nil unless role_string
              role_string = role_string.gsub(/[^A-Za-z]/, '').downcase

      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.

      Assignment Branch Condition size for valid_action? is too high. [23.85/15]
      Open

          def valid_action?(actor_id, actee_name, role)
            self.with_lock(wait: true) do
              return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]
      
              actor = self.send("living_#{role.pluralize}").with_id(actor_id)

      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 kill_victim has 63 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          def kill_victim
            self.with_lock(wait: true) do
              vc = self.sort(victim)
              hhost = self.homeless_host
              LycantululBot.log(vc.to_s)
      Severity: Major
      Found in lib/lycantulul_bot/lycantulul/game.rb - About 2 hrs to fix

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

            def add_votee(voter_id, votee)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.votee.any?{ |vo| vo[:voter_id] == voter_id }
                return RESPONSE_INVALID unless valid_action?(voter_id, votee, 'player')
        
        

        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.

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

            def protect_players
              self.with_lock(wait: true) do
                ss = self.protectee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:protectee, [])

        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.

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

            def add_victim(killer_id, victim)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.victim.any?{ |vi| vi[:killer_id] == killer_id }
                return RESPONSE_INVALID unless valid_action?(killer_id, victim, 'werewolf') || valid_action?(killer_id, victim, 'super_werewolf')
        
        

        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.

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

            def list_voting
              res = ''
              self.sort(votee).each do |votee|
                res += "#{votee[0]} - <b>#{votee[1]} suara</b>\n"
              end

        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.

        Assignment Branch Condition size for add_votee is too high. [20.05/15]
        Open

            def add_votee(voter_id, votee)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.votee.any?{ |vo| vo[:voter_id] == voter_id }
                return RESPONSE_INVALID unless valid_action?(voter_id, votee, 'player')
        
        

        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

        Assignment Branch Condition size for role_setting_keyboard is too high. [19.92/15]
        Open

            def role_setting_keyboard
              keyboard = []
              max = IMPORTANT_ROLES.count
              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }
              count = -1

        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. [14/10]
        Open

            def role_valid?
              ww_count_valid =
                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))
                  val = true
                  wwc = ww > 0 rescue true

        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.

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

            def valid_action?(actor_id, actee_name, role)
              self.with_lock(wait: true) do
                return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]
        
                actor = self.send("living_#{role.pluralize}").with_id(actor_id)

        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.

        Cyclomatic complexity for valid_action? is too high. [10/6]
        Open

            def valid_action?(actor_id, actee_name, role)
              self.with_lock(wait: true) do
                return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]
        
                actor = self.send("living_#{role.pluralize}").with_id(actor_id)

        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.

        Perceived complexity for valid_action? is too high. [11/7]
        Open

            def valid_action?(actor_id, actee_name, role)
              self.with_lock(wait: true) do
                return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]
        
                actor = self.send("living_#{role.pluralize}").with_id(actor_id)

        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

        Method raise_the_dead has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
        Open

            def raise_the_dead
              self.with_lock(wait: true) do
                ss = self.necromancee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:necromancee, [])
        Severity: Minor
        Found in lib/lycantulul_bot/lycantulul/game.rb - About 2 hrs 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

        Assignment Branch Condition size for add_victim is too high. [18.87/15]
        Open

            def add_victim(killer_id, victim)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.victim.any?{ |vi| vi[:killer_id] == killer_id }
                return RESPONSE_INVALID unless valid_action?(killer_id, victim, 'werewolf') || valid_action?(killer_id, victim, 'super_werewolf')
        
        

        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. [13/10]
        Open

            def round_finished?
              self.with_lock(wait: true) do
                res =
                  self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&
                  self.seen.count == self.living_seers.count &&

        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.

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

            def add_necromancee(necromancer_id, necromancee)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.necromancee.any?{ |se| se[:necromancer_id] == necromancer_id }
                return RESPONSE_INVALID unless valid_action?(necromancer_id, necromancee, 'necromancer') || valid_action?(necromancer_id, necromancee, 'super_necromancer')
        
        

        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.

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

            def role_setting_keyboard
              keyboard = []
              max = IMPORTANT_ROLES.count
              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }
              count = -1

        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.

        Assignment Branch Condition size for get_task is too high. [18.03/15]
        Open

            def get_task(role)
              case role
              when VILLAGER
                "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"
              when GREEDY_VILLAGER

        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

        Cyclomatic complexity for raise_the_dead is too high. [8/6]
        Open

            def raise_the_dead
              self.with_lock(wait: true) do
                ss = self.necromancee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:necromancee, [])

        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 has too many lines. [12/10]
        Open

            def add_homeless_host(homeless_id, homeless_host)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.homeless_host.any?{ |se| se[:homeless_id] == homeless_id }
                return RESPONSE_INVALID unless valid_action?(homeless_id, homeless_host, 'homeless')
        
        

        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.

        Assignment Branch Condition size for restart is too high. [17.46/15]
        Open

            def restart
              self.with_lock(wait: true) do
                self.players.map(&:reset_state)
                self.round = 0
                self.night = true

        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. [12/10]
        Open

            def add_protectee(protector_id, protectee)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.protectee.any?{ |se| se[:protector_id] == protector_id }
                return RESPONSE_INVALID unless valid_action?(protector_id, protectee, 'protector')
        
        

        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.

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

            def add_seen(seer_id, seen)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.seen.any?{ |se| se[:seer_id] == seer_id }
                return RESPONSE_INVALID unless valid_action?(seer_id, seen, 'seer')
        
        

        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.

        Cyclomatic complexity for role_valid? is too high. [8/6]
        Open

            def role_valid?
              ww_count_valid =
                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))
                  val = true
                  wwc = ww > 0 rescue true

        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.

        Cyclomatic complexity for protect_players is too high. [8/6]
        Open

            def protect_players
              self.with_lock(wait: true) do
                ss = self.protectee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:protectee, [])

        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.

        Perceived complexity for role_valid? is too high. [9/7]
        Open

            def role_valid?
              ww_count_valid =
                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))
                  val = true
                  wwc = ww > 0 rescue true

        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

        Perceived complexity for raise_the_dead is too high. [9/7]
        Open

            def raise_the_dead
              self.with_lock(wait: true) do
                ss = self.necromancee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:necromancee, [])

        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 kill_votee is too high. [7/6]
        Open

            def kill_votee
              self.with_lock(wait: true) do
                vc = self.sort(votee)
                LycantululBot.log(vc.to_s)
                self.update_attribute(:night, true)

        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 has too many lines. [11/10]
        Open

            def start
              self.with_lock(wait: true) do
                return unless self.waiting?
                self.waiting = false
                self.voting_time ||= Lycantulul::InputProcessorJob::VOTING_TIME.call

        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 protect_players is too high. [8/7]
        Open

            def protect_players
              self.with_lock(wait: true) do
                ss = self.protectee
                LycantululBot.log(ss.to_s)
                self.update_attribute(:protectee, [])

        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

        Perceived complexity for kill_votee is too high. [8/7]
        Open

            def kill_votee
              self.with_lock(wait: true) do
                vc = self.sort(votee)
                LycantululBot.log(vc.to_s)
                self.update_attribute(:night, true)

        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

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

            def enlighten_seer
              self.with_lock(wait: true) do
                ss = self.seen
                LycantululBot.log(ss.to_s)
                self.update_attribute(:seen, [])
        Severity: Minor
        Found in lib/lycantulul_bot/lycantulul/game.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

        Assignment Branch Condition size for get_role is too high. [15.03/15]
        Open

            def get_role(role)
              case role
              when VILLAGER
                'Warga Kampung'
              when GREEDY_VILLAGER

        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

        Assignment Branch Condition size for add_necromancee is too high. [15.94/15]
        Open

            def add_necromancee(necromancer_id, necromancee)
              self.with_lock(wait: true) do
                return RESPONSE_DOUBLE if self.necromancee.any?{ |se| se[:necromancer_id] == necromancer_id }
                return RESPONSE_INVALID unless valid_action?(necromancer_id, necromancee, 'necromancer') || valid_action?(necromancer_id, necromancee, 'super_necromancer')
        
        

        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 kill_votee has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
        Open

            def kill_votee
              self.with_lock(wait: true) do
                vc = self.sort(votee)
                LycantululBot.log(vc.to_s)
                self.update_attribute(:night, true)
        Severity: Minor
        Found in lib/lycantulul_bot/lycantulul/game.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 role_count has 36 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            def role_count(role, count = nil)
              count ||= self.players.count
              count -= Lycantulul::InputProcessorJob::MINIMUM_PLAYER.call
        
              custom = self.custom_roles[role] rescue nil
        Severity: Minor
        Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 hr to fix

          Method valid_action? has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
          Open

              def valid_action?(actor_id, actee_name, role)
                self.with_lock(wait: true) do
                  return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]
          
                  actor = self.send("living_#{role.pluralize}").with_id(actor_id)
          Severity: Minor
          Found in lib/lycantulul_bot/lycantulul/game.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 finish has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
          Open

              def finish(stats: true)
                self.with_lock(wait: true) do
                  self.update_attribute(:finished, true)
                  if stats
                    self.players.each do |pl|
          Severity: Minor
          Found in lib/lycantulul_bot/lycantulul/game.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 get_task has 32 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              def get_task(role)
                case role
                when VILLAGER
                  "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"
                when GREEDY_VILLAGER
          Severity: Minor
          Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 hr to fix

            Method get_role has 32 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                def get_role(role)
                  case role
                  when VILLAGER
                    'Warga Kampung'
                  when GREEDY_VILLAGER
            Severity: Minor
            Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 hr to fix

              Method role_valid? has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
              Open

                  def role_valid?
                    ww_count_valid =
                      if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))
                        val = true
                        wwc = ww > 0 rescue true
              Severity: Minor
              Found in lib/lycantulul_bot/lycantulul/game.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 add_necromancee has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
              Open

                  def add_necromancee(necromancer_id, necromancee)
                    self.with_lock(wait: true) do
                      return RESPONSE_DOUBLE if self.necromancee.any?{ |se| se[:necromancer_id] == necromancer_id }
                      return RESPONSE_INVALID unless valid_action?(necromancer_id, necromancee, 'necromancer') || valid_action?(necromancer_id, necromancee, 'super_necromancer')
              
              
              Severity: Minor
              Found in lib/lycantulul_bot/lycantulul/game.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 finish has 29 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

                  def finish(stats: true)
                    self.with_lock(wait: true) do
                      self.update_attribute(:finished, true)
                      if stats
                        self.players.each do |pl|
              Severity: Minor
              Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 hr to fix

                Method list_players has 28 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                    def list_players
                      liv_count = self.living_players.count
                      ded_count = self.dead_players.count
                
                      res = "Masi idup: <b>#{liv_count} makhluk</b>\n"
                Severity: Minor
                Found in lib/lycantulul_bot/lycantulul/game.rb - About 1 hr to fix

                  Method add_votee has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
                  Open

                      def add_votee(voter_id, votee)
                        self.with_lock(wait: true) do
                          return RESPONSE_DOUBLE if self.votee.any?{ |vo| vo[:voter_id] == voter_id }
                          return RESPONSE_INVALID unless valid_action?(voter_id, votee, 'player')
                  
                  
                  Severity: Minor
                  Found in lib/lycantulul_bot/lycantulul/game.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 protect_players has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      def protect_players
                        self.with_lock(wait: true) do
                          ss = self.protectee
                          LycantululBot.log(ss.to_s)
                          self.update_attribute(:protectee, [])
                  Severity: Minor
                  Found in lib/lycantulul_bot/lycantulul/game.rb - About 55 mins 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 check_custom_role has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      def check_custom_role(role_string)
                        self.with_lock(wait: true) do
                          custom = nil
                          return nil unless role_string
                          role_string = role_string.gsub(/[^A-Za-z]/, '').downcase
                  Severity: Minor
                  Found in lib/lycantulul_bot/lycantulul/game.rb - About 55 mins 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 add_victim has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                  Open

                      def add_victim(killer_id, victim)
                        self.with_lock(wait: true) do
                          return RESPONSE_DOUBLE if self.victim.any?{ |vi| vi[:killer_id] == killer_id }
                          return RESPONSE_INVALID unless valid_action?(killer_id, victim, 'werewolf') || valid_action?(killer_id, victim, 'super_werewolf')
                  
                  
                  Severity: Minor
                  Found in lib/lycantulul_bot/lycantulul/game.rb - About 55 mins 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

                  Avoid deeply nested control flow statements.
                  Open

                                    if victim.role == SILVER_BULLET
                                      ded = self.living_werewolves.sample
                                      if ded
                                        ded.kill
                                        LycantululBot.log("#{ded.full_name} is killed because werewolves killed a silver bullet (from GAME)")
                  Severity: Major
                  Found in lib/lycantulul_bot/lycantulul/game.rb - About 45 mins to fix

                    Avoid deeply nested control flow statements.
                    Open

                                    self.temp_stats[victim.user_id] << 'mauled_first_day' if self.round == 1
                    Severity: Major
                    Found in lib/lycantulul_bot/lycantulul/game.rb - About 45 mins to fix

                      Method list_players has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                      Open

                          def list_players
                            liv_count = self.living_players.count
                            ded_count = self.dead_players.count
                      
                            res = "Masi idup: <b>#{liv_count} makhluk</b>\n"
                      Severity: Minor
                      Found in lib/lycantulul_bot/lycantulul/game.rb - About 45 mins 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

                      Avoid deeply nested control flow statements.
                      Open

                                        if vh || wh
                                          dh = self.players.with_id(hh[:homeless_id])
                                          dh.kill
                                          self.temp_stats[dh.user_id] ||= []
                                          self.temp_stats[dh.user_id] << 'homeless_mauled' if vh
                      Severity: Major
                      Found in lib/lycantulul_bot/lycantulul/game.rb - About 45 mins to fix

                        Method role_setting_keyboard has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                        Open

                            def role_setting_keyboard
                              keyboard = []
                              max = IMPORTANT_ROLES.count
                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }
                              count = -1
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb - About 35 mins 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

                        Block has too many lines. [27/25]
                        Open

                              self.with_lock(wait: true) do
                                self.update_attribute(:finished, true)
                                if stats
                                  self.players.each do |pl|
                                    player = self.get_player(pl.user_id)

                        This cop checks if the length of a block exceeds some maximum value. Comment lines can optionally be ignored. The maximum allowed length is configurable. The cop can be configured to ignore blocks passed to certain methods.

                        Method start has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                            def start
                              self.with_lock(wait: true) do
                                return unless self.waiting?
                                self.waiting = false
                                self.voting_time ||= Lycantulul::InputProcessorJob::VOTING_TIME.call
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb - About 25 mins 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 set_custom_role has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                        Open

                            def set_custom_role(amount)
                              self.with_lock(wait: true) do
                                return nil unless self.pending_custom_role
                                return nil unless amount.in?(0..100)
                                self.update_custom_roles(self.pending_custom_role, amount)
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb - About 25 mins 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

                        Avoid more than 3 levels of block nesting.
                        Open

                                      if !under_protection?(victim.full_name)
                                        victim.kill
                                        self.temp_stats[victim.user_id] ||= []
                                        self.temp_stats[victim.user_id] << 'mauled'
                                        self.temp_stats[victim.user_id] << 'mauled_first_day' if self.round == 1

                        This cop checks for excessive nesting of conditional and looping constructs.

                        You can configure if blocks are considered using the CountBlocks option. When set to false (the default) blocks are not counted towards the nesting level. Set to true to count blocks as well.

                        The maximum level of nesting allowed is configurable.

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                            def add_protectee(protector_id, protectee)
                              self.with_lock(wait: true) do
                                return RESPONSE_DOUBLE if self.protectee.any?{ |se| se[:protector_id] == protector_id }
                                return RESPONSE_INVALID unless valid_action?(protector_id, protectee, 'protector')
                        
                        
                        Severity: Major
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 2 other locations - About 1 hr to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 331..344
                        lib/lycantulul_bot/lycantulul/game.rb on lines 383..396

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 48.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                            def add_seen(seer_id, seen)
                              self.with_lock(wait: true) do
                                return RESPONSE_DOUBLE if self.seen.any?{ |se| se[:seer_id] == seer_id }
                                return RESPONSE_INVALID unless valid_action?(seer_id, seen, 'seer')
                        
                        
                        Severity: Major
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 2 other locations - About 1 hr to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 348..361
                        lib/lycantulul_bot/lycantulul/game.rb on lines 383..396

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 48.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 3 locations. Consider refactoring.
                        Open

                            def add_homeless_host(homeless_id, homeless_host)
                              self.with_lock(wait: true) do
                                return RESPONSE_DOUBLE if self.homeless_host.any?{ |se| se[:homeless_id] == homeless_id }
                                return RESPONSE_INVALID unless valid_action?(homeless_id, homeless_host, 'homeless')
                        
                        
                        Severity: Major
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 2 other locations - About 1 hr to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 331..344
                        lib/lycantulul_bot/lycantulul/game.rb on lines 348..361

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 48.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")
                              end
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 25 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 710..711

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 22.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")
                              else
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 25 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 718..719

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 22.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                if vc.count == 1 || (vc.count > 1 && vc[0][1] > vc[1][1])
                                  victim = self.living_players.with_name(vc[0][0])
                                  if victim.role != HOMELESS
                                    if victim.role != JESTER || ((jd = self.jester_done[victim.user_id]) && jd >= JESTER_LIMIT)
                                      if !under_protection?(victim.full_name)
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 20 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 556..570

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 21.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Identical blocks of code found in 2 locations. Consider refactoring.
                        Open

                                if vc.count == 1 || (vc.count > 1 && vc[0][1] > vc[1][1])
                                  votee = self.living_players.with_name(vc[0][0])
                                  self.temp_stats[votee.user_id] ||= []
                                  if votee.role == AMNESTY && !self.amnesty_done[votee.user_id.to_s]
                                    self.update_attribute(:amnesty_done, self.amnesty_done.merge(votee.user_id.to_s => true))
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 20 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 479..533

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 21.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                cur_count > 0 && res += "<b>#{cur_count}</b> #{self.get_role(self.class.const_get(role.upcase))}\n"
                              end
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 20 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 706..707

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 20.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Similar blocks of code found in 2 locations. Consider refactoring.
                        Open

                                count > 0 && res += "<i>#{count} #{self.get_role(self.class.const_get(role.upcase))}</i>\n"
                              end
                        Severity: Minor
                        Found in lib/lycantulul_bot/lycantulul/game.rb and 1 other location - About 20 mins to fix
                        lib/lycantulul_bot/lycantulul/game.rb on lines 882..883

                        Duplicated Code

                        Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                        Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                        When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                        Tuning

                        This issue has a mass of 20.

                        We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                        The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                        If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                        See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                        Refactorings

                        Further Reading

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.homeless_host.any?{ |se| se[:homeless_id] == homeless_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [218/80]
                        Open

                            IMPORTANT_ROLES = ['werewolf', 'seer', 'protector', 'spy', 'necromancer', 'silver_bullet', 'greedy_villager', 'useless_villager', 'super_necromancer', 'faux_seer', 'amnesty', 'homeless', 'super_werewolf', 'jester']

                        Line is too long. [111/80]
                        Open

                              self.players.any?{ |pl| pl.full_name == Lycantulul::Player.get_full_name(user) && pl.user_id != user.id }

                        Line is too long. [107/80]
                        Open

                                cur_count > 0 && res += "<b>#{cur_count}</b> #{self.get_role(self.class.const_get(role.upcase))}\n"

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.votee.any?{ |vo| vo[:voter_id] == voter_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              array.reject{ |vo| vo[:full_name] == USELESS_VILLAGER_SKIP }.group_by{ |vo| vo[:full_name] }.map{ |k, v| [k, v.count] }.sort_by{ |vo| vo[1] }.compact.reverse

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              keyboard.reject{ |x| x.empty? }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [137/80]
                        Open

                                return RESPONSE_INVALID unless valid_action?(killer_id, victim, 'werewolf') || valid_action?(killer_id, victim, 'super_werewolf')

                        Line is too long. [98/80]
                        Open

                                        rand_role = self.killables.without_id([vc[:seer_id]]).sample.role rescue seen.role

                        Line is too long. [95/80]
                        Open

                                return RESPONSE_DOUBLE if self.protectee.any?{ |se| se[:protector_id] == protector_id }

                        Line is too long. [121/80]
                        Open

                                    LycantululBot.log("#{necromancee.full_name} is raised from the dead by #{necromancer.full_name} (from GAME)")

                        Line is too long. [97/80]
                        Open

                                return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]

                        Line is too long. [103/80]
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        Line is too long. [87/80]
                        Open

                              self.group.discussion_time || Lycantulul::InputProcessorJob::DISCUSSION_TIME.call

                        Line is too long. [88/80]
                        Open

                                        self.temp_stats[victim.user_id] << 'mauled_first_day' if self.round == 1

                        Space missing to the left of {.
                        Open

                                weights = arr.map{ |x| self.get_player(x.user_id).role_proportion(role) + 1 }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              array.reject{ |vo| vo[:full_name] == USELESS_VILLAGER_SKIP }.group_by{ |vo| vo[:full_name] }.map{ |k, v| [k, v.count] }.sort_by{ |vo| vo[1] }.compact.reverse

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              self.living_players - self.votee.map{ |a| self.players.with_id(a[:voter_id]) }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [101/80]
                        Open

                                return RESPONSE_DOUBLE if self.necromancee.any?{ |se| se[:necromancer_id] == necromancer_id }

                        Line is too long. [163/80]
                        Open

                              array.reject{ |vo| vo[:full_name] == USELESS_VILLAGER_SKIP }.group_by{ |vo| vo[:full_name] }.map{ |k, v| [k, v.count] }.sort_by{ |vo| vo[1] }.compact.reverse

                        Line is too long. [129/80]
                        Open

                                          wh = self.living_werewolves.with_name(hh[:full_name]) || self.living_super_werewolves.with_name(hh[:full_name])

                        Line is too long. [113/80]
                        Open

                                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))

                        Line is too long. [103/80]
                        Open

                                    if victim.role != JESTER || ((jd = self.jester_done[victim.user_id]) && jd >= JESTER_LIMIT)

                        Line is too long. [117/80]
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.seen.any?{ |se| se[:seer_id] == seer_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [123/80]
                        Open

                                              LycantululBot.log("#{ded.full_name} is killed because werewolves killed a silver bullet (from GAME)")

                        Line is too long. [99/80]
                        Open

                                count > 0 && res += "<i>#{count} #{self.get_role(self.class.const_get(role.upcase))}</i>\n"

                        Line is too long. [194/80]
                        Open

                                "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"

                        Line is too long. [274/80]
                        Open

                                'Bantuin kemenangan para rakyat jelata dengan ngintipin ke rumah orang-orang. Pas ngintip ntar bisa tau mereka siapa sebenarnya. Tapi kalo misalnya yang mau diintip (atau elunya sendiri) mati dibunuh serigala, jadi gatau dia siapa sebenarnya :\'( hidup memang keras'

                        Line is too long. [168/80]
                        Open

                                'Diam menunggu kematian. Tapi, kalo lu dieksekusi oleh warga, lu bakal selamat (tapi cuma bisa sekali itu aja). Tiati aja sih malam berikutnya dibunuh serigala'

                        Useless assignment to variable - res. Use + instead of +=.
                        Open

                              res += "Ubah pake /ganti_settingan_voting"

                        This cop checks for every useless assignment to local variable in every scope. The basic idea for this cop was from the warning of ruby -cw:

                        assigned but unused variable - foo

                        Currently this cop has advanced logic that detects unreferenced reassignments and properly handles varied cases such as branch, loop, rescue, ensure, etc.

                        Example:

                        # bad
                        
                        def some_method
                          some_var = 1
                          do_something
                        end

                        Example:

                        # good
                        
                        def some_method
                          some_var = 1
                          do_something(some_var)
                        end

                        Line is too long. [186/80]
                        Open

                                'Menghidupkan kembali 1 orang mayat. Sebagai gantinya, lu yang bakal mati. Ingat, cuma ada 1 kesempatan! Dan jangan sampe lu malah dibunuh duluan sama serigala. Allaaaaahuakbar!'

                        Space around operator ** detected.
                        Open

                                arr.zip(weights.map{ |w| w / sum }).min_by{ |w| rand ** (1.0 / w[1]) }[0].assign(role_const)

                        Checks that operators have space around them, except for ** which should not have surrounding space.

                        Example:

                        # bad
                        total = 3*4
                        "apple"+"juice"
                        my_number = 38/4
                        a ** b
                        
                        # good
                        total = 3 * 4
                        "apple" + "juice"
                        my_number = 38 / 4
                        a**b

                        Line is too long. [163/80]
                        Open

                                return RESPONSE_INVALID unless valid_action?(necromancer_id, necromancee, 'necromancer') || valid_action?(necromancer_id, necromancee, 'super_necromancer')

                        Line is too long. [84/80]
                        Open

                                self.discussion_time ||= Lycantulul::InputProcessorJob::DISCUSSION_TIME.call

                        Line is too long. [100/80]
                        Open

                                arr.zip(weights.map{ |w| w / sum }).min_by{ |w| rand ** (1.0 / w[1]) }[0].assign(role_const)

                        Unnecessary spacing detected.
                        Open

                                res &&  self.necromancee.count == necromancer_count

                        This cop checks for extra/unnecessary whitespace.

                        Example:

                        # good if AllowForAlignment is true
                        name      = "RuboCop"
                        # Some comment and an empty line
                        
                        website  += "/bbatsov/rubocop" unless cond
                        puts        "rubocop"          if     debug
                        
                        # bad for any configuration
                        set_app("RuboCop")
                        website  = "https://github.com/bbatsov/rubocop"

                        Space missing to the left of {.
                        Open

                                voted = self.votee.map{ |v| v[:voter_id] }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name}" }.sort.join("\n")

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Do not suppress exceptions.
                        Open

                            rescue

                        This cop checks for rescue blocks with no body.

                        Example:

                        # bad
                        
                        def some_method
                          do_something
                        rescue
                          # do nothing
                        end

                        Example:

                        # bad
                        
                        begin
                          do_something
                        rescue
                          # do nothing
                        end

                        Example:

                        # good
                        
                        def some_method
                          do_something
                        rescue
                          handle_exception
                        end

                        Example:

                        # good
                        
                        begin
                          do_something
                        rescue
                          handle_exception
                        end

                        Useless assignment to variable - val.
                        Open

                                  val = true

                        This cop checks for every useless assignment to local variable in every scope. The basic idea for this cop was from the warning of ruby -cw:

                        assigned but unused variable - foo

                        Currently this cop has advanced logic that detects unreferenced reassignments and properly handles varied cases such as branch, loop, rescue, ensure, etc.

                        Example:

                        # bad
                        
                        def some_method
                          some_var = 1
                          do_something
                        end

                        Example:

                        # good
                        
                        def some_method
                          some_var = 1
                          do_something(some_var)
                        end

                        Line is too long. [85/80]
                        Open

                                  if self.get_role(role).gsub(/[^A-Za-z]/, '').downcase.include?(role_string)

                        Line is too long. [97/80]
                        Open

                                return RESPONSE_DOUBLE if self.homeless_host.any?{ |se| se[:homeless_id] == homeless_id }

                        Line is too long. [92/80]
                        Open

                                return RESPONSE_INVALID unless valid_action?(homeless_id, homeless_host, 'homeless')

                        Line is too long. [115/80]
                        Open

                                        return [victim.user_id, victim.full_name, self.get_role(victim.role), dead_werewolf, dead_homeless]

                        Line is too long. [213/80]
                        Open

                                  if protectee && ((protectee.role == WEREWOLF && rand.round + rand.round == 0) || (protectee.role == SUPER_WEREWOLF && rand.round + rand.round < 2)) # 25% ded if protecting werewolf, 75% if super werewolf

                        Line is too long. [412/80]
                        Open

                                "BUNUH, BUNUH, BUNUH\n\nSetiap malam, bakal ditanya mau bunuh siapa (oiya, kalo misalnya ada serigala yang lain, kalian harus berunding soalnya ntar voting, kalo ga ada suara mayoritas siapa yang mau dibunuh, ga ada yang mati, ntar gua kasih tau kok pas gua tanyain)\n\nHati-hati, bisa jadi ada #{self.get_role(SILVER_BULLET)} di antara para warga kampung, kalo bunuh dia, 1 ekor serigala akan ikut mati"

                        Line is too long. [480/80]
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        Space missing to the left of {.
                        Open

                                arr.zip(weights.map{ |w| w / sum }).min_by{ |w| rand ** (1.0 / w[1]) }[0].assign(role_const)

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              array.reject{ |vo| vo[:full_name] == USELESS_VILLAGER_SKIP }.group_by{ |vo| vo[:full_name] }.map{ |k, v| [k, v.count] }.sort_by{ |vo| vo[1] }.compact.reverse

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [82/80]
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name}" }.sort.join("\n")

                        Line is too long. [117/80]
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        Line is too long. [220/80]
                        Open

                                'Bantuin kemenangan para rakyat jelata, di mana setiap malam lu bakal dikasih tau peran salah seorang pemain yang masih hidup secara random (ga jamin sih besoknya dikasih tau orang yang berbeda apa engga hahaha)'

                        Line is too long. [373/80]
                        Open

                                'Jualin jimat ke orang-orang. Orang yang dapet jimat akan terlindungi dari serangan para serigala. Ntar tiap malem ditanyain mau jual ke siapa (sebenernya ga jualan juga sih, ga dapet duit, maap yak). Hati-hati loh tapi, kalo lu jual jimat ke serigala bisa-bisa lu dibunuh dengan 25% kemungkinan, kecil lah, peluang lu buat dapet pasangan hidup masih lebih gede :)'

                        Space missing to the left of {.
                        Open

                              self.players.any?{ |pl| pl.full_name == Lycantulul::Player.get_full_name(user) && pl.user_id != user.id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.protectee.any?{ |se| se[:protector_id] == protector_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [111/80]
                        Open

                                necromancee = self.dead_players.with_name(necromancee).full_name unless necromancee == NECROMANCER_SKIP

                        Line is too long. [200/80]
                        Open

                                  necromancer = self.living_necromancers.with_id(vc[:necromancer_id]) || (!self.super_necromancer_done[vc[:necromancer_id].to_s] && self.living_super_necromancers.with_id(vc[:necromancer_id]))

                        Line is too long. [129/80]
                        Open

                                      self.update_attribute(:super_necromancer_done, self.super_necromancer_done.merge(necromancer.user_id.to_s => true))

                        Line is too long. [130/80]
                        Open

                                'Diam menunggu kematian. Seriously kenapa lu harus ada sih? Bahkan saat voting eksekusi suara lu ga dianggep. Cian. Tiaja'

                        Line is too long. [287/80]
                        Open

                                'Nebeng ke rumah orang lain tiap malem, jadi lu selalu aman dari serangan serigala. Tapi kalo orang yang lu tebengi dibunuh serigala atau malah serigala itu sendiri, lu ikutan mati. Tapi lu jago ngumpet juga sih, kalo serigala ngincer lu dan lu nebeng di serigala lu tetep aman.'

                        Space missing to the left of {.
                        Open

                              !self.custom_roles || ((IMPORTANT_ROLES.inject(0){ |sum, role| sum + self.role_count(self.class.const_get(role.upcase)) } <= self.players.count) && ww_count_valid)

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                arr.zip(weights.map{ |w| w / sum }).min_by{ |w| rand ** (1.0 / w[1]) }[0].assign(role_const)

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [103/80]
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        Line is too long. [169/80]
                        Open

                              !self.custom_roles || ((IMPORTANT_ROLES.inject(0){ |sum, role| sum + self.role_count(self.class.const_get(role.upcase)) } <= self.players.count) && ww_count_valid)

                        Line is too long. [86/80]
                        Open

                                return RESPONSE_DOUBLE if self.victim.any?{ |vi| vi[:killer_id] == killer_id }

                        Line is too long. [85/80]
                        Open

                                    self.temp_stats[votee.user_id] << 'executed_first_day' if self.round == 1

                        Line is too long. [105/80]
                        Open

                                  self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&

                        Line is too long. [111/80]
                        Open

                                'Diam menunggu kematian. Tapi saat bertulul dan bermufakat untuk mengeksekusi, bobot suara lu adalah 3'

                        Line is too long. [88/80]
                        Open

                              while current_comp == self.role_composition(self.players.count + res) && res < 100

                        Operator && should be surrounded by a single space.
                        Open

                                res &&  self.necromancee.count == necromancer_count

                        Checks that operators have space around them, except for ** which should not have surrounding space.

                        Example:

                        # bad
                        total = 3*4
                        "apple"+"juice"
                        my_number = 38/4
                        a ** b
                        
                        # good
                        total = 3 * 4
                        "apple" + "juice"
                        my_number = 38 / 4
                        a**b

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.victim.any?{ |vi| vi[:killer_id] == killer_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                                return RESPONSE_DOUBLE if self.necromancee.any?{ |se| se[:necromancer_id] == necromancer_id }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              array.reject{ |vo| vo[:full_name] == USELESS_VILLAGER_SKIP }.group_by{ |vo| vo[:full_name] }.map{ |k, v| [k, v.count] }.sort_by{ |vo| vo[1] }.compact.reverse

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Space missing to the left of {.
                        Open

                              self.protectee.any?{ |pr| pr[:full_name] == victim_name }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [88/80]
                        Open

                                self.update_attribute(:voter_message_queue, self.voter_message_queue << message)

                        Line is too long. [295/80]
                        Open

                                "Menghidupkan kembali 1 orang mayat. Karena lu #{self.get_role(NECROMANCER)} versi super, setelah menghidupkan seseorang, lu akan tetap hidup, tapi cuma ada 1 kesempatan ngidupin orang. Tenang, peran lu ga bakal dikasih tau ke siapa-siapa, hanya lu dan Allah yang tahu. Allaaaaahuakbar!"

                        Line is too long. [84/80]
                        Open

                              self.living_players - self.votee.map{ |a| self.players.with_id(a[:voter_id]) }

                        Line is too long. [83/80]
                        Open

                                return RESPONSE_DOUBLE if self.votee.any?{ |vo| vo[:voter_id] == voter_id }

                        Line is too long. [90/80]
                        Open

                                return RESPONSE_INVALID unless valid_action?(protector_id, protectee, 'protector')

                        Line is too long. [85/80]
                        Open

                                    if self.living_werewolves.count + self.living_super_werewolves.count == 0

                        Line is too long. [81/80]
                        Open

                                res += "\n\n#{self.role_composition}" unless self.role_composition.empty?

                        Line is too long. [94/80]
                        Open

                                'Tiap malem dikasih tau para serigala mau bunuh siapa. Terserah itu info mau lu apain'

                        Space missing to the left of {.
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        Checks that block braces have or don't have a space before the opening brace depending on configuration.

                        Example:

                        # bad
                        foo.map{ |a|
                          a.bar.to_s
                        }
                        
                        # good
                        foo.map { |a|
                          a.bar.to_s
                        }

                        Line is too long. [85/80]
                        Open

                                weights = arr.map{ |x| self.get_player(x.user_id).role_proportion(role) + 1 }

                        Line is too long. [101/80]
                        Open

                                    self.update_attribute(:amnesty_done, self.amnesty_done.merge(votee.user_id.to_s => true))

                        Line is too long. [103/80]
                        Open

                                    LycantululBot.log("#{ded.full_name} is killed because they protected werewolf (from GAME)")

                        Line is too long. [148/80]
                        Open

                                'Diam menunggu kematian. Tapi, kalo lu dibunuh serigala, 1 ekor serigalanya ikutan mati. Aduh itu kenapa penyakit lu ga dikarantina aja sih'

                        Line is too long. [201/80]
                        Open

                                "Diam menunggu kematian sambil joget-joget, jadi kalo lu dibunuh serigala, lu ga mati. Cuma punya #{JESTER_LIMIT} kesempatan, abis itu kalo dibunuh lagi ya mati soalnya udah trauma joget-joget"

                        Avoid comparing a variable with multiple items in a conditional, use Array#include? instead.
                        Open

                                  if role == 'werewolf' || role == 'super_werewolf'
                                    self.killables.with_name(actee_name)
                                  elsif role == 'necromancer' || role == 'super_necromancer'
                                    return true if actee_name == NECROMANCER_SKIP
                                    self.dead_players.with_name(actee_name)

                        This cop checks against comparing a variable with multiple items, where Array#include? could be used instead to avoid code repetition.

                        Example:

                        # bad
                        a = 'a'
                        foo if a == 'a' || a == 'b' || a == 'c'
                        
                        # good
                        a = 'a'
                        foo if ['a', 'b', 'c'].include?(a)

                        Use (rand.round + rand.round).zero? instead of rand.round + rand.round == 0.
                        Open

                                  if protectee && ((protectee.role == WEREWOLF && rand.round + rand.round == 0) || (protectee.role == SUPER_WEREWOLF && rand.round + rand.round < 2)) # 25% ded if protecting werewolf, 75% if super werewolf

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Don't use parentheses around a method call.
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        This cop checks for redundant parentheses.

                        Example:

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

                        Redundant self detected.
                        Open

                              self.group.public_vote?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res = [self.get_role(self.pending_custom_role), amount]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              !self.custom_roles || ((IMPORTANT_ROLES.inject(0){ |sum, role| sum + self.role_count(self.class.const_get(role.upcase)) } <= self.players.count) && ww_count_valid)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    if self.living_werewolves.count + self.living_super_werewolves.count == 0

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                hhost = self.homeless_host

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Do not prefix writer method names with set_.
                        Open

                            def set_custom_role(amount)

                        This cop makes sure that accessor methods are named properly.

                        Example:

                        # bad
                        def set_attribute(value)
                        end
                        
                        # good
                        def attribute=(value)
                        end
                        
                        # bad
                        def get_attribute
                        end
                        
                        # good
                        def attribute
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                cr = self.custom_roles || []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.players.map(&:reset_state)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    player = self.get_player(pl.user_id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use sww.positive? instead of sww > 0.
                        Open

                                  wwc ||= sww > 0 rescue true

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Redundant self detected.
                        Open

                                self.group.update_attribute(:public_vote, !self.group.public_vote?)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                werewolf = self.living_players.with_id(killer_id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                votee = self.living_players.with_name(votee).full_name

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.group.inc_game

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    player = self.get_player(id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:victim, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:night, false)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.group.night_time || Lycantulul::InputProcessorJob::NIGHT_TIME.call

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  pc = self.players.count / 2.0

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                voter = self.living_players.with_id(voter_id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                protectee = self.living_players.with_name(protectee).full_name

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] << 'mauled_first_day' if self.round == 1

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant curly braces around a hash parameter.
                        Open

                            index({ group_id: 1, finished: 1 })

                        This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

                        Example: EnforcedStyle: braces

                        # The `braces` style enforces braces around all method
                        # parameters that are hashes.
                        
                        # bad
                        some_method(x, y, a: 1, b: 2)
                        
                        # good
                        some_method(x, y, {a: 1, b: 2})

                        Example: EnforcedStyle: no_braces (default)

                        # The `no_braces` style checks that the last parameter doesn't
                        # have braces around it.
                        
                        # bad
                        some_method(x, y, {a: 1, b: 2})
                        
                        # good
                        some_method(x, y, a: 1, b: 2)

                        Example: EnforcedStyle: context_dependent

                        # The `context_dependent` style checks that the last parameter
                        # doesn't have braces around it, but requires braces if the
                        # second to last parameter is also a hash literal.
                        
                        # bad
                        some_method(x, y, {a: 1, b: 2})
                        some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)
                        
                        # good
                        some_method(x, y, a: 1, b: 2)
                        some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

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

                                if self.discussion?

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

                        Example:

                        # bad
                        def test
                          if something
                            work
                          end
                        end
                        
                        # good
                        def test
                          return unless something
                          work
                        end
                        
                        # also good
                        def test
                          work if something
                        end
                        
                        # bad
                        if something
                          raise 'exception'
                        else
                          ok
                        end
                        
                        # good
                        raise 'exception' if something
                        ok

                        Freeze mutable objects assigned to constants.
                        Open

                            DEFAULT_ROLES = ['villager']

                        This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

                        Example:

                        # bad
                        CONST = [1, 2, 3]
                        
                        # good
                        CONST = [1, 2, 3].freeze

                        Use ded_count.positive? instead of ded_count > 0.
                        Open

                              if ded_count > 0

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Use cur_count.positive? instead of cur_count > 0.
                        Open

                                cur_count > 0 && res += "<b>#{cur_count}</b> #{self.get_role(self.class.const_get(role.upcase))}\n"

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Redundant self detected.
                        Open

                              self.group.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:discussion, false)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:pending_custom_id, id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                homeless_host = self.living_players.with_name(homeless_host).full_name

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.where(finished: false, waiting: false)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.group.title

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:voter_message_queue, self.voter_message_queue << message)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    if self.living_werewolves.count + self.living_super_werewolves.count == 0

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Freeze mutable objects assigned to constants.
                        Open

                            USELESS_VILLAGER_SKIP = 'OGAH NDAK VOTING KAK'

                        This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

                        Example:

                        # bad
                        CONST = [1, 2, 3]
                        
                        # good
                        CONST = [1, 2, 3].freeze

                        Redundant self detected.
                        Open

                              self.find_by(group_id: group.id, finished: false)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res = [self.get_role(self.pending_custom_role), amount]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                vc = self.sort(victim)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use count.positive? instead of count > 0.
                        Open

                                count > 0 && res += "<i>#{count} #{self.get_role(self.class.const_get(role.upcase))}</i>\n"

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Redundant self detected.
                        Open

                                necromancee = self.dead_players.with_name(necromancee).full_name unless necromancee == NECROMANCER_SKIP

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Missing top-level class documentation comment.
                        Open

                          class Game

                        This cop checks for missing top-level documentation of classes and modules. Classes with no body are exempt from the check and so are namespace modules - modules that have nothing in their bodies except classes, other modules, or constant definitions.

                        The documentation requirement is annulled if the class or module has a "#:nodoc:" comment next to it. Likewise, "#:nodoc: all" does the same for all its children.

                        Example:

                        # bad
                        class Person
                          # ...
                        end
                        
                        # good
                        # Description/Explanation of Person class
                        class Person
                          # ...
                        end

                        Avoid comparing a variable with multiple items in a conditional, use Array#include? instead.
                        Open

                                  elsif role == 'necromancer' || role == 'super_necromancer'
                                    return true if actee_name == NECROMANCER_SKIP
                                    self.dead_players.with_name(actee_name)
                                  else
                                    self.living_players.with_name(actee_name)

                        This cop checks against comparing a variable with multiple items, where Array#include? could be used instead to avoid code repetition.

                        Example:

                        # bad
                        a = 'a'
                        foo if a == 'a' || a == 'b' || a == 'c'
                        
                        # good
                        a = 'a'
                        foo if ['a', 'b', 'c'].include?(a)

                        Freeze mutable objects assigned to constants.
                        Open

                            IMPORTANT_ROLES = ['werewolf', 'seer', 'protector', 'spy', 'necromancer', 'silver_bullet', 'greedy_villager', 'useless_villager', 'super_necromancer', 'faux_seer', 'amnesty', 'homeless', 'super_werewolf', 'jester']

                        This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

                        Example:

                        # bad
                        CONST = [1, 2, 3]
                        
                        # good
                        CONST = [1, 2, 3].freeze

                        Use ww.positive? instead of ww > 0.
                        Open

                                  wwc = ww > 0 rescue true

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Redundant self detected.
                        Open

                              return self.players.create_player(user, self.id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  tmp << self.get_role(self.class.const_get(role)) if role

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.cancel_pending_custom

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              res = self.players.unwelcomed.to_a

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                seen = self.living_players.with_name(seen).full_name

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              !self.custom_roles || ((IMPORTANT_ROLES.inject(0){ |sum, role| sum + self.role_count(self.class.const_get(role.upcase)) } <= self.players.count) && ww_count_valid)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              !self.custom_roles || ((IMPORTANT_ROLES.inject(0){ |sum, role| sum + self.role_count(self.class.const_get(role.upcase)) } <= self.players.count) && ww_count_valid)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                weights = arr.map{ |x| self.get_player(x.user_id).role_proportion(role) + 1 }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.group.inc_werewolf_victory

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant return detected.
                        Open

                              return self.players.with_id(user.id)&.destroy

                        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.

                        Redundant curly braces around a hash parameter.
                        Open

                            index({ finished: 1, waiting: 1, night: 1 })

                        This cop checks for braces around the last parameter in a method call if the last parameter is a hash. It supports braces, no_braces and context_dependent styles.

                        Example: EnforcedStyle: braces

                        # The `braces` style enforces braces around all method
                        # parameters that are hashes.
                        
                        # bad
                        some_method(x, y, a: 1, b: 2)
                        
                        # good
                        some_method(x, y, {a: 1, b: 2})

                        Example: EnforcedStyle: no_braces (default)

                        # The `no_braces` style checks that the last parameter doesn't
                        # have braces around it.
                        
                        # bad
                        some_method(x, y, {a: 1, b: 2})
                        
                        # good
                        some_method(x, y, a: 1, b: 2)

                        Example: EnforcedStyle: context_dependent

                        # The `context_dependent` style checks that the last parameter
                        # doesn't have braces around it, but requires braces if the
                        # second to last parameter is also a hash literal.
                        
                        # bad
                        some_method(x, y, {a: 1, b: 2})
                        some_method(x, y, {a: 1, b: 2}, a: 1, b: 2)
                        
                        # good
                        some_method(x, y, a: 1, b: 2)
                        some_method(x, y, {a: 1, b: 2}, {a: 1, b: 2})

                        Redundant self detected.
                        Open

                              self.where(finished: false, waiting: true)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use next to skip iteration.
                        Open

                                  if protectee && ((protectee.role == WEREWOLF && rand.round + rand.round == 0) || (protectee.role == SUPER_WEREWOLF && rand.round + rand.round < 2)) # 25% ded if protecting werewolf, 75% if super werewolf

                        Use next to skip iteration instead of a condition at the end.

                        Example: EnforcedStyle: skipmodifierifs (default)

                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end
                        
                        # good
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end

                        Example: EnforcedStyle: always

                        # With `always` all conditions at the end of an iteration needs to be
                        # replaced by next - with `skip_modifier_ifs` the modifier if like
                        # this one are ignored: `[1, 2].each { |a| return 'yes' if a == 1 }`
                        
                        # bad
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end
                        
                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end

                        Redundant self detected.
                        Open

                              self.group.voting_time || Lycantulul::InputProcessorJob::VOTING_TIME.call

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                return nil unless self.pending_custom_role

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              return false if self.players.with_id(user.id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_custom_roles(self.pending_custom_role, amount)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              return self.players.create_player(user, self.id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              return self.players.with_id(user.id)&.destroy

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:discussion, true)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  victim = self.living_players.with_name(vc[0][0])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.group.update_attribute(:custom_roles, nil)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:voter_message_queue, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:homeless_host, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] << 'mauled_first_day' if self.round == 1

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Missing magic comment # frozen_string_literal: true.
                        Open

                        module Lycantulul

                        This cop is designed to help upgrade to Ruby 3.0. It will add the comment # frozen_string_literal: true to the top of files to enable frozen string literals. Frozen string literals may be default in Ruby 3.0. The comment will be added below a shebang and encoding comment. The frozen string literal comment is only valid in Ruby 2.3+.

                        Example: EnforcedStyle: when_needed (default)

                        # The `when_needed` style will add the frozen string literal comment
                        # to files only when the `TargetRubyVersion` is set to 2.3+.
                        # bad
                        module Foo
                          # ...
                        end
                        
                        # good
                        # frozen_string_literal: true
                        
                        module Foo
                          # ...
                        end

                        Example: EnforcedStyle: always

                        # The `always` style will always add the frozen string literal comment
                        # to a file, regardless of the Ruby version or if `freeze` or `<<` are
                        # called on a string literal.
                        # bad
                        module Bar
                          # ...
                        end
                        
                        # good
                        # frozen_string_literal: true
                        
                        module Bar
                          # ...
                        end

                        Example: EnforcedStyle: never

                        # The `never` will enforce that the frozen string literal comment does
                        # not exist in a file.
                        # bad
                        # frozen_string_literal: true
                        
                        module Baz
                          # ...
                        end
                        
                        # good
                        module Baz
                          # ...
                        end

                        Use next to skip iteration.
                        Open

                                  if necromancee && necromancer

                        Use next to skip iteration instead of a condition at the end.

                        Example: EnforcedStyle: skipmodifierifs (default)

                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end
                        
                        # good
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end

                        Example: EnforcedStyle: always

                        # With `always` all conditions at the end of an iteration needs to be
                        # replaced by next - with `skip_modifier_ifs` the modifier if like
                        # this one are ignored: `[1, 2].each { |a| return 'yes' if a == 1 }`
                        
                        # bad
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end
                        
                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  if self.get_role(role).gsub(/[^A-Za-z]/, '').downcase.include?(role_string)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_custom_roles(self.pending_custom_role, amount)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.inc(round: 1)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Freeze mutable objects assigned to constants.
                        Open

                            NECROMANCER_SKIP = 'NDAK DULU DEH'

                        This cop checks whether some constant value isn't a mutable literal (e.g. array or hash).

                        Example:

                        # bad
                        CONST = [1, 2, 3]
                        
                        # good
                        CONST = [1, 2, 3].freeze

                        Redundant self detected.
                        Open

                              res = self.create(group_id: message.chat.id, creator_id: message.from.id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.group.discussion_time || Lycantulul::InputProcessorJob::DISCUSSION_TIME.call

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.public_vote? ? 'publik' : 'rahasia'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                if self.custom_roles && ((ww = self.custom_roles[WEREWOLF]) || (sww = self.custom_roles[SUPER_WEREWOLF]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:voter_message_queue, self.voter_message_queue << message)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                return unless self.waiting?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.players.each do |pl|

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

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

                                if role_string =~ /tts/

                        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?

                        Use next to skip iteration.
                        Open

                                          if vh || wh

                        Use next to skip iteration instead of a condition at the end.

                        Example: EnforcedStyle: skipmodifierifs (default)

                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end
                        
                        # good
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end

                        Example: EnforcedStyle: always

                        # With `always` all conditions at the end of an iteration needs to be
                        # replaced by next - with `skip_modifier_ifs` the modifier if like
                        # this one are ignored: `[1, 2].each { |a| return 'yes' if a == 1 }`
                        
                        # bad
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end
                        
                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end

                        Use next to skip iteration.
                        Open

                                  if seen && self.living_seers.with_id(vc[:seer_id])

                        Use next to skip iteration instead of a condition at the end.

                        Example: EnforcedStyle: skipmodifierifs (default)

                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end
                        
                        # good
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end

                        Example: EnforcedStyle: always

                        # With `always` all conditions at the end of an iteration needs to be
                        # replaced by next - with `skip_modifier_ifs` the modifier if like
                        # this one are ignored: `[1, 2].each { |a| return 'yes' if a == 1 }`
                        
                        # bad
                        [1, 2].each do |o|
                          puts o unless o == 1
                        end
                        
                        # bad
                        [1, 2].each do |a|
                          if a == 1
                            puts a
                          end
                        end
                        
                        # good
                        [1, 2].each do |a|
                          next unless a == 1
                          puts a
                        end

                        Redundant return detected.
                        Open

                              return self.players.create_player(user, self.id)

                        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.

                        Redundant self detected.
                        Open

                              self.group.custom_roles

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.group.update_attribute(:custom_roles, cr)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.cancel_pending_custom

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                arr = self.living_villagers.to_a

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.group.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.group.inc_village_victory

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.temp_stats.each do |id, arr|

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    if victim.role != JESTER || ((jd = self.jester_done[victim.user_id]) && jd >= JESTER_LIMIT)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                            ded = self.living_werewolves.sample

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use (self.living_werewolves.count + self.living_super_werewolves.count).zero? instead of self.living_werewolves.count + self.living_super_werewolves.count == 0.
                        Open

                                    if self.living_werewolves.count + self.living_super_werewolves.count == 0

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Use self.living_protectors.count.positive? instead of self.living_protectors.count > 0.
                        Open

                                return nil unless self.living_protectors.count > 0

                        This cop checks for usage of comparison operators (==, >, <) to test numbers as zero, positive, or negative. These can be replaced by their respective predicate methods. The cop can also be configured to do the reverse.

                        The cop disregards #nonzero? as it its value is truthy or falsey, but not true and false, and thus not always interchangeable with != 0.

                        The cop ignores comparisons to global variables, since they are often populated with objects which can be compared with integers, but are not themselves Interger polymorphic.

                        Example: EnforcedStyle: predicate (default)

                        # bad
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0
                        
                        # good
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?

                        Example: EnforcedStyle: comparison

                        # bad
                        
                        foo.zero?
                        foo.negative?
                        bar.baz.positive?
                        
                        # good
                        
                        foo == 0
                        0 > foo
                        bar.baz > 0

                        Redundant self detected.
                        Open

                                self.group.update_attribute(:public_vote, !self.group.public_vote?)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.players.any?{ |pl| pl.full_name == Lycantulul::Player.get_full_name(user) && pl.user_id != user.id }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                victim = self.killables.with_name(victim).full_name

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:finished, true)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] << 'mauled'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                            self.temp_stats[dh.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] << 'mauled_under_protection'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[victim.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.temp_stats[votee.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  if votee.role == AMNESTY && !self.amnesty_done[votee.user_id.to_s]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.update_attribute(:amnesty_done, self.amnesty_done.merge(votee.user_id.to_s => true))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                ss = self.seen

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  necromancer = self.living_necromancers.with_id(vc[:necromancer_id]) || (!self.super_necromancer_done[vc[:necromancer_id].to_s] && self.living_super_necromancers.with_id(vc[:necromancer_id]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                actor = self.send("living_#{role.pluralize}").with_id(actor_id)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              ded_count = self.dead_players.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:last_voting_list_query, Time.now)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.living_players - self.votee.map{ |a| self.players.with_id(a[:voter_id]) }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Avoid rescuing without specifying an error class.
                        Open

                            rescue

                        This cop checks for rescuing StandardError. There are two supported styles implicit and explicit. This cop will not register an offense if any error other than StandardError is specified.

                        Example: EnforcedStyle: implicit

                        # `implicit` will enforce using `rescue` instead of
                        # `rescue StandardError`.
                        
                        # bad
                        begin
                          foo
                        rescue StandardError
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue OtherError
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue StandardError, SecurityError
                          bar
                        end

                        Example: EnforcedStyle: explicit (default)

                        # `explicit` will enforce using `rescue StandardError`
                        # instead of `rescue`.
                        
                        # bad
                        begin
                          foo
                        rescue
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue StandardError
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue OtherError
                          bar
                        end
                        
                        # good
                        begin
                          foo
                        rescue StandardError, SecurityError
                          bar
                        end

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

                              return "(ga ada, karena udah di-setting semua)" if res == 100

                        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"

                        Redundant self detected.
                        Open

                                        self.get_role(seen.role)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                if self.discussion?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              count += 2 * self.living_greedy_villagers.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.votee.count == count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use safe navigation (&.) instead of checking if an object exists before calling the method.
                        Open

                                ss && ss.each do |vc|
                                  protectee = self.living_players.with_name(vc[:full_name])
                                  if protectee && ((protectee.role == WEREWOLF && rand.round + rand.round == 0) || (protectee.role == SUPER_WEREWOLF && rand.round + rand.round < 2)) # 25% ded if protecting werewolf, 75% if super werewolf
                                    ded = self.living_players.with_id(vc[:protector_id])
                                    ded.kill

                        This cop transforms usages of a method call safeguarded by a non nil check for the variable whose method is being called to safe navigation (&.).

                        Configuration option: ConvertCodeThatCanStartToReturnNil The default for this is false. When configured to true, this will check for code in the format !foo.nil? && foo.bar. As it is written, the return of this code is limited to false and whatever the return of the method is. If this is converted to safe navigation, foo&.bar can start returning nil as well as what the method returns.

                        Example:

                        # bad
                        foo.bar if foo
                        foo.bar(param1, param2) if foo
                        foo.bar { |e| e.something } if foo
                        foo.bar(param) { |e| e.something } if foo
                        
                        foo.bar if !foo.nil?
                        foo.bar unless !foo
                        foo.bar unless foo.nil?
                        
                        foo && foo.bar
                        foo && foo.bar(param1, param2)
                        foo && foo.bar { |e| e.something }
                        foo && foo.bar(param) { |e| e.something }
                        
                        # good
                        foo&.bar
                        foo&.bar(param1, param2)
                        foo&.bar { |e| e.something }
                        foo&.bar(param) { |e| e.something }
                        
                        foo.nil? || foo.bar
                        !foo || foo.bar
                        
                        # Methods that `nil` will `respond_to?` should not be converted to
                        # use safe navigation
                        foo.to_i if foo

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

                              res += "Ubah pake /ganti_settingan_voting"

                        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"

                        Use %w or %W for an array of words.
                        Open

                            ['ok', 'invalid', 'double', 'skip'].each_with_index do |response, value|

                        This cop can check for array literals made up of word-like strings, that are not using the %w() syntax.

                        Alternatively, it can check for uses of the %w() syntax, in projects which do not want to include that syntax.

                        Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of 3 will not enforce a style on an array of 2 or fewer elements.

                        Example: EnforcedStyle: percent (default)

                        # good
                        %w[foo bar baz]
                        
                        # bad
                        ['foo', 'bar', 'baz']

                        Example: EnforcedStyle: brackets

                        # good
                        ['foo', 'bar', 'baz']
                        
                        # bad
                        %w[foo bar baz]

                        Redundant self detected.
                        Open

                                      self.jester_done[victim.user_id] += 1

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.temp_stats[victim.user_id] << 'jester_safe'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:night, true)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[votee.user_id] << 'executed'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.seen.count == self.living_seers.count &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.living_super_necromancers.count do |sn|

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += "\n\n#{self.list_settings}"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Avoid using rescue in its modifier form.
                        Open

                                  role = sorted_roles[count += 1].upcase rescue nil

                        This cop checks for uses of rescue in its modifier form.

                        Example:

                        # bad
                        some_method rescue handle_error
                        
                        # good
                        begin
                          some_method
                        rescue
                          handle_error
                        end

                        Use safe navigation (&.) instead of checking if an object exists before calling the method.
                        Open

                                ss && ss.each do |vc|
                                  seen = self.living_players.with_name(vc[:full_name])
                                  if seen && self.living_seers.with_id(vc[:seer_id])
                                    LycantululBot.log("#{seen.full_name} is seen (from GAME)")
                                    seen_role =

                        This cop transforms usages of a method call safeguarded by a non nil check for the variable whose method is being called to safe navigation (&.).

                        Configuration option: ConvertCodeThatCanStartToReturnNil The default for this is false. When configured to true, this will check for code in the format !foo.nil? && foo.bar. As it is written, the return of this code is limited to false and whatever the return of the method is. If this is converted to safe navigation, foo&.bar can start returning nil as well as what the method returns.

                        Example:

                        # bad
                        foo.bar if foo
                        foo.bar(param1, param2) if foo
                        foo.bar { |e| e.something } if foo
                        foo.bar(param) { |e| e.something } if foo
                        
                        foo.bar if !foo.nil?
                        foo.bar unless !foo
                        foo.bar unless foo.nil?
                        
                        foo && foo.bar
                        foo && foo.bar(param1, param2)
                        foo && foo.bar { |e| e.something }
                        foo && foo.bar(param) { |e| e.something }
                        
                        # good
                        foo&.bar
                        foo&.bar(param1, param2)
                        foo&.bar { |e| e.something }
                        foo&.bar(param) { |e| e.something }
                        
                        foo.nil? || foo.bar
                        !foo || foo.bar
                        
                        # Methods that `nil` will `respond_to?` should not be converted to
                        # use safe navigation
                        foo.to_i if foo

                        Pass &:empty? as an argument to reject instead of a block.
                        Open

                              keyboard.reject{ |x| x.empty? }

                        Use symbols as procs when possible.

                        Example:

                        # bad
                        something.map { |s| s.upcase }
                        
                        # good
                        something.map(&:upcase)

                        Redundant self detected.
                        Open

                                            self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[victim.user_id] << 'homeless_safe'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:seen, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  if seen && self.living_seers.with_id(vc[:seer_id])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                ss = self.protectee

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.update_attribute(:super_necromancer_done, self.super_necromancer_done.merge(necromancer.user_id.to_s => true))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.living_players.with_name(actee_name)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              res += "Sistem voting: <b>#{self.voting_scheme}</b>\n"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "Diam menunggu kematian. Seriously. Tapi bisa bantu-bantu yang lain lah sumbang suara buat bunuh para serigala, sekalian berdoa biar dilindungi sama #{self.get_role(PROTECTOR)} kalo ada"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "Menghidupkan kembali 1 orang mayat. Karena lu #{self.get_role(NECROMANCER)} versi super, setelah menghidupkan seseorang, lu akan tetap hidup, tapi cuma ada 1 kesempatan ngidupin orang. Tenang, peran lu ga bakal dikasih tau ke siapa-siapa, hanya lu dan Allah yang tahu. Allaaaaahuakbar!"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              count ||= self.players.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                            self.temp_stats[dh.user_id] << 'homeless_werewolf' if wh

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.temp_stats[victim.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  votee = self.living_players.with_name(vc[0][0])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[votee.user_id] << 'executed_first_day' if self.round == 1

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.seen.count == self.living_seers.count &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.homeless_host.count == self.living_homelesses.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                necromancer_count = self.living_necromancers.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              sorted_roles = IMPORTANT_ROLES.sort_by{ |role| self.get_role(self.class.const_get(role.upcase)) }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.living_players - self.votee.map{ |a| self.players.with_id(a[:voter_id]) }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  necromancee = self.dead_players.with_name(vc[:full_name])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  necromancer = self.living_necromancers.with_id(vc[:necromancer_id]) || (!self.super_necromancer_done[vc[:necromancer_id].to_s] && self.living_super_necromancers.with_id(vc[:necromancer_id]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += "\n\n#{self.role_composition}" unless self.role_composition.empty?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                            dh = self.players.with_id(hh[:homeless_id])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                            self.temp_stats[dh.user_id] << 'homeless_mauled' if vh

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.temp_stats[victim.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[necromancee.user_id] << 'revived'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.victim.count == self.living_werewolves.count + (self.living_super_werewolves.count * 2) &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    !self.super_necromancer_done[sn.user_id.to_s]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              liv_count = self.living_players.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                count > 0 && res += "<i>#{count} #{self.get_role(self.class.const_get(role.upcase))}</i>\n"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              if self.waiting?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Avoid using rescue in its modifier form.
                        Open

                                  wwc ||= sww > 0 rescue true

                        This cop checks for uses of rescue in its modifier form.

                        Example:

                        # bad
                        some_method rescue handle_error
                        
                        # good
                        begin
                          some_method
                        rescue
                          handle_error
                        end

                        Redundant self detected.
                        Open

                                vc = self.sort(votee)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[votee.user_id] << 'executed_under_protection'

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[votee.user_id] << 'executed_first_day' if self.round == 1

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  seen = self.living_players.with_name(vc[:full_name])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.protectee.count == self.living_protectors.count &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              custom = self.custom_roles[role] rescue nil

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                cur_count > 0 && res += "<b>#{cur_count}</b> #{self.get_role(self.class.const_get(role.upcase))}\n"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Avoid using rescue in its modifier form.
                        Open

                                  wwc = ww > 0 rescue true

                        This cop checks for uses of rescue in its modifier form.

                        Example:

                        # bad
                        some_method rescue handle_error
                        
                        # good
                        begin
                          some_method
                        rescue
                          handle_error
                        end

                        Avoid using rescue in its modifier form.
                        Open

                              custom = self.custom_roles[role] rescue nil

                        This cop checks for uses of rescue in its modifier form.

                        Example:

                        # bad
                        some_method rescue handle_error
                        
                        # good
                        begin
                          some_method
                        rescue
                          handle_error
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:necromancee, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use %w or %W for an array of words.
                        Open

                            IMPORTANT_ROLES = ['werewolf', 'seer', 'protector', 'spy', 'necromancer', 'silver_bullet', 'greedy_villager', 'useless_villager', 'super_necromancer', 'faux_seer', 'amnesty', 'homeless', 'super_werewolf', 'jester']

                        This cop can check for array literals made up of word-like strings, that are not using the %w() syntax.

                        Alternatively, it can check for uses of the %w() syntax, in projects which do not want to include that syntax.

                        Configuration option: MinSize If set, arrays with fewer elements than this value will not trigger the cop. For example, a MinSize of 3 will not enforce a style on an array of 2 or fewer elements.

                        Example: EnforcedStyle: percent (default)

                        # good
                        %w[foo bar baz]
                        
                        # bad
                        ['foo', 'bar', 'baz']

                        Example: EnforcedStyle: brackets

                        # good
                        ['foo', 'bar', 'baz']
                        
                        # bad
                        %w[foo bar baz]

                        Redundant self detected.
                        Open

                                    self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.update_attribute(:amnesty_done, self.amnesty_done.merge(votee.user_id.to_s => true))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.killables.with_name(actee_name)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += self.living_players.map{ |lp| "- #{lp.full_name}" }.sort.join("\n")

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.players.dead

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        rand_role = self.killables.without_id([vc[:seer_id]]).sample.role rescue seen.role

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "Super #{self.get_role(NECROMANCER)}"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              while current_comp == self.role_composition(self.players.count + res) && res < 100

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              count = self.living_players.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Use safe navigation (&.) instead of checking if an object exists before calling the method.
                        Open

                                ss && ss.each do |vc|
                                  next if vc[:full_name] == NECROMANCER_SKIP
                                  necromancee = self.dead_players.with_name(vc[:full_name])
                                  necromancer = self.living_necromancers.with_id(vc[:necromancer_id]) || (!self.super_necromancer_done[vc[:necromancer_id].to_s] && self.living_super_necromancers.with_id(vc[:necromancer_id]))
                                  if necromancee && necromancer

                        This cop transforms usages of a method call safeguarded by a non nil check for the variable whose method is being called to safe navigation (&.).

                        Configuration option: ConvertCodeThatCanStartToReturnNil The default for this is false. When configured to true, this will check for code in the format !foo.nil? && foo.bar. As it is written, the return of this code is limited to false and whatever the return of the method is. If this is converted to safe navigation, foo&.bar can start returning nil as well as what the method returns.

                        Example:

                        # bad
                        foo.bar if foo
                        foo.bar(param1, param2) if foo
                        foo.bar { |e| e.something } if foo
                        foo.bar(param) { |e| e.something } if foo
                        
                        foo.bar if !foo.nil?
                        foo.bar unless !foo
                        foo.bar unless foo.nil?
                        
                        foo && foo.bar
                        foo && foo.bar(param1, param2)
                        foo && foo.bar { |e| e.something }
                        foo && foo.bar(param) { |e| e.something }
                        
                        # good
                        foo&.bar
                        foo&.bar(param1, param2)
                        foo&.bar { |e| e.something }
                        foo&.bar(param) { |e| e.something }
                        
                        foo.nil? || foo.bar
                        !foo || foo.bar
                        
                        # Methods that `nil` will `respond_to?` should not be converted to
                        # use safe navigation
                        foo.to_i if foo

                        Redundant self detected.
                        Open

                                      self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  protectee = self.living_players.with_name(vc[:full_name])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.temp_stats[necromancee.user_id] ||= []

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.protectee.any?{ |pr| pr[:full_name] == victim_name }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "BUNUH, BUNUH, BUNUH\n\nSetiap malam, bakal ditanya mau bunuh siapa (oiya, kalo misalnya ada serigala yang lain, kalian harus berunding soalnya ntar voting, kalo ga ada suara mayoritas siapa yang mau dibunuh, ga ada yang mati, ntar gua kasih tau kok pas gua tanyain)\n\nHati-hati, bisa jadi ada #{self.get_role(SILVER_BULLET)} di antara para warga kampung, kalo bunuh dia, 1 ekor serigala akan ikut mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Avoid using rescue in its modifier form.
                        Open

                                        rand_role = self.killables.without_id([vc[:seer_id]]).sample.role rescue seen.role

                        This cop checks for uses of rescue in its modifier form.

                        Example:

                        # bad
                        some_method rescue handle_error
                        
                        # good
                        begin
                          some_method
                        rescue
                          handle_error
                        end

                        Redundant self detected.
                        Open

                                        self.save

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.jester_done[victim.user_id] ||= 0

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.living_players.without_id(voted).each(&:inc_abstain)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                abs_list = self.living_players.abstain.to_a

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        self.get_role(rand_role)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  necromancer = self.living_necromancers.with_id(vc[:necromancer_id]) || (!self.super_necromancer_done[vc[:necromancer_id].to_s] && self.living_super_necromancers.with_id(vc[:necromancer_id]))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.homeless_host.count == self.living_homelesses.count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                return false if role == 'super_necromancer' && self.super_necromancer_done[actor_id.to_s]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                count = self.send("living_#{role.pluralize}").count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.sort(votee).each do |votee|

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.players.alive

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                          wh = self.living_werewolves.with_name(hh[:full_name]) || self.living_super_werewolves.with_name(hh[:full_name])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                          wh = self.living_werewolves.with_name(hh[:full_name]) || self.living_super_werewolves.with_name(hh[:full_name])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                        return [victim.user_id, victim.full_name, self.get_role(victim.role), dead_werewolf, dead_homeless]

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:votee, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                return nil unless self.living_protectors.count > 0

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              if self.finished

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.living_players - self.votee.map{ |a| self.players.with_id(a[:voter_id]) }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                voted = self.votee.map{ |v| v[:voter_id] }

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                ss = self.necromancee

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.with_lock(wait: true) do

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += (self.dead_players).map{ |lp| "- #{lp.full_name} - <i>#{self.get_role(lp.role)}</i>" }.sort.join("\n")

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res += "\n\n#{self.role_composition}" unless self.role_composition.empty?

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:last_player_list_query, Time.now)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                "#{self.get_task(WEREWOLF)}\n\nBedanya lu dengan serigala tulul adalah:\n- Lu ga bakal terjangkit kalo ngebunuh #{self.get_role(SILVER_BULLET)}\n- Siapa yang mau lu bunuh ga bakal ketahuan sama #{self.get_role(SPY)}\n- Kalo ada beberapa serigala, suara lu buat voting ngebunuh siapa diitung 2\n- #{self.get_role(SEER)} dan #{self.get_role(FAUX_SEER)} bakal liat lu sebagai #{self.get_role(VILLAGER)}\n- Kalo dijualin jimat sama #{self.get_role(PROTECTOR)}, dia pasti mati"

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              current_comp = self.role_composition

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              while current_comp == self.role_composition(self.players.count + res) && res < 100

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.living_players.with_role(self.class.const_get(role.upcase))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                self.update_attribute(:protectee, [])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    ded = self.living_players.with_id(vc[:protector_id])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                      self.update_attribute(:super_necromancer_done, self.super_necromancer_done.merge(necromancer.user_id.to_s => true))

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                  self.protectee.count == self.living_protectors.count &&

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                res &&  self.necromancee.count == necromancer_count

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                                    self.dead_players.with_name(actee_name)

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        Redundant self detected.
                        Open

                              self.living_players.without_role([WEREWOLF, SUPER_WEREWOLF])

                        This cop checks for redundant uses of self.

                        The usage of self is only needed when:

                        • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

                        • Calling an attribute writer to prevent an local variable assignment.

                        Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

                        Note we allow uses of self with operators because it would be awkward otherwise.

                        Example:

                        # bad
                        def foo(bar)
                          self.baz
                        end
                        
                        # good
                        def foo(bar)
                          self.bar  # Resolves name clash with the argument.
                        end
                        
                        def foo
                          bar = 1
                          self.bar  # Resolves name clash with the local variable.
                        end
                        
                        def foo
                          %w[x y z].select do |bar|
                            self.bar == bar  # Resolves name clash with argument of the block.
                          end
                        end

                        There are no issues that match your filters.

                        Category
                        Status