Class: Rubocop::Cop::Offence
- Inherits:
-
Object
- Object
- Rubocop::Cop::Offence
- Includes:
- Comparable
- Defined in:
- lib/rubocop/cop/offence.rb
Overview
An Offence represents a style violation detected by RuboCop.
Constant Summary collapse
- SEVERITIES =
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.
[:refactor, :convention, :warning, :error, :fatal]
Instance Attribute Summary collapse
- #column ⇒ Object readonly private
-
#cop_name ⇒ String
readonly
A cop class name without namespace.
-
#corrected ⇒ Boolean
(also: #corrected?)
readonly
Whether this offence is automatically corrected.
- #line ⇒ Object readonly private
-
#location ⇒ Parser::Source::Range
readonly
The location where the violation is detected.
-
#message ⇒ String
readonly
Human-readable message.
-
#severity ⇒ Symbol
readonly
Severity.
Instance Method Summary collapse
-
#<=>(other) ⇒ Integer
Returns
-1
,0
or+1
if this offence is less than, equal to, or greater thanother
. -
#==(other) ⇒ Boolean
Returns
true
if two offences contain same attributes. -
#initialize(severity, location, message, cop_name, corrected = false) ⇒ Offence
constructor
private
A new instance of Offence.
-
#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.
- #severity_code ⇒ Object private
- #severity_level ⇒ Object private
-
#to_s ⇒ Object
private
This is just for debugging purpose.
Constructor Details
#initialize(severity, location, message, cop_name, corrected = false) ⇒ Offence
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 Offence.
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rubocop/cop/offence.rb', line 71 def initialize(severity, location, , cop_name, corrected = false) unless SEVERITIES.include?(severity) fail ArgumentError, "Unknown severity: #{severity}" end @severity = severity.freeze @location = location.freeze @line = location.line.freeze @column = location.column.freeze @message = .freeze @cop_name = cop_name.freeze @corrected = corrected.freeze freeze end |
Instance Attribute Details
#column ⇒ 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.
68 69 70 |
# File 'lib/rubocop/cop/offence.rb', line 68 def column @column end |
#cop_name ⇒ String (readonly)
Returns a cop class name without namespace. i.e. type of the violation.
53 54 55 |
# File 'lib/rubocop/cop/offence.rb', line 53 def cop_name @cop_name end |
#corrected ⇒ Boolean (readonly) Also known as: corrected?
Returns whether this offence is automatically corrected.
61 62 63 |
# File 'lib/rubocop/cop/offence.rb', line 61 def corrected @corrected end |
#line ⇒ 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.
65 66 67 |
# File 'lib/rubocop/cop/offence.rb', line 65 def line @line end |
#location ⇒ Parser::Source::Range (readonly)
Returns the location where the violation is detected.
30 31 32 |
# File 'lib/rubocop/cop/offence.rb', line 30 def location @location end |
#message ⇒ String (readonly)
Returns human-readable message.
41 42 43 |
# File 'lib/rubocop/cop/offence.rb', line 41 def @message end |
#severity ⇒ Symbol (readonly)
Returns severity.
any of :refactor
, :convention
, :warning
, :error
or :fatal
.
19 20 21 |
# File 'lib/rubocop/cop/offence.rb', line 19 def severity @severity end |
Instance Method Details
#<=>(other) ⇒ Integer
Returns -1
, 0
or +1
if this offence is less than, equal to, or greater than other
.
128 129 130 131 132 133 134 |
# File 'lib/rubocop/cop/offence.rb', line 128 def <=>(other) [:line, :column, :cop_name, :message].each do |attribute| result = send(attribute) <=> other.send(attribute) return result unless result == 0 end 0 end |
#==(other) ⇒ Boolean
Returns true
if two offences contain same attributes
115 116 117 118 119 |
# File 'lib/rubocop/cop/offence.rb', line 115 def ==(other) severity == other.severity && line == other.line && column == other.column && == other. && cop_name == other.cop_name 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.
107 108 109 |
# File 'lib/rubocop/cop/offence.rb', line 107 def real_column column + 1 end |
#severity_code ⇒ 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.
93 94 95 |
# File 'lib/rubocop/cop/offence.rb', line 93 def severity_code @severity.to_s[0].upcase end |
#severity_level ⇒ 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/offence.rb', line 98 def severity_level SEVERITIES.index(severity) + 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.
87 88 89 90 |
# File 'lib/rubocop/cop/offence.rb', line 87 def to_s sprintf('%s:%3d:%3d: %s', severity_code, line, real_column, ) end |