pmdtester 1.1.2 → 1.4.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 +87 -55
- data/.ci/inc/fetch_ci_scripts.bash +19 -0
- data/.ci/manual-integration-tests.sh +31 -14
- data/.github/workflows/build.yml +26 -9
- data/.github/workflows/manual-integration-tests.yml +24 -8
- data/.hoerc +1 -1
- data/.rubocop.yml +3 -0
- data/History.md +31 -0
- data/Manifest.txt +4 -2
- data/README.rdoc +26 -25
- data/Rakefile +11 -6
- data/config/project-list.xml +8 -7
- data/config/projectlist_1_2_0.xsd +39 -0
- data/lib/pmdtester/builders/liquid_renderer.rb +60 -3
- data/lib/pmdtester/builders/pmd_report_builder.rb +9 -3
- data/lib/pmdtester/builders/project_builder.rb +14 -9
- data/lib/pmdtester/builders/project_hasher.rb +41 -39
- data/lib/pmdtester/builders/rule_set_builder.rb +116 -75
- data/lib/pmdtester/builders/summary_report_builder.rb +1 -0
- data/lib/pmdtester/parsers/options.rb +5 -0
- data/lib/pmdtester/parsers/pmd_report_document.rb +1 -3
- data/lib/pmdtester/parsers/projects_parser.rb +1 -1
- data/lib/pmdtester/pmd_branch_detail.rb +6 -0
- data/lib/pmdtester/pmd_tester_utils.rb +1 -0
- data/lib/pmdtester/pmd_violation.rb +11 -1
- data/lib/pmdtester/project.rb +24 -11
- data/lib/pmdtester/report_diff.rb +20 -4
- data/lib/pmdtester/runner.rb +8 -3
- data/lib/pmdtester/semver.rb +36 -0
- data/lib/pmdtester.rb +2 -1
- data/pmdtester.gemspec +18 -18
- data/resources/css/pmd-tester.css +17 -1
- data/resources/js/code-snippets.js +48 -15
- data/resources/js/project-report.js +5 -3
- data/resources/project_diff_report.html +9 -0
- data/resources/project_index.html +11 -0
- data/resources/project_pmd_report.html +186 -0
- metadata +26 -30
- data/.ci/files/env.gpg +0 -1
- data/.ci/inc/install-openjdk.inc +0 -26
@@ -0,0 +1,186 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>PMD Report for {{project_name}}</title>
|
6
|
+
|
7
|
+
<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"/>
|
8
|
+
<link rel="stylesheet" type="text/css" href="../css/datatables.min.css"/>
|
9
|
+
<link rel="stylesheet" type="text/css" href="../css/pmd-tester.css">
|
10
|
+
|
11
|
+
<script src="../js/jquery-3.2.1.slim.min.js"></script>
|
12
|
+
<script src="../js/popper.min.js"></script>
|
13
|
+
<script src="../js/bootstrap.min.js"></script>
|
14
|
+
<script src="../js/datatables.min.js"></script>
|
15
|
+
<script src="../js/code-snippets.js"></script>
|
16
|
+
<!-- This is generated -->
|
17
|
+
<script src="./{{branch}}_data.js"></script>
|
18
|
+
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="section">
|
22
|
+
<h1>PMD Report for {{project_name}}</h1>
|
23
|
+
</div>
|
24
|
+
<div class="section">
|
25
|
+
<h2>Summary</h2>
|
26
|
+
<div class="section-content">
|
27
|
+
<table id="table-summary" class="table">
|
28
|
+
<thead>
|
29
|
+
<tr>
|
30
|
+
<th></th>
|
31
|
+
<th>{{branch | capitalize}}</th>
|
32
|
+
</tr>
|
33
|
+
</thead>
|
34
|
+
<tbody>
|
35
|
+
<tr>
|
36
|
+
<td class="item"><a href="#section-violations">Violations</a>
|
37
|
+
</td>
|
38
|
+
<td class="{{branch}}">{{report.violation_counts}}</td>
|
39
|
+
</tr>
|
40
|
+
<tr>
|
41
|
+
<td class="item"><a href="#section-errors">Errors</a></td>
|
42
|
+
<td class="{{branch}}">{{report.error_counts}}</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td class="item"><a href="#section-configerrors">ConfigErrors</a></td>
|
46
|
+
<td class="{{branch}}">{{report.configerror_counts}}</td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td class="item">Execution time</td>
|
50
|
+
<td class="{{branch}}">{{report.execution_time}}</td>
|
51
|
+
</tr>
|
52
|
+
<tr>
|
53
|
+
<td class="item">Timestamp</td>
|
54
|
+
<td class="{{branch}}">{{report.timestamp}}</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td class="item">Full Report</td>
|
58
|
+
<td class="{{branch}}"><a href="{{branch}}_pmd_report.xml">{{branch}}_pmd_report.xml</a></td>
|
59
|
+
</tr>
|
60
|
+
</tbody>
|
61
|
+
</table>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
|
65
|
+
<div class="section" id="section-rule-summary">
|
66
|
+
|
67
|
+
<h2>Summary by rule</h2>
|
68
|
+
|
69
|
+
<div class="section-content">
|
70
|
+
|
71
|
+
<div class="table-responsive">
|
72
|
+
<table id="rule-summary" class="table">
|
73
|
+
<thead>
|
74
|
+
<tr>
|
75
|
+
<th>Rule</th>
|
76
|
+
<th>{{branch | capitalize}}</th>
|
77
|
+
</tr>
|
78
|
+
</thead>
|
79
|
+
<tbody>
|
80
|
+
|
81
|
+
{% assign sorted_rules = report.rules | sort: 'name' %}
|
82
|
+
|
83
|
+
{% for rule in sorted_rules %}
|
84
|
+
<tr id="rule-summary-{{rule.name}}">
|
85
|
+
<td class="rulename">
|
86
|
+
{{ rule.name }}
|
87
|
+
<span class="external-link-secondary"><a class="rulelink" href="{{rule.info_url}}" target="_blank" rel="noopener noreferrer">[doc]</a></span>
|
88
|
+
</td>
|
89
|
+
<td class="{{branch}}count">{{ rule.count }}</td>
|
90
|
+
</tr>
|
91
|
+
{% endfor %}
|
92
|
+
</tbody>
|
93
|
+
</table>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
<div class="section" id="section-violations">
|
98
|
+
|
99
|
+
<h2>Violations</h2>
|
100
|
+
|
101
|
+
<div class="section-content">
|
102
|
+
|
103
|
+
<table id="violationsTable" width="100%" class="table">
|
104
|
+
<thead>
|
105
|
+
<tr>
|
106
|
+
<th>Location (click row to expand)</th>
|
107
|
+
<th>Rule</th>
|
108
|
+
<th>Message</th>
|
109
|
+
<th>Type</th>
|
110
|
+
</tr>
|
111
|
+
</thead>
|
112
|
+
</table>
|
113
|
+
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<div class="section" id="section-errors">
|
118
|
+
|
119
|
+
<h2>Errors</h2>
|
120
|
+
|
121
|
+
<div class="section-content">
|
122
|
+
|
123
|
+
<div class="table-responsive">
|
124
|
+
<table id="error-table" class="table">
|
125
|
+
<thead>
|
126
|
+
<tr>
|
127
|
+
<th>File</th>
|
128
|
+
<th>Description (click to expand)</th>
|
129
|
+
</tr>
|
130
|
+
</thead>
|
131
|
+
<tbody>
|
132
|
+
{% for error in report.errors %}
|
133
|
+
<tr id="error-{{forloop.index}}" class="accordion-toggle error-row" data-toggle="collapse" data-target="#error-{{forloop.index}}-expanded">
|
134
|
+
<td><a href="{{error.file_url}}" target="_blank" rel="noopener noreferrer">{{error.short_filename}}</a></td>
|
135
|
+
<td>{{error.short_message | escape | replace: error.filename, "<span class='meta-var'>$FILE</span>" }}</td>
|
136
|
+
</tr>
|
137
|
+
<tr>
|
138
|
+
<td class="row-hidden" colspan="2">
|
139
|
+
<div class="accordion-body collapse" id="error-{{forloop.index}}-expanded">
|
140
|
+
<div class="collapsed-content-padder">
|
141
|
+
<pre>
|
142
|
+
{{ error.stack_trace_html }}
|
143
|
+
</pre>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</td>
|
147
|
+
</tr>
|
148
|
+
{% endfor %}
|
149
|
+
</tbody>
|
150
|
+
</table>
|
151
|
+
</div>
|
152
|
+
|
153
|
+
</div>
|
154
|
+
</div>
|
155
|
+
|
156
|
+
<div class="section" id="section-configerrors">
|
157
|
+
|
158
|
+
<h2>ConfigErrors</h2>
|
159
|
+
|
160
|
+
<div class="section-content">
|
161
|
+
|
162
|
+
<div class="table-responsive">
|
163
|
+
<table id="configerror-table" class="table">
|
164
|
+
<thead>
|
165
|
+
<tr>
|
166
|
+
<th>Rule</th>
|
167
|
+
<th>Message</th>
|
168
|
+
</tr>
|
169
|
+
</thead>
|
170
|
+
<tbody>
|
171
|
+
{% for configerror in report.configerrors %}
|
172
|
+
<tr class="configerror-row">
|
173
|
+
<td>{{configerror.rule}}</td>
|
174
|
+
<td>{{configerror.message}}</td>
|
175
|
+
</tr>
|
176
|
+
{% endfor %}
|
177
|
+
</tbody>
|
178
|
+
</table>
|
179
|
+
</div>
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
|
183
|
+
<script src="../js/project-report.js"></script>
|
184
|
+
|
185
|
+
</body>
|
186
|
+
</html>
|
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.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Dangel
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-03-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
21
|
+
version: '1.13'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 1.
|
28
|
+
version: '1.13'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: slop
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -60,14 +60,14 @@ dependencies:
|
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '3.
|
63
|
+
version: '3.8'
|
64
64
|
type: :runtime
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: '3.
|
70
|
+
version: '3.8'
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: logger-colors
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,16 +86,16 @@ dependencies:
|
|
86
86
|
name: liquid
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - "
|
89
|
+
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
91
|
+
version: '5.2'
|
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: '
|
98
|
+
version: '5.2'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: hoe-bundler
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,62 +158,56 @@ dependencies:
|
|
158
158
|
requirements:
|
159
159
|
- - "~>"
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version: '0.
|
161
|
+
version: '0.93'
|
162
162
|
type: :development
|
163
163
|
prerelease: false
|
164
164
|
version_requirements: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
166
|
- - "~>"
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version: '0.
|
168
|
+
version: '0.93'
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
170
|
name: test-unit
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
173
|
- - "~>"
|
174
174
|
- !ruby/object:Gem::Version
|
175
|
-
version: '3.
|
175
|
+
version: '3.5'
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
178
|
version_requirements: !ruby/object:Gem::Requirement
|
179
179
|
requirements:
|
180
180
|
- - "~>"
|
181
181
|
- !ruby/object:Gem::Version
|
182
|
-
version: '3.
|
182
|
+
version: '3.5'
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
184
|
name: rdoc
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
|
-
- - "
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '4.0'
|
190
|
-
- - "<"
|
187
|
+
- - "~>"
|
191
188
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
189
|
+
version: '6.4'
|
193
190
|
type: :development
|
194
191
|
prerelease: false
|
195
192
|
version_requirements: !ruby/object:Gem::Requirement
|
196
193
|
requirements:
|
197
|
-
- - "
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: '4.0'
|
200
|
-
- - "<"
|
194
|
+
- - "~>"
|
201
195
|
- !ruby/object:Gem::Version
|
202
|
-
version: '
|
196
|
+
version: '6.4'
|
203
197
|
- !ruby/object:Gem::Dependency
|
204
198
|
name: hoe
|
205
199
|
requirement: !ruby/object:Gem::Requirement
|
206
200
|
requirements:
|
207
201
|
- - "~>"
|
208
202
|
- !ruby/object:Gem::Version
|
209
|
-
version: '3.
|
203
|
+
version: '3.23'
|
210
204
|
type: :development
|
211
205
|
prerelease: false
|
212
206
|
version_requirements: !ruby/object:Gem::Requirement
|
213
207
|
requirements:
|
214
208
|
- - "~>"
|
215
209
|
- !ruby/object:Gem::Version
|
216
|
-
version: '3.
|
210
|
+
version: '3.23'
|
217
211
|
description: A regression testing tool ensure that new problems and unexpected behaviors
|
218
212
|
will not be introduced to PMD project after fixing an issue , and new rules can
|
219
213
|
work as expected.
|
@@ -230,8 +224,7 @@ extra_rdoc_files:
|
|
230
224
|
- README.rdoc
|
231
225
|
files:
|
232
226
|
- ".ci/build.sh"
|
233
|
-
- ".ci/
|
234
|
-
- ".ci/inc/install-openjdk.inc"
|
227
|
+
- ".ci/inc/fetch_ci_scripts.bash"
|
235
228
|
- ".ci/manual-integration-tests.sh"
|
236
229
|
- ".github/workflows/build.yml"
|
237
230
|
- ".github/workflows/manual-integration-tests.yml"
|
@@ -252,6 +245,7 @@ files:
|
|
252
245
|
- config/project-list.xml
|
253
246
|
- config/projectlist_1_0_0.xsd
|
254
247
|
- config/projectlist_1_1_0.xsd
|
248
|
+
- config/projectlist_1_2_0.xsd
|
255
249
|
- lib/pmdtester.rb
|
256
250
|
- lib/pmdtester/builders/liquid_renderer.rb
|
257
251
|
- lib/pmdtester/builders/pmd_report_builder.rb
|
@@ -275,6 +269,7 @@ files:
|
|
275
269
|
- lib/pmdtester/report_diff.rb
|
276
270
|
- lib/pmdtester/resource_locator.rb
|
277
271
|
- lib/pmdtester/runner.rb
|
272
|
+
- lib/pmdtester/semver.rb
|
278
273
|
- pmdtester.gemspec
|
279
274
|
- resources/_includes/diff_pill_row.html
|
280
275
|
- resources/css/bootstrap.min.css
|
@@ -289,6 +284,7 @@ files:
|
|
289
284
|
- resources/js/project-report.js
|
290
285
|
- resources/project_diff_report.html
|
291
286
|
- resources/project_index.html
|
287
|
+
- resources/project_pmd_report.html
|
292
288
|
homepage: https://pmd.github.io
|
293
289
|
licenses:
|
294
290
|
- BSD-2-Clause
|
data/.ci/files/env.gpg
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
�
|
data/.ci/inc/install-openjdk.inc
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
|
2
|
-
function install_openjdk() {
|
3
|
-
OPENJDK_VERSION=$1
|
4
|
-
echo "Installing OpenJDK ${OPENJDK_VERSION}"
|
5
|
-
JDK_OS=linux
|
6
|
-
COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java
|
7
|
-
DOWNLOAD_URL=$(curl --silent -X GET "https://api.adoptopenjdk.net/v3/assets/feature_releases/${OPENJDK_VERSION}/ga?architecture=x64&heap_size=normal&image_type=jdk&jvm_impl=hotspot&os=${JDK_OS}&page=0&page_size=1&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=adoptopenjdk" \
|
8
|
-
-H "accept: application/json" \
|
9
|
-
| jq -r ".[0].binaries[0].package.link")
|
10
|
-
OPENJDK_ARCHIVE=$(basename ${DOWNLOAD_URL})
|
11
|
-
CACHE_DIR=${HOME}/.cache/openjdk
|
12
|
-
TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION}
|
13
|
-
mkdir -p ${CACHE_DIR}
|
14
|
-
mkdir -p ${TARGET_DIR}
|
15
|
-
if [ ! -e ${CACHE_DIR}/${OPENJDK_ARCHIVE} ]; then
|
16
|
-
echo "Downloading from ${DOWNLOAD_URL} to ${CACHE_DIR}"
|
17
|
-
curl --location --output ${CACHE_DIR}/${OPENJDK_ARCHIVE} "${DOWNLOAD_URL}"
|
18
|
-
else
|
19
|
-
echo "Skipped download, file ${CACHE_DIR}/${OPENJDK_ARCHIVE} already exists"
|
20
|
-
fi
|
21
|
-
tar --extract --file ${CACHE_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=${COMPONENTS_TO_STRIP}
|
22
|
-
export JAVA_HOME="${TARGET_DIR}"
|
23
|
-
export PATH="${TARGET_DIR}/bin:${PATH}"
|
24
|
-
java -version
|
25
|
-
echo "Java is available at ${TARGET_DIR}"
|
26
|
-
}
|