pmdtester 1.0.0.pre.beta3 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/build.sh +67 -0
  3. data/.ci/files/env.gpg +1 -0
  4. data/.ci/inc/install-openjdk.inc +26 -0
  5. data/.ci/manual-integration-tests.sh +20 -0
  6. data/.github/workflows/build.yml +39 -0
  7. data/.github/workflows/manual-integration-tests.yml +32 -0
  8. data/.gitignore +9 -0
  9. data/.hoerc +1 -1
  10. data/.rubocop.yml +13 -2
  11. data/.rubocop_todo.yml +7 -8
  12. data/.ruby-version +1 -0
  13. data/Gemfile +1 -12
  14. data/History.md +104 -0
  15. data/Manifest.txt +30 -6
  16. data/README.rdoc +110 -60
  17. data/Rakefile +27 -15
  18. data/config/all-java.xml +1 -1
  19. data/config/design.xml +1 -1
  20. data/config/projectlist_1_0_0.xsd +2 -1
  21. data/config/projectlist_1_1_0.xsd +31 -0
  22. data/lib/pmdtester.rb +12 -4
  23. data/lib/pmdtester/builders/liquid_renderer.rb +73 -0
  24. data/lib/pmdtester/builders/pmd_report_builder.rb +134 -60
  25. data/lib/pmdtester/builders/project_builder.rb +100 -0
  26. data/lib/pmdtester/builders/project_hasher.rb +126 -0
  27. data/lib/pmdtester/builders/rule_set_builder.rb +94 -48
  28. data/lib/pmdtester/builders/simple_progress_logger.rb +27 -0
  29. data/lib/pmdtester/builders/summary_report_builder.rb +62 -117
  30. data/lib/pmdtester/cmd.rb +15 -1
  31. data/lib/pmdtester/collection_by_file.rb +55 -0
  32. data/lib/pmdtester/parsers/options.rb +25 -2
  33. data/lib/pmdtester/parsers/pmd_report_document.rb +79 -27
  34. data/lib/pmdtester/parsers/projects_parser.rb +2 -4
  35. data/lib/pmdtester/pmd_branch_detail.rb +36 -12
  36. data/lib/pmdtester/pmd_configerror.rb +62 -0
  37. data/lib/pmdtester/pmd_error.rb +34 -34
  38. data/lib/pmdtester/pmd_report_detail.rb +10 -13
  39. data/lib/pmdtester/pmd_tester_utils.rb +57 -0
  40. data/lib/pmdtester/pmd_violation.rb +66 -26
  41. data/lib/pmdtester/project.rb +28 -23
  42. data/lib/pmdtester/report_diff.rb +194 -70
  43. data/lib/pmdtester/resource_locator.rb +4 -0
  44. data/lib/pmdtester/runner.rb +81 -54
  45. data/pmdtester.gemspec +64 -0
  46. data/resources/_includes/diff_pill_row.html +6 -0
  47. data/resources/css/bootstrap.min.css +7 -0
  48. data/resources/css/datatables.min.css +36 -0
  49. data/resources/css/pmd-tester.css +132 -0
  50. data/resources/js/bootstrap.min.js +7 -0
  51. data/resources/js/code-snippets.js +73 -0
  52. data/resources/js/datatables.min.js +726 -0
  53. data/resources/js/jquery-3.2.1.slim.min.js +4 -0
  54. data/resources/js/jquery.min.js +2 -0
  55. data/resources/js/popper.min.js +5 -0
  56. data/resources/js/project-report.js +136 -0
  57. data/resources/project_diff_report.html +205 -0
  58. data/resources/project_index.html +102 -0
  59. metadata +122 -38
  60. data/.travis.yml +0 -22
  61. data/lib/pmdtester/builders/diff_builder.rb +0 -30
  62. data/lib/pmdtester/builders/diff_report_builder.rb +0 -225
  63. data/lib/pmdtester/builders/html_report_builder.rb +0 -33
  64. data/resources/css/maven-base.css +0 -155
  65. data/resources/css/maven-theme.css +0 -171
metadata CHANGED
@@ -1,58 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pmdtester
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre.beta3
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Dangel
8
8
  - Binguo Bao
9
+ - Clément Fournier
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2018-08-01 00:00:00.000000000 Z
13
+ date: 2021-04-20 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: nokogiri
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 1.11.0.rc4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: 1.11.0.rc4
29
+ - !ruby/object:Gem::Dependency
30
+ name: slop
16
31
  requirement: !ruby/object:Gem::Requirement
17
32
  requirements:
18
33
  - - "~>"
19
34
  - !ruby/object:Gem::Version
20
- version: 1.8.2
35
+ version: '4.6'
21
36
  type: :runtime
22
37
  prerelease: false
23
38
  version_requirements: !ruby/object:Gem::Requirement
24
39
  requirements:
25
40
  - - "~>"
26
41
  - !ruby/object:Gem::Version
27
- version: 1.8.2
42
+ version: '4.6'
28
43
  - !ruby/object:Gem::Dependency
29
- name: slop
44
+ name: differ
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '0.1'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '0.1'
57
+ - !ruby/object:Gem::Dependency
58
+ name: rufus-scheduler
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '3.5'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '3.5'
71
+ - !ruby/object:Gem::Dependency
72
+ name: logger-colors
30
73
  requirement: !ruby/object:Gem::Requirement
31
74
  requirements:
32
75
  - - "~>"
33
76
  - !ruby/object:Gem::Version
34
- version: 4.6.2
77
+ version: '1.0'
35
78
  type: :runtime
36
79
  prerelease: false
37
80
  version_requirements: !ruby/object:Gem::Requirement
38
81
  requirements:
39
82
  - - "~>"
40
83
  - !ruby/object:Gem::Version
41
- version: 4.6.2
84
+ version: '1.0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: liquid
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '4.0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '4.0'
42
99
  - !ruby/object:Gem::Dependency
43
100
  name: hoe-bundler
44
101
  requirement: !ruby/object:Gem::Requirement
45
102
  requirements:
46
103
  - - "~>"
47
104
  - !ruby/object:Gem::Version
48
- version: '1.2'
105
+ version: '1.5'
49
106
  type: :development
50
107
  prerelease: false
51
108
  version_requirements: !ruby/object:Gem::Requirement
52
109
  requirements:
53
110
  - - "~>"
54
111
  - !ruby/object:Gem::Version
55
- version: '1.2'
112
+ version: '1.5'
56
113
  - !ruby/object:Gem::Dependency
57
114
  name: hoe-git
58
115
  requirement: !ruby/object:Gem::Requirement
@@ -73,96 +130,97 @@ dependencies:
73
130
  requirements:
74
131
  - - "~>"
75
132
  - !ruby/object:Gem::Version
76
- version: 5.10.1
133
+ version: '5.10'
77
134
  type: :development
78
135
  prerelease: false
79
136
  version_requirements: !ruby/object:Gem::Requirement
80
137
  requirements:
81
138
  - - "~>"
82
139
  - !ruby/object:Gem::Version
83
- version: 5.10.1
140
+ version: '5.10'
84
141
  - !ruby/object:Gem::Dependency
85
142
  name: mocha
86
143
  requirement: !ruby/object:Gem::Requirement
87
144
  requirements:
88
145
  - - "~>"
89
146
  - !ruby/object:Gem::Version
90
- version: 1.5.0
147
+ version: '1.5'
91
148
  type: :development
92
149
  prerelease: false
93
150
  version_requirements: !ruby/object:Gem::Requirement
94
151
  requirements:
95
152
  - - "~>"
96
153
  - !ruby/object:Gem::Version
97
- version: 1.5.0
154
+ version: '1.5'
98
155
  - !ruby/object:Gem::Dependency
99
156
  name: rubocop
100
157
  requirement: !ruby/object:Gem::Requirement
101
158
  requirements:
102
159
  - - "~>"
103
160
  - !ruby/object:Gem::Version
104
- version: 0.56.0
161
+ version: '0.81'
105
162
  type: :development
106
163
  prerelease: false
107
164
  version_requirements: !ruby/object:Gem::Requirement
108
165
  requirements:
109
166
  - - "~>"
110
167
  - !ruby/object:Gem::Version
111
- version: 0.56.0
168
+ version: '0.81'
112
169
  - !ruby/object:Gem::Dependency
113
170
  name: test-unit
114
171
  requirement: !ruby/object:Gem::Requirement
115
172
  requirements:
116
173
  - - "~>"
117
174
  - !ruby/object:Gem::Version
118
- version: 3.2.3
175
+ version: '3.2'
119
176
  type: :development
120
177
  prerelease: false
121
178
  version_requirements: !ruby/object:Gem::Requirement
122
179
  requirements:
123
180
  - - "~>"
124
181
  - !ruby/object:Gem::Version
125
- version: 3.2.3
182
+ version: '3.2'
126
183
  - !ruby/object:Gem::Dependency
127
184
  name: rdoc
128
185
  requirement: !ruby/object:Gem::Requirement
129
186
  requirements:
130
- - - "<"
131
- - !ruby/object:Gem::Version
132
- version: '6'
133
187
  - - ">="
134
188
  - !ruby/object:Gem::Version
135
189
  version: '4.0'
190
+ - - "<"
191
+ - !ruby/object:Gem::Version
192
+ version: '7'
136
193
  type: :development
137
194
  prerelease: false
138
195
  version_requirements: !ruby/object:Gem::Requirement
139
196
  requirements:
140
- - - "<"
141
- - !ruby/object:Gem::Version
142
- version: '6'
143
197
  - - ">="
144
198
  - !ruby/object:Gem::Version
145
199
  version: '4.0'
200
+ - - "<"
201
+ - !ruby/object:Gem::Version
202
+ version: '7'
146
203
  - !ruby/object:Gem::Dependency
147
204
  name: hoe
148
205
  requirement: !ruby/object:Gem::Requirement
149
206
  requirements:
150
207
  - - "~>"
151
208
  - !ruby/object:Gem::Version
152
- version: '3.17'
209
+ version: '3.22'
153
210
  type: :development
154
211
  prerelease: false
155
212
  version_requirements: !ruby/object:Gem::Requirement
156
213
  requirements:
157
214
  - - "~>"
158
215
  - !ruby/object:Gem::Version
159
- version: '3.17'
216
+ version: '3.22'
160
217
  description: A regression testing tool ensure that new problems and unexpected behaviors
161
218
  will not be introduced to PMD project after fixing an issue , and new rules can
162
219
  work as expected.
163
220
  email:
164
- - andreas.dangel@adangel.org
221
+ - andreas.dangel@pmd-code.org
165
222
  - djydewang@gmail.com
223
+ - clement.fournier76@gmail.com
166
224
  executables:
167
225
  - pmdtester
168
226
  extensions: []
@@ -171,10 +229,17 @@ extra_rdoc_files:
171
229
  - Manifest.txt
172
230
  - README.rdoc
173
231
  files:
232
+ - ".ci/build.sh"
233
+ - ".ci/files/env.gpg"
234
+ - ".ci/inc/install-openjdk.inc"
235
+ - ".ci/manual-integration-tests.sh"
236
+ - ".github/workflows/build.yml"
237
+ - ".github/workflows/manual-integration-tests.yml"
238
+ - ".gitignore"
174
239
  - ".hoerc"
175
240
  - ".rubocop.yml"
176
241
  - ".rubocop_todo.yml"
177
- - ".travis.yml"
242
+ - ".ruby-version"
178
243
  - Gemfile
179
244
  - History.md
180
245
  - LICENSE
@@ -186,31 +251,51 @@ files:
186
251
  - config/design.xml
187
252
  - config/project-list.xml
188
253
  - config/projectlist_1_0_0.xsd
254
+ - config/projectlist_1_1_0.xsd
189
255
  - lib/pmdtester.rb
190
- - lib/pmdtester/builders/diff_builder.rb
191
- - lib/pmdtester/builders/diff_report_builder.rb
192
- - lib/pmdtester/builders/html_report_builder.rb
256
+ - lib/pmdtester/builders/liquid_renderer.rb
193
257
  - lib/pmdtester/builders/pmd_report_builder.rb
258
+ - lib/pmdtester/builders/project_builder.rb
259
+ - lib/pmdtester/builders/project_hasher.rb
194
260
  - lib/pmdtester/builders/rule_set_builder.rb
261
+ - lib/pmdtester/builders/simple_progress_logger.rb
195
262
  - lib/pmdtester/builders/summary_report_builder.rb
196
263
  - lib/pmdtester/cmd.rb
264
+ - lib/pmdtester/collection_by_file.rb
197
265
  - lib/pmdtester/parsers/options.rb
198
266
  - lib/pmdtester/parsers/pmd_report_document.rb
199
267
  - lib/pmdtester/parsers/projects_parser.rb
200
268
  - lib/pmdtester/pmd_branch_detail.rb
269
+ - lib/pmdtester/pmd_configerror.rb
201
270
  - lib/pmdtester/pmd_error.rb
202
271
  - lib/pmdtester/pmd_report_detail.rb
272
+ - lib/pmdtester/pmd_tester_utils.rb
203
273
  - lib/pmdtester/pmd_violation.rb
204
274
  - lib/pmdtester/project.rb
205
275
  - lib/pmdtester/report_diff.rb
206
276
  - lib/pmdtester/resource_locator.rb
207
277
  - lib/pmdtester/runner.rb
208
- - resources/css/maven-base.css
209
- - resources/css/maven-theme.css
210
- homepage: https://github.com/pmd/pmd-regression-tester
278
+ - pmdtester.gemspec
279
+ - resources/_includes/diff_pill_row.html
280
+ - resources/css/bootstrap.min.css
281
+ - resources/css/datatables.min.css
282
+ - resources/css/pmd-tester.css
283
+ - resources/js/bootstrap.min.js
284
+ - resources/js/code-snippets.js
285
+ - resources/js/datatables.min.js
286
+ - resources/js/jquery-3.2.1.slim.min.js
287
+ - resources/js/jquery.min.js
288
+ - resources/js/popper.min.js
289
+ - resources/js/project-report.js
290
+ - resources/project_diff_report.html
291
+ - resources/project_index.html
292
+ homepage: https://pmd.github.io
211
293
  licenses:
212
294
  - BSD-2-Clause
213
- metadata: {}
295
+ metadata:
296
+ bug_tracker_uri: https://github.com/pmd/pmd-regression-tester/issues
297
+ homepage_uri: https://pmd.github.io
298
+ source_code_uri: https://github.com/pmd/pmd-regression-tester
214
299
  post_install_message:
215
300
  rdoc_options:
216
301
  - "--main"
@@ -221,15 +306,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
306
  requirements:
222
307
  - - ">="
223
308
  - !ruby/object:Gem::Version
224
- version: '0'
309
+ version: '2.7'
225
310
  required_rubygems_version: !ruby/object:Gem::Requirement
226
311
  requirements:
227
312
  - - ">="
228
313
  - !ruby/object:Gem::Version
229
- version: 2.4.1
314
+ version: '0'
230
315
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.7.6
316
+ rubygems_version: 3.1.6
233
317
  signing_key:
234
318
  specification_version: 4
235
319
  summary: A regression testing tool ensure that new problems and unexpected behaviors
data/.travis.yml DELETED
@@ -1,22 +0,0 @@
1
- language: ruby
2
- jdk: oraclejdk9
3
- script:
4
- - rake rubocop
5
- - rake clean test
6
- - rake clean integration-test
7
- - rake install_gem
8
- - pmdtester -h
9
-
10
- before_deploy:
11
- - git stash --all
12
- - rake hoe:spec
13
-
14
- deploy:
15
- provider: rubygems
16
- api_key:
17
- secure: wXntKsCZseVjujUBnEJd0yYYARrBbIcAGACkfvNiUzGhuSN8Vil5ub6TMKu25vIOa+J122atCVMkAGm0g/3vB+h/5RAnMLxGDIWO9FWT2eGX4xtPkA/PbH6ejdJ5UVqUbUu9CTAehAvr6mYCzyBnmkzoyjD2CGaojy7RsvU+5+qeXAxkOhaY0UWgxUWbWwpwRuSt3BmHT+9ri8eEliXCL78yMRNzDLo5DxS6vC/RgrfrQ38mvoHjnniSN85GR2crYqdv40oTng6YZGuRR8FDxIQbu0VRmL/OsHCA1Ltt2m9FOk04EdP30mUsRawyJAB/5RfgVr7thMNd7PdQ9izsMleeg6lPsIW7NWWKoq0ZpImhsXOvWpQQqU4+vcew+QiFL9xthXsvKVs1wulb9y34dwLS7Wj5RInPdSSFtHihissSgBPQlifdK4IKBRw56LZ9OyBSQ7nid5tyvEfRzAWQCl5jrPnILInz2SB0zFtbMvn+699vsWYyn25w/0pGvWS1qhHLakQVLfRM7X8Yz3C5p4mjSwfBoICnN1kwXnezbdHDwbhXACqqN+UWKc1gWuMYQ22vHccUmOuJof4ooFkiZAY+ccwxfmd5TdAX60fkGSgNSn9+hyCarqGG/rU85b+EXpU/Qc7a08cuiIM0X2CVOKFM7E75KDjoi74nS/k0s2E=
18
- on:
19
- tags: true
20
- skip_cleanup: true
21
- gem: pmdtester
22
- gemspec: pmdtester.gemspec
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nokogiri'
4
-
5
- module PmdTester
6
- # Building difference between two pmd xml files
7
- class DiffBuilder
8
- # The schema of pmd xml report refers to
9
- # http://pmd.sourceforge.net/report_2_0_0.xsd
10
- def build(base_report_filename, patch_report_filename, base_info, patch_info, filter_set = nil)
11
- report_diffs = ReportDiff.new
12
- base_details, patch_details = report_diffs.calculate_details(base_info, patch_info)
13
- base_violations, base_errors = parse_pmd_report(base_report_filename, 'base',
14
- base_details.working_dir, filter_set)
15
- patch_violations, patch_errors = parse_pmd_report(patch_report_filename, 'patch',
16
- patch_details.working_dir)
17
- report_diffs.calculate_violations(base_violations, patch_violations)
18
- report_diffs.calculate_errors(base_errors, patch_errors)
19
-
20
- report_diffs
21
- end
22
-
23
- def parse_pmd_report(report_filename, branch, working_dir, filter_set = nil)
24
- doc = PmdReportDocument.new(branch, working_dir, filter_set)
25
- parser = Nokogiri::XML::SAX::Parser.new(doc)
26
- parser.parse_file(report_filename) unless report_filename.nil?
27
- [doc.violations, doc.errors]
28
- end
29
- end
30
- end
@@ -1,225 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'nokogiri'
4
-
5
- module PmdTester
6
- # Building diff report for a single project
7
- class DiffReportBuilder < HtmlReportBuilder
8
- include PmdTester
9
- NO_DIFFERENCES_MESSAGE = 'No differences found!'
10
-
11
- def build(project)
12
- @project = project
13
- @report_diff = project.report_diff
14
-
15
- index = File.new(project.diff_report_index_path, 'w')
16
-
17
- html_report = build_html_report('pmd xml difference report')
18
- copy_css(project.target_diff_report_path)
19
-
20
- index.puts html_report
21
- index.close
22
-
23
- logger.info "Built difference report of #{project.name} successfully!"
24
- end
25
-
26
- def build_body(doc)
27
- violation_diffs = @report_diff.violation_diffs
28
- error_diffs = @report_diff.error_diffs
29
- doc.body(class: 'composite') do
30
- doc.div(id: 'contentBox') do
31
- build_summary_section(doc)
32
- build_violations_section(doc, violation_diffs)
33
- build_errors_section(doc, error_diffs)
34
- end
35
- end
36
- end
37
-
38
- def build_summary_section(doc)
39
- doc.div(class: 'section', id: 'Summary') do
40
- doc.h2 'Summary:'
41
- build_summary_table(doc)
42
- end
43
- end
44
-
45
- def build_summary_table(doc)
46
- doc.table(class: 'bodyTable', border: '0') do
47
- doc.thead do
48
- doc.tr do
49
- doc.th 'Item'
50
- doc.th 'Base'
51
- doc.th 'Patch'
52
- doc.th 'Difference'
53
- end
54
- end
55
-
56
- build_summary_table_body(doc)
57
- end
58
- end
59
-
60
- def build_summary_table_body(doc)
61
- doc.tbody do
62
- build_summary_row(doc, 'number of errors', @report_diff.base_errors_size,
63
- @report_diff.patch_errors_size, @report_diff.error_diffs_size)
64
- build_summary_row(doc, 'number of violations', @report_diff.base_violations_size,
65
- @report_diff.patch_violations_size, @report_diff.violation_diffs_size)
66
- build_summary_row(doc, 'execution time', @report_diff.base_execution_time,
67
- @report_diff.patch_execution_time, @report_diff.diff_execution_time)
68
- build_summary_row(doc, 'timestamp', @report_diff.base_timestamp,
69
- @report_diff.patch_timestamp, '')
70
- end
71
- end
72
-
73
- def build_summary_row(doc, item, base, patch, diff)
74
- doc.tr do
75
- doc.td(class: 'c') { doc.text item }
76
- doc.td(class: 'b') { doc.text base }
77
- doc.td(class: 'a') { doc.text patch }
78
- doc.td(class: 'c') { doc.text diff }
79
- end
80
- end
81
-
82
- def build_filename_h3(doc, filename)
83
- doc.h3 do
84
- doc.a(href: @project.get_webview_url(filename)) do
85
- doc.text @project.get_path_inside_project(filename)
86
- end
87
- end
88
- end
89
-
90
- def build_violations_section(doc, violation_diffs)
91
- doc.div(class: 'section', id: 'Violations') do
92
- doc.h2 'Violations:'
93
-
94
- doc.h3 NO_DIFFERENCES_MESSAGE if violation_diffs.empty?
95
- violation_diffs.each do |key, value|
96
- doc.div(class: 'section') do
97
- build_filename_h3(doc, key)
98
- build_violation_table(doc, key, value)
99
- end
100
- end
101
- end
102
- end
103
-
104
- def build_violation_table(doc, key, value)
105
- doc.table(class: 'bodyTable', border: '0') do
106
- build_violation_table_head(doc)
107
- build_violation_table_body(doc, key, value)
108
- end
109
- end
110
-
111
- def build_violation_table_head(doc)
112
- doc.thead do
113
- doc.tr do
114
- doc.th
115
- doc.th 'priority'
116
- doc.th 'Rule'
117
- doc.th 'Message'
118
- doc.th 'Line'
119
- end
120
- end
121
- end
122
-
123
- def build_violation_table_body(doc, key, value)
124
- doc.tbody do
125
- a_index = 1
126
- value.each do |pmd_violation|
127
- build_violation_table_row(doc, key, pmd_violation, a_index)
128
- a_index += 1
129
- end
130
- end
131
- end
132
-
133
- def build_violation_table_row(doc, key, pmd_violation, a_index)
134
- doc.tr(class: pmd_violation.branch == 'base' ? 'b' : 'a') do
135
- # The anchor
136
- doc.td do
137
- doc.a(id: "A#{a_index}", href: "#A#{a_index}") { doc.text '#' }
138
- end
139
-
140
- violation = pmd_violation.attrs
141
-
142
- # The priority of the rule
143
- doc.td violation['priority']
144
-
145
- # The rule that trigger the violation
146
- doc.td do
147
- doc.a(href: (violation['externalInfoUrl']).to_s) { doc.text violation['rule'] }
148
- end
149
-
150
- # The violation message
151
- doc.td pmd_violation.text
152
-
153
- # The begin line of the violation
154
- line = violation['beginline']
155
-
156
- # The link to the source file
157
- doc.td do
158
- link = get_link_to_source(violation, key)
159
- doc.a(href: link.to_s) { doc.text line }
160
- end
161
- end
162
- end
163
-
164
- def get_link_to_source(violation, key)
165
- l_str = @project.type == 'git' ? 'L' : 'l'
166
- line_str = "##{l_str}#{violation['beginline']}"
167
- @project.get_webview_url(key) + line_str
168
- end
169
-
170
- def build_errors_section(doc, error_diffs)
171
- doc.div(class: 'section', id: 'Errors') do
172
- doc.h2 do
173
- doc.text 'Errors:'
174
- end
175
-
176
- doc.h3 NO_DIFFERENCES_MESSAGE if error_diffs.empty?
177
- error_diffs.each do |key, value|
178
- doc.div(class: 'section') do
179
- build_filename_h3(doc, key)
180
- build_errors_table(doc, value)
181
- end
182
- end
183
- end
184
- end
185
-
186
- def build_errors_table(doc, errors)
187
- doc.table(class: 'bodyTable', border: '0') do
188
- build_errors_table_head(doc)
189
- build_errors_table_body(doc, errors)
190
- end
191
- end
192
-
193
- def build_errors_table_head(doc)
194
- doc.thead do
195
- doc.tr do
196
- doc.th
197
- doc.th 'Message'
198
- doc.th 'Details'
199
- end
200
- end
201
- end
202
-
203
- def build_errors_table_body(doc, errors)
204
- doc.tbody do
205
- b_index = 1
206
- errors.each do |pmd_error|
207
- doc.tr(class: pmd_error.branch == 'base' ? 'b' : 'a') do
208
- # The anchor
209
- doc.td do
210
- doc.a(id: "B#{b_index}", href: "#B#{b_index}") { doc.text '#' }
211
- end
212
-
213
- # The error message
214
- doc.td pmd_error.msg
215
-
216
- # Details of error
217
- doc.td pmd_error.text
218
-
219
- b_index += 1
220
- end
221
- end
222
- end
223
- end
224
- end
225
- end