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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/build.sh +87 -55
  3. data/.ci/inc/fetch_ci_scripts.bash +19 -0
  4. data/.ci/manual-integration-tests.sh +31 -14
  5. data/.github/workflows/build.yml +26 -9
  6. data/.github/workflows/manual-integration-tests.yml +24 -8
  7. data/.hoerc +1 -1
  8. data/.rubocop.yml +3 -0
  9. data/History.md +31 -0
  10. data/Manifest.txt +4 -2
  11. data/README.rdoc +26 -25
  12. data/Rakefile +11 -6
  13. data/config/project-list.xml +8 -7
  14. data/config/projectlist_1_2_0.xsd +39 -0
  15. data/lib/pmdtester/builders/liquid_renderer.rb +60 -3
  16. data/lib/pmdtester/builders/pmd_report_builder.rb +9 -3
  17. data/lib/pmdtester/builders/project_builder.rb +14 -9
  18. data/lib/pmdtester/builders/project_hasher.rb +41 -39
  19. data/lib/pmdtester/builders/rule_set_builder.rb +116 -75
  20. data/lib/pmdtester/builders/summary_report_builder.rb +1 -0
  21. data/lib/pmdtester/parsers/options.rb +5 -0
  22. data/lib/pmdtester/parsers/pmd_report_document.rb +1 -3
  23. data/lib/pmdtester/parsers/projects_parser.rb +1 -1
  24. data/lib/pmdtester/pmd_branch_detail.rb +6 -0
  25. data/lib/pmdtester/pmd_tester_utils.rb +1 -0
  26. data/lib/pmdtester/pmd_violation.rb +11 -1
  27. data/lib/pmdtester/project.rb +24 -11
  28. data/lib/pmdtester/report_diff.rb +20 -4
  29. data/lib/pmdtester/runner.rb +8 -3
  30. data/lib/pmdtester/semver.rb +36 -0
  31. data/lib/pmdtester.rb +2 -1
  32. data/pmdtester.gemspec +18 -18
  33. data/resources/css/pmd-tester.css +17 -1
  34. data/resources/js/code-snippets.js +48 -15
  35. data/resources/js/project-report.js +5 -3
  36. data/resources/project_diff_report.html +9 -0
  37. data/resources/project_index.html +11 -0
  38. data/resources/project_pmd_report.html +186 -0
  39. metadata +26 -30
  40. data/.ci/files/env.gpg +0 -1
  41. 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.1.2
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: 2021-04-20 00:00:00.000000000 Z
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.11.0.rc4
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.11.0.rc4
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.5'
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.5'
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: '4.0'
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: '4.0'
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.81'
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.81'
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.2'
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.2'
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: '7'
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: '7'
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.22'
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.22'
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/files/env.gpg"
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
-
@@ -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
- }