Class: PmdTester::PmdViolation
- Inherits:
-
Object
- Object
- PmdTester::PmdViolation
- Defined in:
- lib/pmdtester/pmd_violation.rb
Overview
This class represents a 'violation' element of Pmd xml report and which pmd branch the 'violation' is from
Instance Attribute Summary collapse
-
#branch ⇒ Object
readonly
The pmd branch type, 'base' or 'patch'.
-
#fname ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#info_url ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#language ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#line ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#message ⇒ Object
Returns the value of attribute message.
-
#old_line ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#old_message ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#rule_name ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
-
#ruleset_name ⇒ Object
readonly
The schema of 'violation' element: <xs:complexType name=“violation”> <xs:simpleContent> <xs:extension base=“xs:string”> <xs:attribute name=“beginline” type=“xs:integer” use=“required” /> <xs:attribute name=“endline” type=“xs:integer” use=“required” /> <xs:attribute name=“begincolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“endcolumn” type=“xs:integer” use=“required” /> <xs:attribute name=“rule” type=“xs:string” use=“required” /> <xs:attribute name=“ruleset” type=“xs:string” use=“required” /> <xs:attribute name=“package” type=“xs:string” use=“optional” /> <xs:attribute name=“class” type=“xs:string” use=“optional” /> <xs:attribute name=“method” type=“xs:string” use=“optional” /> <xs:attribute name=“variable” type=“xs:string” use=“optional” /> <xs:attribute name=“externalInfoUrl” type=“xs:string” use=“optional” /> <xs:attribute name=“priority” type=“xs:string” use=“required” /> </xs:extension> </xs:simpleContent> </xs:complexType>.
Instance Method Summary collapse
-
#added? ⇒ Boolean
only makes sense if this is a diff.
-
#changed? ⇒ Boolean
only makes sense if this is a diff.
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(branch:, fname:, info_url:, bline:, rule_name:, ruleset_name:) ⇒ PmdViolation
constructor
rubocop:disable Metrics/ParameterLists Disable it: how is replacing a long parameter list with a single hash helping?.
-
#line_move?(other) ⇒ Boolean
rubocop:enable Metrics/ParameterLists.
-
#removed? ⇒ Boolean
only makes sense if this is a diff.
- #sort_key ⇒ Object
- #to_liquid ⇒ Object
- #try_merge?(other) ⇒ Boolean
Constructor Details
#initialize(branch:, fname:, info_url:, bline:, rule_name:, ruleset_name:) ⇒ PmdViolation
rubocop:disable Metrics/ParameterLists Disable it: how is replacing a long parameter list with a single hash helping?
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/pmdtester/pmd_violation.rb', line 35 def initialize(branch:, fname:, info_url:, bline:, rule_name:, ruleset_name:) @branch = branch @fname = fname @message = '' @info_url = info_url @line = bline @rule_name = rule_name @ruleset_name = ruleset_name @language = determine_language_from_info_url @changed = false @old_message = nil @old_line = nil end |
Instance Attribute Details
#branch ⇒ Object (readonly)
The pmd branch type, 'base' or 'patch'
8 9 10 |
# File 'lib/pmdtester/pmd_violation.rb', line 8 def branch @branch end |
#fname ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def fname @fname end |
#info_url ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def info_url @info_url end |
#language ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def language @language end |
#line ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def line @line end |
#message ⇒ Object
Returns the value of attribute message.
31 32 33 |
# File 'lib/pmdtester/pmd_violation.rb', line 31 def @message end |
#old_line ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def old_line @old_line end |
#old_message ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def @old_message end |
#rule_name ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def rule_name @rule_name end |
#ruleset_name ⇒ Object (readonly)
The schema of 'violation' element: <xs:complexType name=“violation”>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="beginline" type="xs:integer" use="required" />
<xs:attribute name="endline" type="xs:integer" use="required" />
<xs:attribute name="begincolumn" type="xs:integer" use="required" />
<xs:attribute name="endcolumn" type="xs:integer" use="required" />
<xs:attribute name="rule" type="xs:string" use="required" />
<xs:attribute name="ruleset" type="xs:string" use="required" />
<xs:attribute name="package" type="xs:string" use="optional" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attribute name="method" type="xs:string" use="optional" />
<xs:attribute name="variable" type="xs:string" use="optional" />
<xs:attribute name="externalInfoUrl" type="xs:string" use="optional" />
<xs:attribute name="priority" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
30 31 32 |
# File 'lib/pmdtester/pmd_violation.rb', line 30 def ruleset_name @ruleset_name end |
Instance Method Details
#added? ⇒ Boolean
only makes sense if this is a diff
72 73 74 |
# File 'lib/pmdtester/pmd_violation.rb', line 72 def added? branch != BASE && !changed? end |
#changed? ⇒ Boolean
only makes sense if this is a diff
77 78 79 |
# File 'lib/pmdtester/pmd_violation.rb', line 77 def changed? @changed end |
#eql?(other) ⇒ Boolean
90 91 92 93 94 95 |
# File 'lib/pmdtester/pmd_violation.rb', line 90 def eql?(other) rule_name.eql?(other.rule_name) && line.eql?(other.line) && fname.eql?(other.fname) && .eql?(other.) end |
#hash ⇒ Object
97 98 99 |
# File 'lib/pmdtester/pmd_violation.rb', line 97 def hash [line, rule_name, ].hash end |
#line_move?(other) ⇒ Boolean
rubocop:enable Metrics/ParameterLists
54 55 56 |
# File 'lib/pmdtester/pmd_violation.rb', line 54 def line_move?(other) .eql?(other.) && (line - other.line).abs <= 5 end |
#removed? ⇒ Boolean
only makes sense if this is a diff
82 83 84 |
# File 'lib/pmdtester/pmd_violation.rb', line 82 def removed? branch == BASE end |
#sort_key ⇒ Object
86 87 88 |
# File 'lib/pmdtester/pmd_violation.rb', line 86 def sort_key line end |
#to_liquid ⇒ Object
101 102 103 104 105 106 |
# File 'lib/pmdtester/pmd_violation.rb', line 101 def to_liquid { 'branch' => branch, 'changed' => changed? } end |
#try_merge?(other) ⇒ Boolean
58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pmdtester/pmd_violation.rb', line 58 def try_merge?(other) if branch != BASE && branch != other.branch && rule_name == other.rule_name && !changed? && # not already changed (line == other.line || line_move?(other)) @changed = true @old_message = other. @old_line = other.line true else false end end |