lib/rubocop/cop_patches.rb (16 lines of code) (raw):

# frozen_string_literal: true module RuboCopCopNodeLoc # RuboCop's default implementation of `add_offense` in `Cop` only gets the # location of the keyword associated with the problem which, for things # like complexity checkers, is just the method def line. This isn't very # useful for checkers where the entire method body is relevant. Fetching # this information from an `Offense` instance is difficult, since the # original AST is no longer available. So it's easier to monkey-path # this method on complexity checkers to send the location of the entire # method to the created `Offense`. def add_offense(node, location: :expression, message: nil, severity: nil, &block) super(node, location: node.loc, message: message, severity: severity, &block) end end [ RuboCop::Cop::Metrics::AbcSize, RuboCop::Cop::Metrics::BlockLength, RuboCop::Cop::Metrics::ClassLength, RuboCop::Cop::Metrics::CyclomaticComplexity, RuboCop::Cop::Metrics::MethodLength, RuboCop::Cop::Metrics::ModuleLength, RuboCop::Cop::Metrics::PerceivedComplexity, ].each do |cop_class| cop_class.prepend RuboCopCopNodeLoc end