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.
- checksums.yaml +4 -4
- data/.ci/build.sh +67 -0
- data/.ci/files/env.gpg +1 -0
- data/.ci/inc/install-openjdk.inc +26 -0
- data/.ci/manual-integration-tests.sh +20 -0
- data/.github/workflows/build.yml +39 -0
- data/.github/workflows/manual-integration-tests.yml +32 -0
- data/.gitignore +9 -0
- data/.hoerc +1 -1
- data/.rubocop.yml +13 -2
- data/.rubocop_todo.yml +7 -8
- data/.ruby-version +1 -0
- data/Gemfile +1 -12
- data/History.md +104 -0
- data/Manifest.txt +30 -6
- data/README.rdoc +110 -60
- data/Rakefile +27 -15
- data/config/all-java.xml +1 -1
- data/config/design.xml +1 -1
- data/config/projectlist_1_0_0.xsd +2 -1
- data/config/projectlist_1_1_0.xsd +31 -0
- data/lib/pmdtester.rb +12 -4
- data/lib/pmdtester/builders/liquid_renderer.rb +73 -0
- data/lib/pmdtester/builders/pmd_report_builder.rb +134 -60
- data/lib/pmdtester/builders/project_builder.rb +100 -0
- data/lib/pmdtester/builders/project_hasher.rb +126 -0
- data/lib/pmdtester/builders/rule_set_builder.rb +94 -48
- data/lib/pmdtester/builders/simple_progress_logger.rb +27 -0
- data/lib/pmdtester/builders/summary_report_builder.rb +62 -117
- data/lib/pmdtester/cmd.rb +15 -1
- data/lib/pmdtester/collection_by_file.rb +55 -0
- data/lib/pmdtester/parsers/options.rb +25 -2
- data/lib/pmdtester/parsers/pmd_report_document.rb +79 -27
- data/lib/pmdtester/parsers/projects_parser.rb +2 -4
- data/lib/pmdtester/pmd_branch_detail.rb +36 -12
- data/lib/pmdtester/pmd_configerror.rb +62 -0
- data/lib/pmdtester/pmd_error.rb +34 -34
- data/lib/pmdtester/pmd_report_detail.rb +10 -13
- data/lib/pmdtester/pmd_tester_utils.rb +57 -0
- data/lib/pmdtester/pmd_violation.rb +66 -26
- data/lib/pmdtester/project.rb +28 -23
- data/lib/pmdtester/report_diff.rb +194 -70
- data/lib/pmdtester/resource_locator.rb +4 -0
- data/lib/pmdtester/runner.rb +81 -54
- data/pmdtester.gemspec +64 -0
- data/resources/_includes/diff_pill_row.html +6 -0
- data/resources/css/bootstrap.min.css +7 -0
- data/resources/css/datatables.min.css +36 -0
- data/resources/css/pmd-tester.css +132 -0
- data/resources/js/bootstrap.min.js +7 -0
- data/resources/js/code-snippets.js +73 -0
- data/resources/js/datatables.min.js +726 -0
- data/resources/js/jquery-3.2.1.slim.min.js +4 -0
- data/resources/js/jquery.min.js +2 -0
- data/resources/js/popper.min.js +5 -0
- data/resources/js/project-report.js +136 -0
- data/resources/project_diff_report.html +205 -0
- data/resources/project_index.html +102 -0
- metadata +122 -38
- data/.travis.yml +0 -22
- data/lib/pmdtester/builders/diff_builder.rb +0 -30
- data/lib/pmdtester/builders/diff_report_builder.rb +0 -225
- data/lib/pmdtester/builders/html_report_builder.rb +0 -33
- data/resources/css/maven-base.css +0 -155
- 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.
|
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:
|
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:
|
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:
|
42
|
+
version: '4.6'
|
28
43
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
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:
|
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:
|
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.
|
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.
|
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
|
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
|
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
|
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
|
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.
|
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.
|
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
|
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
|
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.
|
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.
|
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@
|
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
|
-
- ".
|
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/
|
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
|
-
-
|
209
|
-
- resources/
|
210
|
-
|
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: '
|
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:
|
314
|
+
version: '0'
|
230
315
|
requirements: []
|
231
|
-
|
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
|