pmdtester 1.0.1 → 1.1.0
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 +91 -0
- data/.ci/files/env.gpg +1 -0
- data/.github/workflows/build.yml +39 -0
- data/.gitignore +9 -0
- data/.hoerc +1 -1
- data/.rubocop.yml +6 -2
- data/.ruby-version +1 -0
- data/History.md +40 -0
- data/Manifest.txt +24 -9
- data/README.rdoc +45 -30
- data/Rakefile +5 -3
- 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 +8 -7
- data/lib/pmdtester/builders/liquid_renderer.rb +73 -0
- data/lib/pmdtester/builders/pmd_report_builder.rb +102 -78
- 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 +92 -47
- data/lib/pmdtester/builders/simple_progress_logger.rb +4 -4
- data/lib/pmdtester/builders/summary_report_builder.rb +62 -131
- data/lib/pmdtester/collection_by_file.rb +55 -0
- data/lib/pmdtester/parsers/options.rb +19 -0
- data/lib/pmdtester/parsers/pmd_report_document.rb +74 -29
- data/lib/pmdtester/parsers/projects_parser.rb +2 -4
- data/lib/pmdtester/pmd_branch_detail.rb +29 -19
- data/lib/pmdtester/pmd_configerror.rb +23 -24
- data/lib/pmdtester/pmd_error.rb +34 -34
- data/lib/pmdtester/pmd_report_detail.rb +9 -12
- data/lib/pmdtester/pmd_tester_utils.rb +55 -0
- data/lib/pmdtester/pmd_violation.rb +66 -28
- data/lib/pmdtester/project.rb +21 -48
- data/lib/pmdtester/report_diff.rb +179 -111
- data/lib/pmdtester/resource_locator.rb +4 -0
- data/lib/pmdtester/runner.rb +66 -64
- data/pmdtester.gemspec +27 -36
- 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 +131 -0
- data/resources/js/bootstrap.min.js +7 -0
- data/resources/js/code-snippets.js +66 -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 +64 -20
- data/.travis.yml +0 -40
- data/lib/pmdtester/builders/diff_builder.rb +0 -31
- data/lib/pmdtester/builders/diff_report/configerrors.rb +0 -50
- data/lib/pmdtester/builders/diff_report/errors.rb +0 -71
- data/lib/pmdtester/builders/diff_report/violations.rb +0 -77
- data/lib/pmdtester/builders/diff_report_builder.rb +0 -99
- data/lib/pmdtester/builders/html_report_builder.rb +0 -56
- data/resources/css/maven-base.css +0 -155
- data/resources/css/maven-theme.css +0 -171
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pmdtester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
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: 2020-
|
13
|
+
date: 2020-12-05 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: nokogiri
|
@@ -67,6 +68,34 @@ dependencies:
|
|
67
68
|
- - "~>"
|
68
69
|
- !ruby/object:Gem::Version
|
69
70
|
version: '3.5'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: logger-colors
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::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'
|
70
99
|
- !ruby/object:Gem::Dependency
|
71
100
|
name: hoe-bundler
|
72
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,22 +184,22 @@ dependencies:
|
|
155
184
|
name: rdoc
|
156
185
|
requirement: !ruby/object:Gem::Requirement
|
157
186
|
requirements:
|
158
|
-
- - "<"
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '7'
|
161
187
|
- - ">="
|
162
188
|
- !ruby/object:Gem::Version
|
163
189
|
version: '4.0'
|
190
|
+
- - "<"
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: '7'
|
164
193
|
type: :development
|
165
194
|
prerelease: false
|
166
195
|
version_requirements: !ruby/object:Gem::Requirement
|
167
196
|
requirements:
|
168
|
-
- - "<"
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
version: '7'
|
171
197
|
- - ">="
|
172
198
|
- !ruby/object:Gem::Version
|
173
199
|
version: '4.0'
|
200
|
+
- - "<"
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '7'
|
174
203
|
- !ruby/object:Gem::Dependency
|
175
204
|
name: hoe
|
176
205
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,6 +220,7 @@ description: A regression testing tool ensure that new problems and unexpected b
|
|
191
220
|
email:
|
192
221
|
- andreas.dangel@pmd-code.org
|
193
222
|
- djydewang@gmail.com
|
223
|
+
- clement.fournier76@gmail.com
|
194
224
|
executables:
|
195
225
|
- pmdtester
|
196
226
|
extensions: []
|
@@ -199,10 +229,14 @@ extra_rdoc_files:
|
|
199
229
|
- Manifest.txt
|
200
230
|
- README.rdoc
|
201
231
|
files:
|
232
|
+
- ".ci/build.sh"
|
233
|
+
- ".ci/files/env.gpg"
|
234
|
+
- ".github/workflows/build.yml"
|
235
|
+
- ".gitignore"
|
202
236
|
- ".hoerc"
|
203
237
|
- ".rubocop.yml"
|
204
238
|
- ".rubocop_todo.yml"
|
205
|
-
- ".
|
239
|
+
- ".ruby-version"
|
206
240
|
- Gemfile
|
207
241
|
- History.md
|
208
242
|
- LICENSE
|
@@ -214,18 +248,17 @@ files:
|
|
214
248
|
- config/design.xml
|
215
249
|
- config/project-list.xml
|
216
250
|
- config/projectlist_1_0_0.xsd
|
251
|
+
- config/projectlist_1_1_0.xsd
|
217
252
|
- lib/pmdtester.rb
|
218
|
-
- lib/pmdtester/builders/
|
219
|
-
- lib/pmdtester/builders/diff_report/configerrors.rb
|
220
|
-
- lib/pmdtester/builders/diff_report/errors.rb
|
221
|
-
- lib/pmdtester/builders/diff_report/violations.rb
|
222
|
-
- lib/pmdtester/builders/diff_report_builder.rb
|
223
|
-
- lib/pmdtester/builders/html_report_builder.rb
|
253
|
+
- lib/pmdtester/builders/liquid_renderer.rb
|
224
254
|
- lib/pmdtester/builders/pmd_report_builder.rb
|
255
|
+
- lib/pmdtester/builders/project_builder.rb
|
256
|
+
- lib/pmdtester/builders/project_hasher.rb
|
225
257
|
- lib/pmdtester/builders/rule_set_builder.rb
|
226
258
|
- lib/pmdtester/builders/simple_progress_logger.rb
|
227
259
|
- lib/pmdtester/builders/summary_report_builder.rb
|
228
260
|
- lib/pmdtester/cmd.rb
|
261
|
+
- lib/pmdtester/collection_by_file.rb
|
229
262
|
- lib/pmdtester/parsers/options.rb
|
230
263
|
- lib/pmdtester/parsers/pmd_report_document.rb
|
231
264
|
- lib/pmdtester/parsers/projects_parser.rb
|
@@ -233,14 +266,26 @@ files:
|
|
233
266
|
- lib/pmdtester/pmd_configerror.rb
|
234
267
|
- lib/pmdtester/pmd_error.rb
|
235
268
|
- lib/pmdtester/pmd_report_detail.rb
|
269
|
+
- lib/pmdtester/pmd_tester_utils.rb
|
236
270
|
- lib/pmdtester/pmd_violation.rb
|
237
271
|
- lib/pmdtester/project.rb
|
238
272
|
- lib/pmdtester/report_diff.rb
|
239
273
|
- lib/pmdtester/resource_locator.rb
|
240
274
|
- lib/pmdtester/runner.rb
|
241
275
|
- pmdtester.gemspec
|
242
|
-
- resources/
|
243
|
-
- resources/css/
|
276
|
+
- resources/_includes/diff_pill_row.html
|
277
|
+
- resources/css/bootstrap.min.css
|
278
|
+
- resources/css/datatables.min.css
|
279
|
+
- resources/css/pmd-tester.css
|
280
|
+
- resources/js/bootstrap.min.js
|
281
|
+
- resources/js/code-snippets.js
|
282
|
+
- resources/js/datatables.min.js
|
283
|
+
- resources/js/jquery-3.2.1.slim.min.js
|
284
|
+
- resources/js/jquery.min.js
|
285
|
+
- resources/js/popper.min.js
|
286
|
+
- resources/js/project-report.js
|
287
|
+
- resources/project_diff_report.html
|
288
|
+
- resources/project_index.html
|
244
289
|
homepage: https://pmd.github.io
|
245
290
|
licenses:
|
246
291
|
- BSD-2-Clause
|
@@ -258,15 +303,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
258
303
|
requirements:
|
259
304
|
- - ">="
|
260
305
|
- !ruby/object:Gem::Version
|
261
|
-
version: '2.
|
306
|
+
version: '2.7'
|
262
307
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
263
308
|
requirements:
|
264
309
|
- - ">="
|
265
310
|
- !ruby/object:Gem::Version
|
266
311
|
version: '0'
|
267
312
|
requirements: []
|
268
|
-
|
269
|
-
rubygems_version: 2.7.7
|
313
|
+
rubygems_version: 3.1.4
|
270
314
|
signing_key:
|
271
315
|
specification_version: 4
|
272
316
|
summary: A regression testing tool ensure that new problems and unexpected behaviors
|
data/.travis.yml
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
before_install:
|
3
|
-
- LOCAL_DIR=${HOME}/.cache/openjdk
|
4
|
-
- TARGET_DIR=${HOME}/openjdk11
|
5
|
-
- mkdir -p ${LOCAL_DIR}
|
6
|
-
- mkdir -p ${TARGET_DIR}
|
7
|
-
- DOWNLOAD_URL="https://pmd-code.org/openjdk/jdk-11.0.7%2B10/OpenJDK11U-jdk_x64_linux_hotspot_11.0.7_10.tar.gz"
|
8
|
-
- OPENJDK_ARCHIVE=$(basename $DOWNLOAD_URL)
|
9
|
-
- if [ ! -e ${LOCAL_DIR}/${OPENJDK_ARCHIVE} ]; then wget --directory-prefix ${LOCAL_DIR} --timestamping --continue ${DOWNLOAD_URL}; fi
|
10
|
-
- tar --extract --file ${LOCAL_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=1
|
11
|
-
- export JAVA_HOME="${TARGET_DIR}"
|
12
|
-
- export PATH="${TARGET_DIR}/bin:${PATH}"
|
13
|
-
- java -version
|
14
|
-
script:
|
15
|
-
- rake check_manifest
|
16
|
-
- rake rubocop
|
17
|
-
- rake clean test
|
18
|
-
- rake clean integration-test
|
19
|
-
- rake install_gem
|
20
|
-
- pmdtester -h
|
21
|
-
|
22
|
-
before_deploy:
|
23
|
-
- git stash --all
|
24
|
-
- rake hoe:spec
|
25
|
-
|
26
|
-
deploy:
|
27
|
-
provider: rubygems
|
28
|
-
api_key:
|
29
|
-
secure: "PMohVxVpupi3qKmSWjny6ASPKiWpyZxMTluARs15tiRR4Pco3Ko+Z+Nk2F6XNZkY4q4zudS91JGtYeGzuBknI/tFB9S1LjR5RDe9cUbETlhpazBCaRvVFt0K8okb9JAWfVi+mnCG5saBn0Osxv/PKS2sVr/3dK9JFVncaYfRhIZfhB/LcdHMLpnlv94sr60SGPA8ITz3pj1dKe6E2wfqQjgD8RNOOLxtcTFeEZVHDuJn0gsKz+ou2Dyzth+2SksKKboosodWXNbAIx5xg+iVLZgGFluQknZ130G0PA6vJzMLWgLEjUtFDV1QtE80jP7LhuMOKXaXHa6NghHL7h3TiBO9/2SEdHSdIq5NeMm2f8qttLNqI15cgGolyUGd+K43tAdvNuJws+wbQsj53htGFLvSKPfwTxipn1Ppa1s6/bSeUQvtj/kXO6MnVdwTBNjlm791DaG8sC4WbvppLvrKPfpvqGoOfWj9h5PlB8SsaHyDtOB6oCYE354RxLJxaI6b4hcxleyz7mPmoPcKQjcPSM8i004lCCNAmPm0VMW/yTi1Z1iBq6+1OiW7fe6txJi9zCPhMzziz1EA0oQYBgu99Uy9wjHh8CkWXtZDx+WSYRxCZOJ6kFN72dgYQbIsn4kxzrjwCp+NN0woDPR0FXcuePNgAz2hBtAvbKdOC2OCQVw="
|
30
|
-
on:
|
31
|
-
tags: true
|
32
|
-
skip_cleanup: true
|
33
|
-
gem: pmdtester
|
34
|
-
gemspec: pmdtester.gemspec
|
35
|
-
|
36
|
-
cache:
|
37
|
-
directories:
|
38
|
-
- vendor/bundle
|
39
|
-
- "$HOME/.rvm/"
|
40
|
-
- "$HOME/.cache/openjdk"
|
@@ -1,31 +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
|
-
include PmdTester
|
9
|
-
# The schema of pmd xml report refers to
|
10
|
-
# http://pmd.sourceforge.net/report_2_0_0.xsd
|
11
|
-
def build(base_report_filename, patch_report_filename, base_info, patch_info, filter_set = nil)
|
12
|
-
report_diffs = ReportDiff.new
|
13
|
-
base_details, patch_details = report_diffs.calculate_details(base_info, patch_info)
|
14
|
-
base_report = parse_pmd_report(base_report_filename, BASE, base_details.working_dir,
|
15
|
-
filter_set)
|
16
|
-
patch_report = parse_pmd_report(patch_report_filename, PATCH, patch_details.working_dir)
|
17
|
-
report_diffs.calculate_violations(base_report.violations, patch_report.violations)
|
18
|
-
report_diffs.calculate_errors(base_report.errors, patch_report.errors)
|
19
|
-
report_diffs.calculate_configerrors(base_report.configerrors, patch_report.configerrors)
|
20
|
-
|
21
|
-
report_diffs
|
22
|
-
end
|
23
|
-
|
24
|
-
def parse_pmd_report(report_filename, branch, working_dir, filter_set = nil)
|
25
|
-
doc = PmdReportDocument.new(branch, working_dir, filter_set)
|
26
|
-
parser = Nokogiri::XML::SAX::Parser.new(doc)
|
27
|
-
parser.parse_file(report_filename) unless report_filename.nil?
|
28
|
-
doc
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Contains methods to write out html for the configuration errors.
|
4
|
-
# This mixin is used by DiffReportBuilder.
|
5
|
-
module DiffReportBuilderConfigErrors
|
6
|
-
def build_configerrors_section(doc, configerrors_diffs)
|
7
|
-
doc.div(class: 'section', id: 'configerrors') do
|
8
|
-
doc.h2 'Configuration Errors:'
|
9
|
-
|
10
|
-
doc.h3 PmdTester::HtmlReportBuilder::NO_DIFFERENCES_MESSAGE if configerrors_diffs.empty?
|
11
|
-
configerrors_diffs.each do |key, value|
|
12
|
-
doc.div(class: 'section') do
|
13
|
-
doc.h3 key
|
14
|
-
build_configerrors_table(doc, value)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def build_configerrors_table(doc, errors)
|
21
|
-
doc.table(class: 'bodyTable', border: '0') do
|
22
|
-
build_configerrors_table_head(doc)
|
23
|
-
build_configerrors_table_body(doc, errors)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_configerrors_table_head(doc)
|
28
|
-
build_table_head(doc, '', 'Rule', 'Message')
|
29
|
-
end
|
30
|
-
|
31
|
-
def build_configerrors_table_body(doc, errors)
|
32
|
-
doc.tbody do
|
33
|
-
errors.each { |pmd_configerror| build_configerrors_table_row(doc, pmd_configerror) }
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def build_configerrors_table_row(doc, pmd_configerror)
|
38
|
-
doc.tr(class: pmd_configerror.branch == PmdTester::BASE ? 'b' : 'a') do
|
39
|
-
build_table_anchor_column(doc, 'C', increment_configerror_index)
|
40
|
-
|
41
|
-
doc.td pmd_configerror.rulename
|
42
|
-
doc.td pmd_configerror.msg
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def increment_configerror_index
|
47
|
-
@configerror_index ||= 0 # init with 0
|
48
|
-
@configerror_index += 1
|
49
|
-
end
|
50
|
-
end
|
@@ -1,71 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Contains methods to write out html for the errors.
|
4
|
-
# This mixin is used by DiffReportBuilder.
|
5
|
-
module DiffReportBuilderErrors
|
6
|
-
def build_errors_section(doc, error_diffs)
|
7
|
-
doc.div(class: 'section', id: 'Errors') do
|
8
|
-
doc.h2 'Errors:'
|
9
|
-
|
10
|
-
doc.h3 PmdTester::HtmlReportBuilder::NO_DIFFERENCES_MESSAGE if error_diffs.empty?
|
11
|
-
error_diffs.each do |key, value|
|
12
|
-
doc.div(class: 'section') do
|
13
|
-
build_filename_h3(doc, key)
|
14
|
-
build_errors_table(doc, value)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def build_errors_table(doc, errors)
|
21
|
-
doc.table(class: 'bodyTable', border: '0') do
|
22
|
-
build_errors_table_head(doc)
|
23
|
-
build_errors_table_body(doc, errors)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_errors_table_head(doc)
|
28
|
-
build_table_head(doc, '', 'Message', 'Details')
|
29
|
-
end
|
30
|
-
|
31
|
-
def build_errors_table_body(doc, errors)
|
32
|
-
if PmdTester::ReportDiff.comparable?(errors)
|
33
|
-
# we have only two errors and those are from base and patch, so we
|
34
|
-
# can compare them and display a nice diff
|
35
|
-
pmd_error_a = errors[0]
|
36
|
-
pmd_error_b = errors[1]
|
37
|
-
diff_a = Differ.diff_by_line(pmd_error_a.text, pmd_error_b.text).format_as(:html)
|
38
|
-
diff_b = Differ.diff_by_line(pmd_error_b.text, pmd_error_a.text).format_as(:html)
|
39
|
-
doc.tbody do
|
40
|
-
build_errors_table_row(doc, pmd_error_a, diff_a)
|
41
|
-
build_errors_table_row(doc, pmd_error_b, diff_b)
|
42
|
-
end
|
43
|
-
else
|
44
|
-
# many errors, just report them one by one
|
45
|
-
doc.tbody do
|
46
|
-
errors.each { |pmd_error| build_errors_table_row(doc, pmd_error) }
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def build_errors_table_row(doc, pmd_error, text = nil)
|
52
|
-
doc.tr(class: pmd_error.branch == PmdTester::BASE ? 'b' : 'a') do
|
53
|
-
build_table_anchor_column(doc, 'B', increment_error_index)
|
54
|
-
|
55
|
-
text = pmd_error.text if text.nil?
|
56
|
-
|
57
|
-
# The error message
|
58
|
-
doc.td pmd_error.msg
|
59
|
-
doc.td do
|
60
|
-
doc.pre do
|
61
|
-
doc << text
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def increment_error_index
|
68
|
-
@error_index ||= 0 # init with 0
|
69
|
-
@error_index += 1
|
70
|
-
end
|
71
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Contains methods to write out html for the violations.
|
4
|
-
# This mixin is used by DiffReportBuilder.
|
5
|
-
module DiffReportBuilderViolations
|
6
|
-
def build_violations_section(doc, violation_diffs)
|
7
|
-
doc.div(class: 'section', id: 'Violations') do
|
8
|
-
doc.h2 'Violations:'
|
9
|
-
|
10
|
-
doc.h3 PmdTester::HtmlReportBuilder::NO_DIFFERENCES_MESSAGE if violation_diffs.empty?
|
11
|
-
violation_diffs.each do |key, value|
|
12
|
-
doc.div(class: 'section') do
|
13
|
-
build_filename_h3(doc, key)
|
14
|
-
build_violation_table(doc, key, value)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def build_violation_table(doc, key, value)
|
21
|
-
doc.table(class: 'bodyTable', border: '0') do
|
22
|
-
build_violation_table_head(doc)
|
23
|
-
build_violation_table_body(doc, key, value)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_violation_table_head(doc)
|
28
|
-
build_table_head(doc, '', 'Priority', 'Rule', 'Message', 'Line')
|
29
|
-
end
|
30
|
-
|
31
|
-
def build_violation_table_body(doc, key, value)
|
32
|
-
doc.tbody do
|
33
|
-
value.each do |pmd_violation|
|
34
|
-
build_violation_table_row(doc, key, pmd_violation)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def build_violation_table_row(doc, key, pmd_violation)
|
40
|
-
doc.tr(class: pmd_violation.branch == PmdTester::BASE ? 'b' : 'a') do
|
41
|
-
build_table_anchor_column(doc, 'A', increment_violation_index)
|
42
|
-
|
43
|
-
violation = pmd_violation.attrs
|
44
|
-
|
45
|
-
# The priority of the rule
|
46
|
-
doc.td violation['priority']
|
47
|
-
|
48
|
-
# The rule that trigger the violation
|
49
|
-
doc.td do
|
50
|
-
doc.a(href: (violation['externalInfoUrl']).to_s) { doc.text violation['rule'] }
|
51
|
-
end
|
52
|
-
|
53
|
-
# The violation message
|
54
|
-
doc.td "\n" + pmd_violation.text + "\n"
|
55
|
-
|
56
|
-
# The begin line of the violation
|
57
|
-
line = violation['beginline']
|
58
|
-
|
59
|
-
# The link to the source file
|
60
|
-
doc.td do
|
61
|
-
link = get_link_to_source(violation, key)
|
62
|
-
doc.a(href: link.to_s) { doc.text line }
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
def get_link_to_source(violation, key)
|
68
|
-
l_str = @project.type == 'git' ? 'L' : 'l'
|
69
|
-
line_str = "##{l_str}#{violation['beginline']}"
|
70
|
-
@project.get_webview_url(key) + line_str
|
71
|
-
end
|
72
|
-
|
73
|
-
def increment_violation_index
|
74
|
-
@violation_index ||= 0 # init with 0
|
75
|
-
@violation_index += 1
|
76
|
-
end
|
77
|
-
end
|