diff --git a/lib/rubocop/cop/offense.rb b/lib/rubocop/cop/offense.rb
index <HASH>..<HASH> 100644
--- a/lib/rubocop/cop/offense.rb
+++ b/lib/rubocop/cop/offense.rb
@@ -92,15 +92,9 @@ module RuboCop
       # @return [Parser::Source::Range]
       #   the range of the code that is highlighted
       def highlighted_area
-        column_length = if location.first_line == location.last_line
-                          location.column_range.count
-                        else
-                          location.source_line.length - location.column
-                        end
-
-        Parser::Source::Range.new(location.source_line,
-                                  location.column,
-                                  location.column + column_length)
+        Parser::Source::Range.new(source_line,
+                                  column,
+                                  column + column_length)
       end
 
       # @api private
@@ -121,6 +115,35 @@ module RuboCop
       end
 
       # @api private
+      def source_line
+        location.source_line
+      end
+
+      # @api private
+      def column_length
+        if first_line == last_line
+          column_range.count
+        else
+          source_line.length - column
+        end
+      end
+
+      # @api private
+      def first_line
+        location.first_line
+      end
+
+      # @api private
+      def last_line
+        location.last_line
+      end
+
+      # @api private
+      def column_range
+        location.column_range
+      end
+
+      # @api private
       #
       # Internally we use column number that start at 0, but when
       # outputting column numbers, we want them to start at 1. One
Reduce complexity in Offense

Split `highlighted_area` into smaller methods.