Class: RuboCop::Cop::Offense
- Inherits:
-
Object
- Object
- RuboCop::Cop::Offense
- Includes:
- Comparable
- Defined in:
- lib/rubocop/cop/offense.rb
Overview
An offense represents a style violation detected by RuboCop.
Constant Summary collapse
- COMPARISON_ATTRIBUTES =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
[:line, :column, :cop_name, :message, :severity].freeze
Instance Attribute Summary collapse
-
#cop_name ⇒ String
readonly
A cop class name without namespace.
-
#corrected ⇒ Boolean
(also: #corrected?)
readonly
Whether this offense is automatically corrected.
-
#disabled? ⇒ Boolean
readonly
Whether this offense was locally disabled where it occurred.
-
#location ⇒ Parser::Source::Range
readonly
The location where the violation is detected.
-
#message ⇒ String
readonly
Human-readable message.
- #severity ⇒ RuboCop::Cop::Severity readonly
- #status ⇒ Object readonly private
Instance Method Summary collapse
-
#<=>(other) ⇒ Integer
Returns ‘-1`, `0` or `+1` if this offense is less than, equal to, or greater than `other`.
-
#==(other) ⇒ Boolean
(also: #eql?)
Returns ‘true` if two offenses contain same attributes.
- #column ⇒ Object private
- #hash ⇒ Object
-
#initialize(severity, location, message, cop_name, status = :uncorrected) ⇒ Offense
constructor
private
A new instance of Offense.
- #line ⇒ Object private
-
#real_column ⇒ Object
private
Internally we use column number that start at 0, but when outputting column numbers, we want them to start at 1.
-
#to_s ⇒ Object
private
This is just for debugging purpose.
Constructor Details
#initialize(severity, location, message, cop_name, status = :uncorrected) ⇒ Offense
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Offense.
59 60 61 62 63 64 65 66 67 |
# File 'lib/rubocop/cop/offense.rb', line 59 def initialize(severity, location, , cop_name, status = :uncorrected) @severity = RuboCop::Cop::Severity.new(severity) @location = location @message = .freeze @cop_name = cop_name.freeze @status = status freeze end |
Instance Attribute Details
#cop_name ⇒ String (readonly)
Returns a cop class name without namespace. i.e. type of the violation.
53 54 55 |
# File 'lib/rubocop/cop/offense.rb', line 53 def cop_name @cop_name end |
#corrected ⇒ Boolean (readonly) Also known as: corrected?
Returns whether this offense is automatically corrected.
75 76 77 |
# File 'lib/rubocop/cop/offense.rb', line 75 def corrected @status == :unsupported ? nil : @status == :corrected end |
#disabled? ⇒ Boolean (readonly)
Returns whether this offense was locally disabled where it occurred.
86 87 88 |
# File 'lib/rubocop/cop/offense.rb', line 86 def disabled? @status == :disabled end |
#location ⇒ Parser::Source::Range (readonly)
Returns the location where the violation is detected.
30 31 32 |
# File 'lib/rubocop/cop/offense.rb', line 30 def location @location end |
#message ⇒ String (readonly)
Returns human-readable message.
41 42 43 |
# File 'lib/rubocop/cop/offense.rb', line 41 def @message end |
#severity ⇒ RuboCop::Cop::Severity (readonly)
19 20 21 |
# File 'lib/rubocop/cop/offense.rb', line 19 def severity @severity end |
#status ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
56 57 58 |
# File 'lib/rubocop/cop/offense.rb', line 56 def status @status end |
Instance Method Details
#<=>(other) ⇒ Integer
Returns ‘-1`, `0` or `+1` if this offense is less than, equal to, or greater than `other`.
141 142 143 144 145 146 147 |
# File 'lib/rubocop/cop/offense.rb', line 141 def <=>(other) COMPARISON_ATTRIBUTES.each do |attribute| result = send(attribute) <=> other.send(attribute) return result unless result == 0 end 0 end |
#==(other) ⇒ Boolean Also known as: eql?
Returns ‘true` if two offenses contain same attributes
120 121 122 123 124 |
# File 'lib/rubocop/cop/offense.rb', line 120 def ==(other) COMPARISON_ATTRIBUTES.all? do |attribute| send(attribute) == other.send(attribute) end end |
#column ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
103 104 105 |
# File 'lib/rubocop/cop/offense.rb', line 103 def column location.column end |
#hash ⇒ Object
128 129 130 131 132 |
# File 'lib/rubocop/cop/offense.rb', line 128 def hash COMPARISON_ATTRIBUTES.reduce(0) do |hash, attribute| hash ^ send(attribute).hash end end |
#line ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
98 99 100 |
# File 'lib/rubocop/cop/offense.rb', line 98 def line location.line end |
#real_column ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Internally we use column number that start at 0, but when outputting column numbers, we want them to start at 1. One reason is that editors, such as Emacs, expect this.
112 113 114 |
# File 'lib/rubocop/cop/offense.rb', line 112 def real_column column + 1 end |
#to_s ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This is just for debugging purpose.
92 93 94 95 |
# File 'lib/rubocop/cop/offense.rb', line 92 def to_s format('%s:%3d:%3d: %s', severity.code, line, real_column, ) end |