pmdtester 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|