pmdtester 1.5.1 → 1.5.3
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/.github/workflows/build.yml +2 -2
- data/.github/workflows/manual-integration-tests.yml +2 -2
- data/.rubocop.yml +3 -0
- data/History.md +13 -0
- data/Rakefile +4 -4
- data/lib/pmdtester/builders/pmd_report_builder.rb +16 -6
- data/lib/pmdtester/parsers/pmd_report_document.rb +4 -3
- data/lib/pmdtester/pmd_violation.rb +0 -3
- data/lib/pmdtester/project.rb +5 -3
- data/lib/pmdtester.rb +1 -1
- data/pmdtester.gemspec +13 -13
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d64309fafec9b58208385b35297f4096da84511576ea23382e271b8bcf0bfcb0
|
4
|
+
data.tar.gz: d90d0ab024c076b3e6e13228d1fef303d63a34c1ce97ddb9169d798b94e63dde
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3201eaf56629cb6e859ded9c3522dc3907f50de3694ab1bdd11256f204e0c0fdd2e8bf5857ed0ee2291c02c257be091e6f36110c7c646d55281b0311ae7e9024
|
7
|
+
data.tar.gz: 7784defdc77b0c5d3f278232ed8f06e3326f3a17c2632e140b376dc1551640e0e0a35ed0d28770140cc6ed5d99ec96c8464dd92afc54f1a8b64421b15df47b72
|
data/.github/workflows/build.yml
CHANGED
@@ -20,8 +20,8 @@ jobs:
|
|
20
20
|
continue-on-error: false
|
21
21
|
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
|
22
22
|
steps:
|
23
|
-
- uses: actions/checkout@
|
24
|
-
- uses: actions/cache@
|
23
|
+
- uses: actions/checkout@v3
|
24
|
+
- uses: actions/cache@v3
|
25
25
|
with:
|
26
26
|
path: |
|
27
27
|
~/.m2/repository
|
data/.rubocop.yml
CHANGED
data/History.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 1.5.3 / 2022-11-25
|
2
|
+
|
3
|
+
## Fixed Issues
|
4
|
+
|
5
|
+
* [#115](https://github.com/pmd/pmd-regression-tester/pull/115): Fix manual integration tests
|
6
|
+
* [#116](https://github.com/pmd/pmd-regression-tester/issues/116): Relative paths in pmd report result in missing code snippets
|
7
|
+
|
8
|
+
# 1.5.2 / 2022-10-20
|
9
|
+
|
10
|
+
## Enhancements
|
11
|
+
|
12
|
+
* [#114](https://github.com/pmd/pmd-regression-tester/pull/114): Support new PMD 7 CLI interface
|
13
|
+
|
1
14
|
# 1.5.1 / 2022-05-12
|
2
15
|
|
3
16
|
## Fixed Issues
|
data/Rakefile
CHANGED
@@ -21,17 +21,17 @@ hoe = Hoe.spec 'pmdtester' do
|
|
21
21
|
self.clean_globs = %w[target/reports/**/* target/test/**/* target/dynamic-config.xml Gemfile.lock]
|
22
22
|
self.extra_deps += [
|
23
23
|
['nokogiri', '~> 1.13'],
|
24
|
-
['slop', '~> 4.
|
24
|
+
['slop', '~> 4.9'],
|
25
25
|
['differ', '~> 0.1'],
|
26
26
|
['rufus-scheduler', '~> 3.8'],
|
27
27
|
['logger-colors', '~> 1.0'],
|
28
|
-
['liquid', '~> 5.
|
28
|
+
['liquid', '~> 5.4']
|
29
29
|
]
|
30
30
|
self.extra_dev_deps += [
|
31
31
|
['hoe-bundler', '~> 1.5'],
|
32
32
|
['hoe-git', '~> 1.6'],
|
33
|
-
['minitest', '~> 5.
|
34
|
-
['mocha', '~> 1.
|
33
|
+
['minitest', '~> 5.16'],
|
34
|
+
['mocha', '~> 1.16'],
|
35
35
|
# use the same version of rubocop as codacy
|
36
36
|
['rubocop', '~> 0.93'],
|
37
37
|
['test-unit', '~> 3.5'],
|
@@ -96,11 +96,10 @@ module PmdTester
|
|
96
96
|
|
97
97
|
def generate_pmd_report(project)
|
98
98
|
error_recovery_options = @error_recovery ? 'PMD_JAVA_OPTS="-Dpmd.error_recovery -ea" ' : ''
|
99
|
-
|
100
|
-
fail_on_violation = should_use_long_cli_options ? '--fail-on-violation false' : '-failOnViolation false'
|
99
|
+
fail_on_violation = should_use_long_cli_options? ? '--fail-on-violation false' : '-failOnViolation false'
|
101
100
|
auxclasspath_option = create_auxclasspath_option(project)
|
102
101
|
pmd_cmd = "#{error_recovery_options}" \
|
103
|
-
"#{
|
102
|
+
"#{determine_run_path} -d #{project.local_source_path} -f xml " \
|
104
103
|
"-R #{project.get_config_path(@pmd_branch_name)} " \
|
105
104
|
"-r #{project.get_pmd_report_path(@pmd_branch_name)} " \
|
106
105
|
"#{fail_on_violation} -t #{@threads} " \
|
@@ -149,7 +148,7 @@ module PmdTester
|
|
149
148
|
|
150
149
|
PmdReportDetail.create(execution_time: execution_time, timestamp: end_time,
|
151
150
|
exit_code: exit_code, report_info_path: project.get_report_info_path(@pmd_branch_name))
|
152
|
-
logger.info "#{project.name}'s PMD report was generated successfully"
|
151
|
+
logger.info "#{project.name}'s PMD report was generated successfully (exit code: #{exit_code})"
|
153
152
|
end
|
154
153
|
|
155
154
|
@pmd_branch_details.execution_time = sum_time
|
@@ -200,7 +199,7 @@ module PmdTester
|
|
200
199
|
!Cmd.execute_successfully('git status --porcelain').empty?
|
201
200
|
end
|
202
201
|
|
203
|
-
def should_use_long_cli_options
|
202
|
+
def should_use_long_cli_options?
|
204
203
|
logger.debug "PMD Version: #{@pmd_version}"
|
205
204
|
Semver.compare(@pmd_version, '6.41.0') >= 0
|
206
205
|
end
|
@@ -208,7 +207,7 @@ module PmdTester
|
|
208
207
|
def create_auxclasspath_option(project)
|
209
208
|
auxclasspath_option = ''
|
210
209
|
unless project.auxclasspath.empty?
|
211
|
-
auxclasspath_option = should_use_long_cli_options ? '--aux-classpath ' : '-auxclasspath '
|
210
|
+
auxclasspath_option = should_use_long_cli_options? ? '--aux-classpath ' : '-auxclasspath '
|
212
211
|
auxclasspath_option += project.auxclasspath
|
213
212
|
end
|
214
213
|
auxclasspath_option
|
@@ -217,5 +216,16 @@ module PmdTester
|
|
217
216
|
def pmd7?
|
218
217
|
Semver.compare(@pmd_version, '7.0.0-SNAPSHOT') >= 0
|
219
218
|
end
|
219
|
+
|
220
|
+
def determine_run_path
|
221
|
+
run_path = "#{saved_distro_path(@pmd_branch_details.branch_last_sha)}/bin"
|
222
|
+
run_path = if File.exist?("#{run_path}/pmd")
|
223
|
+
# New PMD 7 CLI script (pmd/pmd#4059)
|
224
|
+
"#{run_path}/pmd check"
|
225
|
+
else
|
226
|
+
"#{run_path}/run.sh pmd"
|
227
|
+
end
|
228
|
+
run_path
|
229
|
+
end
|
220
230
|
end
|
221
231
|
end
|
@@ -41,11 +41,11 @@ module PmdTester
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def characters(string)
|
44
|
-
@cur_text <<
|
44
|
+
@cur_text << string
|
45
45
|
end
|
46
46
|
|
47
47
|
def cdata_block(string)
|
48
|
-
@cur_text <<
|
48
|
+
@cur_text << string
|
49
49
|
end
|
50
50
|
|
51
51
|
def end_element(name)
|
@@ -76,11 +76,12 @@ module PmdTester
|
|
76
76
|
# Modifies the string in place and returns it
|
77
77
|
# (this is what sub! does, except it returns nil if no replacement occurred)
|
78
78
|
def remove_work_dir!(str)
|
79
|
-
str.sub!(
|
79
|
+
str.sub!(%r{#{@working_dir}/}, '')
|
80
80
|
str
|
81
81
|
end
|
82
82
|
|
83
83
|
def finish_text!
|
84
|
+
remove_work_dir!(@cur_text)
|
84
85
|
res = @cur_text.strip!.dup.freeze
|
85
86
|
@cur_text.clear
|
86
87
|
res
|
@@ -30,8 +30,6 @@ module PmdTester
|
|
30
30
|
attr_reader :fname, :info_url, :line, :old_line, :old_message, :rule_name, :ruleset_name, :language
|
31
31
|
attr_accessor :message
|
32
32
|
|
33
|
-
# rubocop:disable Metrics/ParameterLists
|
34
|
-
# Disable it: how is replacing a long parameter list with a single hash helping?
|
35
33
|
def initialize(branch:, fname:, info_url:, bline:, rule_name:, ruleset_name:)
|
36
34
|
@branch = branch
|
37
35
|
@fname = fname
|
@@ -49,7 +47,6 @@ module PmdTester
|
|
49
47
|
@old_message = nil
|
50
48
|
@old_line = nil
|
51
49
|
end
|
52
|
-
# rubocop:enable Metrics/ParameterLists
|
53
50
|
|
54
51
|
def line_move?(other)
|
55
52
|
message.eql?(other.message) && (line - other.line).abs <= 5
|
data/lib/pmdtester/project.rb
CHANGED
@@ -60,17 +60,19 @@ module PmdTester
|
|
60
60
|
# Change the file path from 'LOCAL_DIR/SOURCE_CODE_PATH' to
|
61
61
|
# 'WEB_VIEW_URL/SOURCE_CODE_PATH'
|
62
62
|
def get_webview_url(file_path)
|
63
|
-
file_path.gsub(%r{
|
63
|
+
file_path.gsub(%r{^#{clone_root_path}/}, "#{@webview_url}/")
|
64
64
|
end
|
65
65
|
|
66
66
|
# Change the file path from 'LOCAL_DIR/SOURCE_CODE_PATH' to
|
67
67
|
# 'PROJECT_NAME/SOURCE_CODE_PATH'
|
68
68
|
def get_path_inside_project(file_path)
|
69
|
-
file_path.gsub(%r{
|
69
|
+
file_path.gsub(%r{^#{clone_root_path}/}, "#{@name}/")
|
70
70
|
end
|
71
71
|
|
72
|
+
# Change the file path from 'LOCAL_DIR/SOURCE_CODE_PATH' to
|
73
|
+
# 'SOURCE_CODE_PATH'
|
72
74
|
def get_local_path(file_path)
|
73
|
-
file_path.sub(%r{
|
75
|
+
file_path.sub(%r{^#{clone_root_path}/}, '')
|
74
76
|
end
|
75
77
|
|
76
78
|
def get_pmd_report_path(branch_name)
|
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.3'
|
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,17 +1,17 @@
|
|
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.3 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.3"
|
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 = "2022-
|
14
|
+
s.date = "2022-11-25"
|
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]
|
@@ -30,34 +30,34 @@ Gem::Specification.new do |s|
|
|
30
30
|
|
31
31
|
if s.respond_to? :add_runtime_dependency then
|
32
32
|
s.add_runtime_dependency(%q<nokogiri>.freeze, ["~> 1.13"])
|
33
|
-
s.add_runtime_dependency(%q<slop>.freeze, ["~> 4.
|
33
|
+
s.add_runtime_dependency(%q<slop>.freeze, ["~> 4.9"])
|
34
34
|
s.add_runtime_dependency(%q<differ>.freeze, ["~> 0.1"])
|
35
35
|
s.add_runtime_dependency(%q<rufus-scheduler>.freeze, ["~> 3.8"])
|
36
36
|
s.add_runtime_dependency(%q<logger-colors>.freeze, ["~> 1.0"])
|
37
|
-
s.add_runtime_dependency(%q<liquid>.freeze, ["~> 5.
|
37
|
+
s.add_runtime_dependency(%q<liquid>.freeze, ["~> 5.4"])
|
38
38
|
s.add_development_dependency(%q<hoe-bundler>.freeze, ["~> 1.5"])
|
39
39
|
s.add_development_dependency(%q<hoe-git>.freeze, ["~> 1.6"])
|
40
|
-
s.add_development_dependency(%q<minitest>.freeze, ["~> 5.
|
41
|
-
s.add_development_dependency(%q<mocha>.freeze, ["~> 1.
|
40
|
+
s.add_development_dependency(%q<minitest>.freeze, ["~> 5.16"])
|
41
|
+
s.add_development_dependency(%q<mocha>.freeze, ["~> 1.16"])
|
42
42
|
s.add_development_dependency(%q<rubocop>.freeze, ["~> 0.93"])
|
43
43
|
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.5"])
|
44
44
|
s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.4"])
|
45
|
-
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.
|
45
|
+
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.26"])
|
46
46
|
else
|
47
47
|
s.add_dependency(%q<nokogiri>.freeze, ["~> 1.13"])
|
48
|
-
s.add_dependency(%q<slop>.freeze, ["~> 4.
|
48
|
+
s.add_dependency(%q<slop>.freeze, ["~> 4.9"])
|
49
49
|
s.add_dependency(%q<differ>.freeze, ["~> 0.1"])
|
50
50
|
s.add_dependency(%q<rufus-scheduler>.freeze, ["~> 3.8"])
|
51
51
|
s.add_dependency(%q<logger-colors>.freeze, ["~> 1.0"])
|
52
|
-
s.add_dependency(%q<liquid>.freeze, ["~> 5.
|
52
|
+
s.add_dependency(%q<liquid>.freeze, ["~> 5.4"])
|
53
53
|
s.add_dependency(%q<hoe-bundler>.freeze, ["~> 1.5"])
|
54
54
|
s.add_dependency(%q<hoe-git>.freeze, ["~> 1.6"])
|
55
|
-
s.add_dependency(%q<minitest>.freeze, ["~> 5.
|
56
|
-
s.add_dependency(%q<mocha>.freeze, ["~> 1.
|
55
|
+
s.add_dependency(%q<minitest>.freeze, ["~> 5.16"])
|
56
|
+
s.add_dependency(%q<mocha>.freeze, ["~> 1.16"])
|
57
57
|
s.add_dependency(%q<rubocop>.freeze, ["~> 0.93"])
|
58
58
|
s.add_dependency(%q<test-unit>.freeze, ["~> 3.5"])
|
59
59
|
s.add_dependency(%q<rdoc>.freeze, ["~> 6.4"])
|
60
|
-
s.add_dependency(%q<hoe>.freeze, ["~> 3.
|
60
|
+
s.add_dependency(%q<hoe>.freeze, ["~> 3.26"])
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pmdtester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Dangel
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-11-25 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -32,14 +32,14 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: '4.
|
35
|
+
version: '4.9'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '4.
|
42
|
+
version: '4.9'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: differ
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,14 +88,14 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '5.
|
91
|
+
version: '5.4'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: '5.
|
98
|
+
version: '5.4'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: hoe-bundler
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,28 +130,28 @@ dependencies:
|
|
130
130
|
requirements:
|
131
131
|
- - "~>"
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: '5.
|
133
|
+
version: '5.16'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
requirements:
|
138
138
|
- - "~>"
|
139
139
|
- !ruby/object:Gem::Version
|
140
|
-
version: '5.
|
140
|
+
version: '5.16'
|
141
141
|
- !ruby/object:Gem::Dependency
|
142
142
|
name: mocha
|
143
143
|
requirement: !ruby/object:Gem::Requirement
|
144
144
|
requirements:
|
145
145
|
- - "~>"
|
146
146
|
- !ruby/object:Gem::Version
|
147
|
-
version: '1.
|
147
|
+
version: '1.16'
|
148
148
|
type: :development
|
149
149
|
prerelease: false
|
150
150
|
version_requirements: !ruby/object:Gem::Requirement
|
151
151
|
requirements:
|
152
152
|
- - "~>"
|
153
153
|
- !ruby/object:Gem::Version
|
154
|
-
version: '1.
|
154
|
+
version: '1.16'
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: rubocop
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
@@ -200,14 +200,14 @@ dependencies:
|
|
200
200
|
requirements:
|
201
201
|
- - "~>"
|
202
202
|
- !ruby/object:Gem::Version
|
203
|
-
version: '3.
|
203
|
+
version: '3.26'
|
204
204
|
type: :development
|
205
205
|
prerelease: false
|
206
206
|
version_requirements: !ruby/object:Gem::Requirement
|
207
207
|
requirements:
|
208
208
|
- - "~>"
|
209
209
|
- !ruby/object:Gem::Version
|
210
|
-
version: '3.
|
210
|
+
version: '3.26'
|
211
211
|
description: A regression testing tool ensure that new problems and unexpected behaviors
|
212
212
|
will not be introduced to PMD project after fixing an issue , and new rules can
|
213
213
|
work as expected.
|