pmdtester 1.5.3 → 1.5.5
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/History.md +13 -0
- data/Manifest.txt +5 -5
- data/README.rdoc +3 -2
- data/lib/pmdtester/builders/pmd_report_builder.rb +43 -13
- data/lib/pmdtester/builders/project_hasher.rb +10 -3
- data/lib/pmdtester/cmd.rb +1 -0
- data/lib/pmdtester.rb +1 -1
- data/pmdtester.gemspec +6 -6
- data/resources/_includes/diff_pill_row.html +3 -3
- data/resources/css/bootstrap-5.3.0-alpha3.min.css +6 -0
- data/resources/css/datatables.min.css +14 -10
- data/resources/css/pmd-tester.css +12 -6
- data/resources/js/README.md +20 -0
- data/resources/js/bootstrap-5.3.0-alpha3.min.js +7 -0
- data/resources/js/datatables.min.js +165 -704
- data/resources/js/jquery-3.6.4.slim.min.js +2 -0
- data/resources/js/popper-2.11.7.min.js +6 -0
- data/resources/js/project-report.js +11 -2
- data/resources/project_diff_report.html +5 -5
- data/resources/project_index.html +4 -4
- data/resources/project_pmd_report.html +5 -5
- metadata +8 -7
- data/resources/css/bootstrap.min.css +0 -7
- data/resources/js/bootstrap.min.js +0 -7
- data/resources/js/jquery-3.2.1.slim.min.js +0 -4
- data/resources/js/jquery.min.js +0 -2
- data/resources/js/popper.min.js +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '05486a80b029d8a896b789ebb894077c36d6a0f99a651c0b1885a808f6219b8a'
|
4
|
+
data.tar.gz: b9a98daf20b7c036a26bea412563a9df771252b338cb7f805c4d42351627b458
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efce54ae5e36f7853427a7ccc203346335f7811d3dddbe3ae5d0f558bff3eb7b1748952fbdd31046c251ea6cb55fac5b1a261fd674c4989b5a6d11e251c1872f
|
7
|
+
data.tar.gz: fc72dbd2b79ca40655eea0587f0cb6df1293b6634a9252e428af2dddbe0209f5e74dc2497dadca99687e6e332e495979d42288b100cd55f6b293096645e2f5f5
|
data/History.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 1.5.5 / 2023-11-16
|
2
|
+
|
3
|
+
## Fixed Issues
|
4
|
+
* [#121](https://github.com/pmd/pmd-regression-tester/issues/121): Violation messages should be escaped for html
|
5
|
+
|
6
|
+
# 1.5.4 / 2023-05-27
|
7
|
+
|
8
|
+
## Enhancements
|
9
|
+
|
10
|
+
* [#118](https://github.com/pmd/pmd-regression-tester/pull/118): Update js libraries
|
11
|
+
* [#119](https://github.com/pmd/pmd-regression-tester/pull/119): Update manual integration test for PMD 7
|
12
|
+
* [#120](https://github.com/pmd/pmd-regression-tester/pull/120): Support new PMD 7 binary dist filename
|
13
|
+
|
1
14
|
# 1.5.3 / 2022-11-25
|
2
15
|
|
3
16
|
## Fixed Issues
|
data/Manifest.txt
CHANGED
@@ -47,15 +47,15 @@ lib/pmdtester/runner.rb
|
|
47
47
|
lib/pmdtester/semver.rb
|
48
48
|
pmdtester.gemspec
|
49
49
|
resources/_includes/diff_pill_row.html
|
50
|
-
resources/css/bootstrap.min.css
|
50
|
+
resources/css/bootstrap-5.3.0-alpha3.min.css
|
51
51
|
resources/css/datatables.min.css
|
52
52
|
resources/css/pmd-tester.css
|
53
|
-
resources/js/
|
53
|
+
resources/js/README.md
|
54
|
+
resources/js/bootstrap-5.3.0-alpha3.min.js
|
54
55
|
resources/js/code-snippets.js
|
55
56
|
resources/js/datatables.min.js
|
56
|
-
resources/js/jquery-3.
|
57
|
-
resources/js/
|
58
|
-
resources/js/popper.min.js
|
57
|
+
resources/js/jquery-3.6.4.slim.min.js
|
58
|
+
resources/js/popper-2.11.7.min.js
|
59
59
|
resources/js/project-report.js
|
60
60
|
resources/project_diff_report.html
|
61
61
|
resources/project_index.html
|
data/README.rdoc
CHANGED
@@ -127,6 +127,7 @@ The tool creates the following folders:
|
|
127
127
|
gem install pmdtester --pre
|
128
128
|
|
129
129
|
== DEVELOPERS:
|
130
|
+
|
130
131
|
git clone https://github.com/pmd/pmd-regression-tester.git
|
131
132
|
cd pmd-regression-tester
|
132
133
|
gem install bundler
|
@@ -136,10 +137,10 @@ The tool creates the following folders:
|
|
136
137
|
bundle exec pmdtester ... # run this to directly execute pmdtester from source
|
137
138
|
|
138
139
|
Run a single test class, e.g.:
|
139
|
-
bundle exec ruby -I test test/
|
140
|
+
bundle exec ruby -I test test/test_project_diff_report.rb
|
140
141
|
|
141
142
|
Run a single test, e.g.:
|
142
|
-
bundle exec ruby -I test test/
|
143
|
+
bundle exec ruby -I test test/test_project_diff_report.rb -n test_diff_report_builder
|
143
144
|
|
144
145
|
=== Releasing
|
145
146
|
|
@@ -53,24 +53,19 @@ module PmdTester
|
|
53
53
|
def build_pmd(into_dir:)
|
54
54
|
# in CI there might have been a build performed already. In that case
|
55
55
|
# we reuse the build result, otherwise we build PMD freshly
|
56
|
-
pmd_dist_target =
|
57
|
-
binary_exists = File.exist?(pmd_dist_target)
|
58
|
-
logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
|
56
|
+
pmd_dist_target, binary_exists = find_pmd_dist_target
|
59
57
|
if binary_exists
|
60
58
|
# that's a warning, because we don't know, whether this build really
|
61
59
|
# belongs to the current branch or whether it's from a previous branch.
|
62
60
|
# In CI, that's not a problem, because the workspace is always fresh.
|
63
61
|
logger.warn "#{@pmd_branch_name}: Reusing already existing #{pmd_dist_target}"
|
64
62
|
else
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
' -Dpmd.skip=true' \
|
72
|
-
' -T1C -B'
|
73
|
-
Cmd.execute_successfully(package_cmd)
|
63
|
+
build_pmd_with_maven
|
64
|
+
pmd_dist_target, binary_exists = find_pmd_dist_target
|
65
|
+
unless binary_exists
|
66
|
+
logger.error "#{@pmd_branch_name}: Dist zip not found at #{pmd_dist_target}!"
|
67
|
+
raise "No Dist zip found at #{pmd_dist_target}"
|
68
|
+
end
|
74
69
|
end
|
75
70
|
|
76
71
|
logger.info "#{@pmd_branch_name}: Extracting the zip"
|
@@ -96,7 +91,7 @@ module PmdTester
|
|
96
91
|
|
97
92
|
def generate_pmd_report(project)
|
98
93
|
error_recovery_options = @error_recovery ? 'PMD_JAVA_OPTS="-Dpmd.error_recovery -ea" ' : ''
|
99
|
-
fail_on_violation =
|
94
|
+
fail_on_violation = create_failonviolation_option
|
100
95
|
auxclasspath_option = create_auxclasspath_option(project)
|
101
96
|
pmd_cmd = "#{error_recovery_options}" \
|
102
97
|
"#{determine_run_path} -d #{project.local_source_path} -f xml " \
|
@@ -213,6 +208,16 @@ module PmdTester
|
|
213
208
|
auxclasspath_option
|
214
209
|
end
|
215
210
|
|
211
|
+
def create_failonviolation_option
|
212
|
+
if pmd7?
|
213
|
+
'--no-fail-on-violation'
|
214
|
+
elsif should_use_long_cli_options?
|
215
|
+
'--fail-on-violation false'
|
216
|
+
else
|
217
|
+
'-failOnViolation false'
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
216
221
|
def pmd7?
|
217
222
|
Semver.compare(@pmd_version, '7.0.0-SNAPSHOT') >= 0
|
218
223
|
end
|
@@ -227,5 +232,30 @@ module PmdTester
|
|
227
232
|
end
|
228
233
|
run_path
|
229
234
|
end
|
235
|
+
|
236
|
+
def find_pmd_dist_target
|
237
|
+
pmd_dist_target = "pmd-dist/target/pmd-bin-#{@pmd_version}.zip"
|
238
|
+
binary_exists = File.exist?(pmd_dist_target)
|
239
|
+
logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
|
240
|
+
unless binary_exists
|
241
|
+
pmd_dist_target = "pmd-dist/target/pmd-dist-#{@pmd_version}-bin.zip"
|
242
|
+
binary_exists = File.exist?(pmd_dist_target)
|
243
|
+
logger.debug "#{@pmd_branch_name}: Does the file #{pmd_dist_target} exist? #{binary_exists} (cwd: #{Dir.getwd})"
|
244
|
+
end
|
245
|
+
[pmd_dist_target, binary_exists]
|
246
|
+
end
|
247
|
+
|
248
|
+
def build_pmd_with_maven
|
249
|
+
logger.info "#{@pmd_branch_name}: Building PMD #{@pmd_version}..."
|
250
|
+
package_cmd = './mvnw clean package' \
|
251
|
+
' -Dmaven.test.skip=true' \
|
252
|
+
' -Dmaven.javadoc.skip=true' \
|
253
|
+
' -Dmaven.source.skip=true' \
|
254
|
+
' -Dcheckstyle.skip=true' \
|
255
|
+
' -Dpmd.skip=true' \
|
256
|
+
' -T1C -B'
|
257
|
+
logger.debug "#{@pmd_branch_name}: maven command: #{package_cmd}"
|
258
|
+
Cmd.execute_successfully(package_cmd)
|
259
|
+
end
|
230
260
|
end
|
231
261
|
end
|
@@ -117,15 +117,22 @@ module PmdTester
|
|
117
117
|
'l' => violation.line,
|
118
118
|
'f' => file_ref,
|
119
119
|
'r' => violation.rule_name,
|
120
|
-
'm' => is_diff && violation.changed?
|
120
|
+
'm' => create_violation_message(violation, is_diff && violation.changed?)
|
121
121
|
}
|
122
122
|
h['ol'] = violation.old_line if is_diff && violation.changed? && violation.line != violation.old_line
|
123
123
|
h
|
124
124
|
end
|
125
125
|
|
126
|
-
def
|
127
|
-
|
126
|
+
def create_violation_message(violation, is_diff)
|
127
|
+
return escape_html(violation.message) unless is_diff
|
128
|
+
|
129
|
+
diff = Differ.diff_by_word(escape_html(violation.message),
|
130
|
+
escape_html(violation.old_message))
|
128
131
|
diff.format_as(:html)
|
129
132
|
end
|
133
|
+
|
134
|
+
def escape_html(string)
|
135
|
+
CGI.escapeHTML(string)
|
136
|
+
end
|
130
137
|
end
|
131
138
|
end
|
data/lib/pmdtester/cmd.rb
CHANGED
data/lib/pmdtester.rb
CHANGED
@@ -33,7 +33,7 @@ require_relative 'pmdtester/parsers/projects_parser'
|
|
33
33
|
# and unexpected behaviors will not be introduced to PMD project
|
34
34
|
# after fixing an issue and new rules can work as expected.
|
35
35
|
module PmdTester
|
36
|
-
VERSION = '1.5.
|
36
|
+
VERSION = '1.5.5'
|
37
37
|
BASE = 'base'
|
38
38
|
PATCH = 'patch'
|
39
39
|
PR_NUM_ENV_VAR = 'PMD_CI_PULL_REQUEST_NUMBER' # see PmdBranchDetail
|
data/pmdtester.gemspec
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
# DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake hoe:spec`.
|
2
2
|
|
3
3
|
# -*- encoding: utf-8 -*-
|
4
|
-
# stub: pmdtester 1.5.
|
4
|
+
# stub: pmdtester 1.5.5 ruby lib
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "pmdtester".freeze
|
8
|
-
s.version = "1.5.
|
8
|
+
s.version = "1.5.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
11
11
|
s.metadata = { "bug_tracker_uri" => "https://github.com/pmd/pmd-regression-tester/issues", "homepage_uri" => "https://pmd.github.io", "source_code_uri" => "https://github.com/pmd/pmd-regression-tester" } if s.respond_to? :metadata=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Andreas Dangel".freeze, "Binguo Bao".freeze, "Cl\u00E9ment Fournier".freeze]
|
14
|
-
s.date = "
|
14
|
+
s.date = "2023-11-16"
|
15
15
|
s.description = "A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue , and new rules can work as expected.".freeze
|
16
16
|
s.email = ["andreas.dangel@pmd-code.org".freeze, "djydewang@gmail.com".freeze, "clement.fournier76@gmail.com".freeze]
|
17
17
|
s.executables = ["pmdtester".freeze]
|
18
|
-
s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze]
|
19
|
-
s.files = [".ci/build.sh".freeze, ".ci/inc/fetch_ci_scripts.bash".freeze, ".ci/manual-integration-tests.sh".freeze, ".github/workflows/build.yml".freeze, ".github/workflows/manual-integration-tests.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, ".ruby-version".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "config/projectlist_1_2_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/liquid_renderer.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/project_hasher.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/collection_by_file.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_tester_utils.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "lib/pmdtester/semver.rb".freeze, "pmdtester.gemspec".freeze, "resources/_includes/diff_pill_row.html".freeze, "resources/css/bootstrap.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/bootstrap.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.
|
18
|
+
s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "resources/js/README.md".freeze]
|
19
|
+
s.files = [".ci/build.sh".freeze, ".ci/inc/fetch_ci_scripts.bash".freeze, ".ci/manual-integration-tests.sh".freeze, ".github/workflows/build.yml".freeze, ".github/workflows/manual-integration-tests.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, ".ruby-version".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "config/projectlist_1_2_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/liquid_renderer.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/project_hasher.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/collection_by_file.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_tester_utils.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "lib/pmdtester/semver.rb".freeze, "pmdtester.gemspec".freeze, "resources/_includes/diff_pill_row.html".freeze, "resources/css/bootstrap-5.3.0-alpha3.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/README.md".freeze, "resources/js/bootstrap-5.3.0-alpha3.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.6.4.slim.min.js".freeze, "resources/js/popper-2.11.7.min.js".freeze, "resources/js/project-report.js".freeze, "resources/project_diff_report.html".freeze, "resources/project_index.html".freeze, "resources/project_pmd_report.html".freeze]
|
20
20
|
s.homepage = "https://pmd.github.io".freeze
|
21
21
|
s.licenses = ["BSD-2-Clause".freeze]
|
22
22
|
s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
|
23
23
|
s.required_ruby_version = Gem::Requirement.new(">= 2.7".freeze)
|
24
|
-
s.rubygems_version = "3.1.
|
24
|
+
s.rubygems_version = "3.1.6".freeze
|
25
25
|
s.summary = "A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue , and new rules can work as expected.".freeze
|
26
26
|
|
27
27
|
if s.respond_to? :specification_version then
|
@@ -1,6 +1,6 @@
|
|
1
1
|
|
2
|
-
<span class="
|
3
|
-
<span class="
|
2
|
+
<span class="badge rounded-pill badge-secondary added">+{{h.new}}</span>
|
3
|
+
<span class="badge rounded-pill badge-secondary removed">-{{h.removed}}</span>
|
4
4
|
{% if h.changed %}
|
5
|
-
<span class="
|
5
|
+
<span class="badge rounded-pill badge-secondary changed">~{{h.changed}}</span>
|
6
6
|
{% endif %}
|