pmdtester 1.6.2 → 1.7.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/.github/dependabot.yml +12 -0
- data/.github/workflows/build.yml +7 -7
- data/.github/workflows/manual-integration-tests.yml +7 -7
- data/.github/workflows/publish-release.yml +9 -9
- data/.hoerc +1 -1
- data/.rubocop_todo.yml +1 -14
- data/.vscode/launch.json +32 -0
- data/History.md +47 -0
- data/Manifest.txt +13 -0
- data/README.rdoc +76 -30
- data/Rakefile +11 -11
- data/config/custom.jfc +1126 -0
- data/config/project-list-with-cpd.xml +268 -0
- data/config/projectlist_1_2_0.xsd +1 -1
- data/config/projectlist_1_3_0.xsd +53 -0
- data/lib/pmdtester/builders/cpd_project_hasher.rb +70 -0
- data/lib/pmdtester/builders/liquid_renderer.rb +111 -16
- data/lib/pmdtester/builders/pmd_report_builder.rb +133 -37
- data/lib/pmdtester/builders/project_hasher.rb +24 -25
- data/lib/pmdtester/builders/rule_set_builder.rb +2 -0
- data/lib/pmdtester/builders/summary_report_builder.rb +6 -1
- data/lib/pmdtester/cmd.rb +16 -7
- data/lib/pmdtester/cpd_report_diff.rb +99 -0
- data/lib/pmdtester/jfr_summary.rb +119 -0
- data/lib/pmdtester/location.rb +38 -0
- data/lib/pmdtester/parsers/cpd_report_document.rb +241 -0
- data/lib/pmdtester/parsers/options.rb +19 -0
- data/lib/pmdtester/parsers/pmd_report_document.rb +14 -1
- data/lib/pmdtester/parsers/projects_parser.rb +1 -1
- data/lib/pmdtester/pmd_branch_detail.rb +29 -9
- data/lib/pmdtester/pmd_report_detail.rb +54 -13
- data/lib/pmdtester/pmd_tester_utils.rb +45 -17
- data/lib/pmdtester/pmd_violation.rb +15 -6
- data/lib/pmdtester/project.rb +63 -3
- data/lib/pmdtester/report_diff.rb +5 -13
- data/lib/pmdtester/runner.rb +185 -37
- data/lib/pmdtester/system_info.rb +58 -0
- data/lib/pmdtester/word_differ.rb +132 -0
- data/lib/pmdtester.rb +8 -1
- data/pmdtester.gemspec +17 -17
- data/resources/css/pmd-tester.css +15 -0
- data/resources/js/project-report.js +293 -112
- data/resources/project_cpd_report.html +144 -0
- data/resources/project_diff_report.html +151 -18
- data/resources/project_index.html +12 -3
- data/resources/project_pmd_report.html +17 -2
- metadata +63 -43
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
<script src="../js/datatables.min.js"></script>
|
|
15
15
|
<script src="../js/code-snippets.js"></script>
|
|
16
16
|
<!-- This is generated -->
|
|
17
|
-
<script src="./
|
|
18
|
-
|
|
17
|
+
<script src="./diff_pmd_data.js"></script>
|
|
18
|
+
<script src="./diff_cpd_data.js"></script>
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
21
21
|
<div class="section">
|
|
@@ -60,28 +60,100 @@
|
|
|
60
60
|
</td>
|
|
61
61
|
</tr>
|
|
62
62
|
<tr>
|
|
63
|
-
<td class="item">
|
|
64
|
-
<td class="base">{{
|
|
65
|
-
<td class="patch">{{
|
|
66
|
-
<td class="diff">
|
|
63
|
+
<td class="item"><a href="#section-duplications">Duplications</a></td>
|
|
64
|
+
<td class="base">{{cpd_diff.duplication_counts.base_total}}</td>
|
|
65
|
+
<td class="patch">{{cpd_diff.duplication_counts.patch_total}}</td>
|
|
66
|
+
<td class="diff">
|
|
67
|
+
{% include 'diff_pill_row' h: cpd_diff.duplication_counts %}
|
|
68
|
+
</td>
|
|
67
69
|
</tr>
|
|
68
70
|
<tr>
|
|
69
|
-
<td class="item">
|
|
70
|
-
<td class="base">{{
|
|
71
|
-
<td class="patch">{{
|
|
72
|
-
<td class="diff"
|
|
71
|
+
<td class="item"><a href="#section-cpd-errors">CPD Errors</a></td>
|
|
72
|
+
<td class="base">{{cpd_diff.error_counts.base_total}}</td>
|
|
73
|
+
<td class="patch">{{cpd_diff.error_counts.patch_total}}</td>
|
|
74
|
+
<td class="diff">
|
|
75
|
+
{% include 'diff_pill_row' h: cpd_diff.error_counts %}
|
|
76
|
+
</td>
|
|
73
77
|
</tr>
|
|
74
78
|
<tr>
|
|
75
|
-
<td class="item">
|
|
76
|
-
<td class="base">
|
|
77
|
-
|
|
78
|
-
|
|
79
|
+
<td class="item">PMD Details</td>
|
|
80
|
+
<td class="base">
|
|
81
|
+
<small>
|
|
82
|
+
Timestamp: {{diff.base_details.timestamp}}<br>
|
|
83
|
+
<details><summary>Command:</summary><code>{{diff.base_details.cmdline}}</code></details><br>
|
|
84
|
+
Exit Code: {{diff.base_details.exit_code}}<br>
|
|
85
|
+
Execution Time: {{diff.base_details.execution_time}}<br>
|
|
86
|
+
<a href="base_pmd_stdout.txt">stdout</a> | <a href="base_pmd_stderr.txt">stderr</a>{% if diff.base_details.oom %} ⚠️ OOM occurred{% endif %}<br>
|
|
87
|
+
<a href="base_pmd_report.html">Base PMD Report</a><br>
|
|
88
|
+
<a href="base_pmd_recording.jfr">JFR Recording</a><br>
|
|
89
|
+
<details><summary>JFR Details</summary>
|
|
90
|
+
Execution Time: {{diff.base_details.jfr_summary.execution_time}}<br>
|
|
91
|
+
Max Heap Memory: {{diff.base_details.jfr_summary.max_heap_memory}}<br>
|
|
92
|
+
Max CPU Load: {{diff.base_details.jfr_summary.max_cpu_load}}<br>
|
|
93
|
+
Avg CPU Load: {{diff.base_details.jfr_summary.avg_cpu_load}}<br>
|
|
94
|
+
</details>
|
|
95
|
+
</small>
|
|
96
|
+
</td>
|
|
97
|
+
<td class="patch">
|
|
98
|
+
<small>
|
|
99
|
+
Timestamp: {{diff.patch_details.timestamp}}<br>
|
|
100
|
+
<details><summary>Command:</summary><code>{{diff.patch_details.cmdline}}</code></details><br>
|
|
101
|
+
Exit Code: {{diff.patch_details.exit_code}}<br>
|
|
102
|
+
Execution Time: {{diff.patch_details.execution_time}}<br>
|
|
103
|
+
<a href="patch_pmd_stdout.txt">stdout</a> | <a href="patch_pmd_stderr.txt">stderr</a>{% if diff.patch_details.oom %} ⚠️ OOM occurred{% endif %}<br>
|
|
104
|
+
<a href="patch_pmd_report.html">Patch PMD Report</a><br>
|
|
105
|
+
<a href="patch_pmd_recording.jfr">JFR Recording</a><br>
|
|
106
|
+
<details><summary>JFR Details</summary>
|
|
107
|
+
Execution Time: {{diff.patch_details.jfr_summary.execution_time}}<br>
|
|
108
|
+
Max Heap Memory: {{diff.patch_details.jfr_summary.max_heap_memory}}<br>
|
|
109
|
+
Max CPU Load: {{diff.patch_details.jfr_summary.max_cpu_load}}<br>
|
|
110
|
+
Avg CPU Load: {{diff.patch_details.jfr_summary.avg_cpu_load}}<br>
|
|
111
|
+
</details>
|
|
112
|
+
</small>
|
|
113
|
+
</td>
|
|
114
|
+
<td class="diff">
|
|
115
|
+
<small>Execution Time: {{diff.diff_execution_time}}</small>
|
|
116
|
+
</td>
|
|
79
117
|
</tr>
|
|
80
118
|
<tr>
|
|
81
|
-
<td class="item">
|
|
82
|
-
<td class="base"
|
|
83
|
-
|
|
84
|
-
|
|
119
|
+
<td class="item">CPD Details</td>
|
|
120
|
+
<td class="base">
|
|
121
|
+
<small>
|
|
122
|
+
Timestamp: {{cpd_diff.base_details.timestamp}}<br>
|
|
123
|
+
<details><summary>Command:</summary><code>{{cpd_diff.base_details.cmdline}}</code></details><br>
|
|
124
|
+
Exit Code: {{cpd_diff.base_details.exit_code}}<br>
|
|
125
|
+
Execution Time: {{cpd_diff.base_details.execution_time}}<br>
|
|
126
|
+
<a href="base_cpd_stdout.txt">stdout</a> | <a href="base_cpd_stderr.txt">stderr</a>{% if cpd_diff.base_details.oom %} ⚠️ OOM occurred{% endif %}<br>
|
|
127
|
+
<a href="base_cpd_report.html">Base CPD Report</a><br>
|
|
128
|
+
<a href="base_cpd_recording.jfr">JFR Recording</a><br>
|
|
129
|
+
<details><summary>JFR Details</summary>
|
|
130
|
+
Execution Time: {{cpd_diff.base_details.jfr_summary.execution_time}}<br>
|
|
131
|
+
Max Heap Memory: {{cpd_diff.base_details.jfr_summary.max_heap_memory}}<br>
|
|
132
|
+
Max CPU Load: {{cpd_diff.base_details.jfr_summary.max_cpu_load}}<br>
|
|
133
|
+
Avg CPU Load: {{cpd_diff.base_details.jfr_summary.avg_cpu_load}}<br>
|
|
134
|
+
</details>
|
|
135
|
+
</small>
|
|
136
|
+
</td>
|
|
137
|
+
<td class="patch">
|
|
138
|
+
<small>
|
|
139
|
+
Timestamp: {{cpd_diff.patch_details.timestamp}}<br>
|
|
140
|
+
<details><summary>Command:</summary><code>{{cpd_diff.patch_details.cmdline}}</code></details><br>
|
|
141
|
+
Exit Code: {{cpd_diff.patch_details.exit_code}}<br>
|
|
142
|
+
Execution Time: {{cpd_diff.patch_details.execution_time}}<br>
|
|
143
|
+
<a href="patch_cpd_stdout.txt">stdout</a> | <a href="patch_cpd_stderr.txt">stderr</a>{% if cpd_diff.patch_details.oom %} ⚠️ OOM occurred{% endif %}<br>
|
|
144
|
+
<a href="patch_cpd_report.html">Patch CPD Report</a><br>
|
|
145
|
+
<a href="patch_cpd_recording.jfr">JFR Recording</a><br>
|
|
146
|
+
<details><summary>JFR Details</summary>
|
|
147
|
+
Execution Time: {{cpd_diff.patch_details.jfr_summary.execution_time}}<br>
|
|
148
|
+
Max Heap Memory: {{cpd_diff.patch_details.jfr_summary.max_heap_memory}}<br>
|
|
149
|
+
Max CPU Load: {{cpd_diff.patch_details.jfr_summary.max_cpu_load}}<br>
|
|
150
|
+
Avg CPU Load: {{cpd_diff.patch_details.jfr_summary.avg_cpu_load}}<br>
|
|
151
|
+
</details>
|
|
152
|
+
</small>
|
|
153
|
+
</td>
|
|
154
|
+
<td class="diff">
|
|
155
|
+
<small>Execution Time: {{cpd_diff.diff_execution_time}}</small>
|
|
156
|
+
</td>
|
|
85
157
|
</tr>
|
|
86
158
|
</tbody>
|
|
87
159
|
</table>
|
|
@@ -214,6 +286,67 @@
|
|
|
214
286
|
</div>
|
|
215
287
|
</div>
|
|
216
288
|
|
|
289
|
+
<div class="section" id="section-duplications">
|
|
290
|
+
|
|
291
|
+
<h2>Duplications</h2>
|
|
292
|
+
|
|
293
|
+
<div class="section-content">
|
|
294
|
+
|
|
295
|
+
<table id="duplicationsTable" width="100%" class="table">
|
|
296
|
+
<thead>
|
|
297
|
+
<tr>
|
|
298
|
+
<th>Location (click row to expand)</th>
|
|
299
|
+
<th>Lines</th>
|
|
300
|
+
<th>Tokens</th>
|
|
301
|
+
<th>Code Fragment</th>
|
|
302
|
+
<th>Type</th>
|
|
303
|
+
</tr>
|
|
304
|
+
</thead>
|
|
305
|
+
</table>
|
|
306
|
+
|
|
307
|
+
</div>
|
|
308
|
+
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<div class="section" id="section-cpd-errors">
|
|
312
|
+
|
|
313
|
+
<h2>CPD Errors</h2>
|
|
314
|
+
|
|
315
|
+
<div class="section-content">
|
|
316
|
+
|
|
317
|
+
<div class="table-responsive">
|
|
318
|
+
<table id="cpd-error-table" class="table">
|
|
319
|
+
<thead>
|
|
320
|
+
<tr>
|
|
321
|
+
<th>File</th>
|
|
322
|
+
<th>Description (click to expand)</th>
|
|
323
|
+
</tr>
|
|
324
|
+
</thead>
|
|
325
|
+
<tbody>
|
|
326
|
+
{% for error in cpd_error_diffs %}
|
|
327
|
+
<tr id="cpd-error-{{forloop.index}}" class="{{error.change_type}}" data-bs-toggle="collapse" data-bs-target="#cpd-error-{{forloop.index}}-expanded">
|
|
328
|
+
<td><a href="{{error.file_url}}" target="_blank" rel="noopener noreferrer">{{error.short_filename}}</a></td>
|
|
329
|
+
<td>{{error.short_message | escape | replace: error.filename, "<span class='meta-var'>$FILE</span>" }}</td>
|
|
330
|
+
</tr>
|
|
331
|
+
<tr>
|
|
332
|
+
<td class="row-hidden" colspan="2">
|
|
333
|
+
<div class="accordion-body collapse" id="cpd-error-{{forloop.index}}-expanded">
|
|
334
|
+
<div class="collapsed-content-padder">
|
|
335
|
+
<pre>
|
|
336
|
+
{{ error.stack_trace_html }}
|
|
337
|
+
</pre>
|
|
338
|
+
</div>
|
|
339
|
+
</div>
|
|
340
|
+
</td>
|
|
341
|
+
</tr>
|
|
342
|
+
{% endfor %}
|
|
343
|
+
</tbody>
|
|
344
|
+
</table>
|
|
345
|
+
</div>
|
|
346
|
+
|
|
347
|
+
</div>
|
|
348
|
+
</div>
|
|
349
|
+
|
|
217
350
|
<script src="../js/project-report.js"></script>
|
|
218
351
|
|
|
219
352
|
</body>
|
|
@@ -58,6 +58,11 @@
|
|
|
58
58
|
<td class="base">{{base.jdk_info | escape }}</td>
|
|
59
59
|
<td class="patch">{{patch.jdk_info | escape }}</td>
|
|
60
60
|
</tr>
|
|
61
|
+
<tr>
|
|
62
|
+
<td class="item">System Info</td>
|
|
63
|
+
<td class="base">{{base.cpu_info | escape}}<br>Memory: {{base.physical_memory | escape }}<br>OS: {{base.os_info | escape }}</td>
|
|
64
|
+
<td class="patch">{{patch.cpu_info | escape}}<br>Memory: {{patch.physical_memory | escape }}<br>OS: {{patch.os_info | escape }}</td>
|
|
65
|
+
</tr>
|
|
61
66
|
<tr>
|
|
62
67
|
<td class="item">Locale</td>
|
|
63
68
|
<td class="base">{{base.locale | escape }}</td>
|
|
@@ -89,6 +94,8 @@
|
|
|
89
94
|
<th>Violation diff</th>
|
|
90
95
|
<th>Error diff</th>
|
|
91
96
|
<th>ConfigError diff</th>
|
|
97
|
+
<th>Duplication diff</th>
|
|
98
|
+
<th>CPD Error diff</th>
|
|
92
99
|
</tr>
|
|
93
100
|
</thead>
|
|
94
101
|
<tbody>
|
|
@@ -99,9 +106,11 @@
|
|
|
99
106
|
<tr>
|
|
100
107
|
<td class="project-header"><a href="{{ project.report_url }}">{{ project.name }}</a></td>
|
|
101
108
|
<td>{{ project.tag }}</td>
|
|
102
|
-
<td>{% include 'diff_pill_row' h: project.violation_counts %}</td>
|
|
103
|
-
<td>{% include 'diff_pill_row' h: project.error_counts %}</td>
|
|
104
|
-
<td>{% include 'diff_pill_row' h: project.configerror_counts %}</td>
|
|
109
|
+
<td>{% include 'diff_pill_row' h: project.pmd_report.violation_counts %}</td>
|
|
110
|
+
<td>{% include 'diff_pill_row' h: project.pmd_report.error_counts %}</td>
|
|
111
|
+
<td>{% include 'diff_pill_row' h: project.pmd_report.configerror_counts %}</td>
|
|
112
|
+
<td>{% include 'diff_pill_row' h: project.cpd_report.duplication_counts %}</td>
|
|
113
|
+
<td>{% include 'diff_pill_row' h: project.cpd_report.error_counts %}</td>
|
|
105
114
|
</tr>
|
|
106
115
|
{% endfor %}
|
|
107
116
|
</tbody>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<script src="../js/datatables.min.js"></script>
|
|
15
15
|
<script src="../js/code-snippets.js"></script>
|
|
16
16
|
<!-- This is generated -->
|
|
17
|
-
<script src="./{{branch}}
|
|
17
|
+
<script src="./{{branch}}_pmd_data.js"></script>
|
|
18
18
|
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
@@ -55,12 +55,27 @@
|
|
|
55
55
|
</tr>
|
|
56
56
|
<tr>
|
|
57
57
|
<td class="item">Exit Code</td>
|
|
58
|
-
<td class="{{branch}}">{{report.exit_code}} <a href="{{branch}}
|
|
58
|
+
<td class="{{branch}}">{{report.exit_code}} <a href="{{branch}}_pmd_stdout.txt">stdout</a> | <a href="{{branch}}_pmd_stderr.txt">stderr</a></td>
|
|
59
59
|
</tr>
|
|
60
60
|
<tr>
|
|
61
61
|
<td class="item">Full Report</td>
|
|
62
62
|
<td class="{{branch}}"><a href="{{branch}}_pmd_report.xml">{{branch}}_pmd_report.xml</a></td>
|
|
63
63
|
</tr>
|
|
64
|
+
<tr>
|
|
65
|
+
<td class="item">JFR Recording</td>
|
|
66
|
+
<td class="{{branch}}"><a href="{{branch}}_pmd_recording.jfr">{{branch}}_pmd_recording.jfr</a></td>
|
|
67
|
+
</tr>
|
|
68
|
+
<tr>
|
|
69
|
+
<td class="item">JFR Details</td>
|
|
70
|
+
<td class="{{branch}}">
|
|
71
|
+
<details><summary>Details</summary>
|
|
72
|
+
Execution Time: {{report.jfr_summary.execution_time}}<br>
|
|
73
|
+
Max Heap Memory: {{report.jfr_summary.max_heap_memory}}<br>
|
|
74
|
+
Max CPU Load: {{report.jfr_summary.max_cpu_load}}<br>
|
|
75
|
+
Avg CPU Load: {{report.jfr_summary.avg_cpu_load}}<br>
|
|
76
|
+
</details>
|
|
77
|
+
</td>
|
|
78
|
+
</tr>
|
|
64
79
|
</tbody>
|
|
65
80
|
</table>
|
|
66
81
|
</div>
|
metadata
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pmdtester
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andreas Dangel
|
|
8
8
|
- Binguo Bao
|
|
9
9
|
- Clément Fournier
|
|
10
|
-
autorequire:
|
|
11
10
|
bindir: bin
|
|
12
11
|
cert_chain: []
|
|
13
12
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
@@ -18,14 +17,14 @@ dependencies:
|
|
|
18
17
|
requirements:
|
|
19
18
|
- - "~>"
|
|
20
19
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '1.
|
|
20
|
+
version: '1.19'
|
|
22
21
|
type: :runtime
|
|
23
22
|
prerelease: false
|
|
24
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
24
|
requirements:
|
|
26
25
|
- - "~>"
|
|
27
26
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: '1.
|
|
27
|
+
version: '1.19'
|
|
29
28
|
- !ruby/object:Gem::Dependency
|
|
30
29
|
name: slop
|
|
31
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -40,20 +39,6 @@ dependencies:
|
|
|
40
39
|
- - "~>"
|
|
41
40
|
- !ruby/object:Gem::Version
|
|
42
41
|
version: '4.10'
|
|
43
|
-
- !ruby/object:Gem::Dependency
|
|
44
|
-
name: differ
|
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
|
46
|
-
requirements:
|
|
47
|
-
- - "~>"
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: '0.1'
|
|
50
|
-
type: :runtime
|
|
51
|
-
prerelease: false
|
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
-
requirements:
|
|
54
|
-
- - "~>"
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '0.1'
|
|
57
42
|
- !ruby/object:Gem::Dependency
|
|
58
43
|
name: rufus-scheduler
|
|
59
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -74,28 +59,28 @@ dependencies:
|
|
|
74
59
|
requirements:
|
|
75
60
|
- - "~>"
|
|
76
61
|
- !ruby/object:Gem::Version
|
|
77
|
-
version: '1.
|
|
62
|
+
version: '1.1'
|
|
78
63
|
type: :runtime
|
|
79
64
|
prerelease: false
|
|
80
65
|
version_requirements: !ruby/object:Gem::Requirement
|
|
81
66
|
requirements:
|
|
82
67
|
- - "~>"
|
|
83
68
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '1.
|
|
69
|
+
version: '1.1'
|
|
85
70
|
- !ruby/object:Gem::Dependency
|
|
86
71
|
name: liquid
|
|
87
72
|
requirement: !ruby/object:Gem::Requirement
|
|
88
73
|
requirements:
|
|
89
74
|
- - "~>"
|
|
90
75
|
- !ruby/object:Gem::Version
|
|
91
|
-
version: '5.
|
|
76
|
+
version: '5.11'
|
|
92
77
|
type: :runtime
|
|
93
78
|
prerelease: false
|
|
94
79
|
version_requirements: !ruby/object:Gem::Requirement
|
|
95
80
|
requirements:
|
|
96
81
|
- - "~>"
|
|
97
82
|
- !ruby/object:Gem::Version
|
|
98
|
-
version: '5.
|
|
83
|
+
version: '5.11'
|
|
99
84
|
- !ruby/object:Gem::Dependency
|
|
100
85
|
name: base64
|
|
101
86
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -116,14 +101,14 @@ dependencies:
|
|
|
116
101
|
requirements:
|
|
117
102
|
- - "~>"
|
|
118
103
|
- !ruby/object:Gem::Version
|
|
119
|
-
version: '
|
|
104
|
+
version: '4.0'
|
|
120
105
|
type: :runtime
|
|
121
106
|
prerelease: false
|
|
122
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
123
108
|
requirements:
|
|
124
109
|
- - "~>"
|
|
125
110
|
- !ruby/object:Gem::Version
|
|
126
|
-
version: '
|
|
111
|
+
version: '4.0'
|
|
127
112
|
- !ruby/object:Gem::Dependency
|
|
128
113
|
name: logger
|
|
129
114
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -172,42 +157,42 @@ dependencies:
|
|
|
172
157
|
requirements:
|
|
173
158
|
- - "~>"
|
|
174
159
|
- !ruby/object:Gem::Version
|
|
175
|
-
version: '
|
|
160
|
+
version: '6.0'
|
|
176
161
|
type: :development
|
|
177
162
|
prerelease: false
|
|
178
163
|
version_requirements: !ruby/object:Gem::Requirement
|
|
179
164
|
requirements:
|
|
180
165
|
- - "~>"
|
|
181
166
|
- !ruby/object:Gem::Version
|
|
182
|
-
version: '
|
|
167
|
+
version: '6.0'
|
|
183
168
|
- !ruby/object:Gem::Dependency
|
|
184
169
|
name: mocha
|
|
185
170
|
requirement: !ruby/object:Gem::Requirement
|
|
186
171
|
requirements:
|
|
187
172
|
- - "~>"
|
|
188
173
|
- !ruby/object:Gem::Version
|
|
189
|
-
version: '
|
|
174
|
+
version: '3.0'
|
|
190
175
|
type: :development
|
|
191
176
|
prerelease: false
|
|
192
177
|
version_requirements: !ruby/object:Gem::Requirement
|
|
193
178
|
requirements:
|
|
194
179
|
- - "~>"
|
|
195
180
|
- !ruby/object:Gem::Version
|
|
196
|
-
version: '
|
|
181
|
+
version: '3.0'
|
|
197
182
|
- !ruby/object:Gem::Dependency
|
|
198
183
|
name: rubocop
|
|
199
184
|
requirement: !ruby/object:Gem::Requirement
|
|
200
185
|
requirements:
|
|
201
186
|
- - "~>"
|
|
202
187
|
- !ruby/object:Gem::Version
|
|
203
|
-
version: '1.
|
|
188
|
+
version: '1.84'
|
|
204
189
|
type: :development
|
|
205
190
|
prerelease: false
|
|
206
191
|
version_requirements: !ruby/object:Gem::Requirement
|
|
207
192
|
requirements:
|
|
208
193
|
- - "~>"
|
|
209
194
|
- !ruby/object:Gem::Version
|
|
210
|
-
version: '1.
|
|
195
|
+
version: '1.84'
|
|
211
196
|
- !ruby/object:Gem::Dependency
|
|
212
197
|
name: test-unit
|
|
213
198
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -228,14 +213,14 @@ dependencies:
|
|
|
228
213
|
requirements:
|
|
229
214
|
- - "~>"
|
|
230
215
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: '
|
|
216
|
+
version: '7.2'
|
|
232
217
|
type: :development
|
|
233
218
|
prerelease: false
|
|
234
219
|
version_requirements: !ruby/object:Gem::Requirement
|
|
235
220
|
requirements:
|
|
236
221
|
- - "~>"
|
|
237
222
|
- !ruby/object:Gem::Version
|
|
238
|
-
version: '
|
|
223
|
+
version: '7.2'
|
|
239
224
|
- !ruby/object:Gem::Dependency
|
|
240
225
|
name: rake
|
|
241
226
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -256,17 +241,41 @@ dependencies:
|
|
|
256
241
|
requirements:
|
|
257
242
|
- - "~>"
|
|
258
243
|
- !ruby/object:Gem::Version
|
|
259
|
-
version: '4.
|
|
244
|
+
version: '4.6'
|
|
245
|
+
type: :development
|
|
246
|
+
prerelease: false
|
|
247
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
248
|
+
requirements:
|
|
249
|
+
- - "~>"
|
|
250
|
+
- !ruby/object:Gem::Version
|
|
251
|
+
version: '4.6'
|
|
252
|
+
- !ruby/object:Gem::Dependency
|
|
253
|
+
name: debug
|
|
254
|
+
requirement: !ruby/object:Gem::Requirement
|
|
255
|
+
requirements:
|
|
256
|
+
- - "~>"
|
|
257
|
+
- !ruby/object:Gem::Version
|
|
258
|
+
version: '1.11'
|
|
260
259
|
type: :development
|
|
261
260
|
prerelease: false
|
|
262
261
|
version_requirements: !ruby/object:Gem::Requirement
|
|
263
262
|
requirements:
|
|
264
263
|
- - "~>"
|
|
265
264
|
- !ruby/object:Gem::Version
|
|
266
|
-
version: '
|
|
267
|
-
description:
|
|
268
|
-
will not be introduced to PMD project after fixing an issue
|
|
269
|
-
work as expected.
|
|
265
|
+
version: '1.11'
|
|
266
|
+
description: |-
|
|
267
|
+
A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue
|
|
268
|
+
and new rules work as expected.
|
|
269
|
+
|
|
270
|
+
== Features/Problems:
|
|
271
|
+
|
|
272
|
+
The diff report can be generated according to the base and patch branch of PMD
|
|
273
|
+
on a list of standard projects (e.g. Spring Framework, Checkstyle, OpenJDK, etc.).
|
|
274
|
+
|
|
275
|
+
Rule violations and code duplications are compared to report, which are new, removed or changed.
|
|
276
|
+
|
|
277
|
+
While executing PMD, JDK Flight Recorder (jfr) is enabled and a recording is created. This allows to investigate
|
|
278
|
+
performance and memory issues afterwards.
|
|
270
279
|
email:
|
|
271
280
|
- andreas.dangel@pmd-code.org
|
|
272
281
|
- djydewang@gmail.com
|
|
@@ -280,6 +289,7 @@ extra_rdoc_files:
|
|
|
280
289
|
- README.rdoc
|
|
281
290
|
- resources/js/README.md
|
|
282
291
|
files:
|
|
292
|
+
- ".github/dependabot.yml"
|
|
283
293
|
- ".github/workflows/build-pr.yml"
|
|
284
294
|
- ".github/workflows/build-release.yml"
|
|
285
295
|
- ".github/workflows/build-snapshot.yml"
|
|
@@ -290,6 +300,7 @@ files:
|
|
|
290
300
|
- ".hoerc"
|
|
291
301
|
- ".rubocop.yml"
|
|
292
302
|
- ".rubocop_todo.yml"
|
|
303
|
+
- ".vscode/launch.json"
|
|
293
304
|
- Gemfile
|
|
294
305
|
- History.md
|
|
295
306
|
- LICENSE
|
|
@@ -298,12 +309,16 @@ files:
|
|
|
298
309
|
- Rakefile
|
|
299
310
|
- bin/pmdtester
|
|
300
311
|
- config/all-java.xml
|
|
312
|
+
- config/custom.jfc
|
|
301
313
|
- config/design.xml
|
|
314
|
+
- config/project-list-with-cpd.xml
|
|
302
315
|
- config/project-list.xml
|
|
303
316
|
- config/projectlist_1_0_0.xsd
|
|
304
317
|
- config/projectlist_1_1_0.xsd
|
|
305
318
|
- config/projectlist_1_2_0.xsd
|
|
319
|
+
- config/projectlist_1_3_0.xsd
|
|
306
320
|
- lib/pmdtester.rb
|
|
321
|
+
- lib/pmdtester/builders/cpd_project_hasher.rb
|
|
307
322
|
- lib/pmdtester/builders/liquid_renderer.rb
|
|
308
323
|
- lib/pmdtester/builders/pmd_report_builder.rb
|
|
309
324
|
- lib/pmdtester/builders/project_builder.rb
|
|
@@ -313,6 +328,10 @@ files:
|
|
|
313
328
|
- lib/pmdtester/builders/summary_report_builder.rb
|
|
314
329
|
- lib/pmdtester/cmd.rb
|
|
315
330
|
- lib/pmdtester/collection_by_file.rb
|
|
331
|
+
- lib/pmdtester/cpd_report_diff.rb
|
|
332
|
+
- lib/pmdtester/jfr_summary.rb
|
|
333
|
+
- lib/pmdtester/location.rb
|
|
334
|
+
- lib/pmdtester/parsers/cpd_report_document.rb
|
|
316
335
|
- lib/pmdtester/parsers/options.rb
|
|
317
336
|
- lib/pmdtester/parsers/pmd_report_document.rb
|
|
318
337
|
- lib/pmdtester/parsers/projects_parser.rb
|
|
@@ -327,6 +346,8 @@ files:
|
|
|
327
346
|
- lib/pmdtester/resource_locator.rb
|
|
328
347
|
- lib/pmdtester/runner.rb
|
|
329
348
|
- lib/pmdtester/semver.rb
|
|
349
|
+
- lib/pmdtester/system_info.rb
|
|
350
|
+
- lib/pmdtester/word_differ.rb
|
|
330
351
|
- pmdtester.gemspec
|
|
331
352
|
- resources/_includes/diff_pill_row.html
|
|
332
353
|
- resources/css/bootstrap-5.3.0-alpha3.min.css
|
|
@@ -340,6 +361,7 @@ files:
|
|
|
340
361
|
- resources/js/popper-2.11.7.min.js
|
|
341
362
|
- resources/js/project-report.js
|
|
342
363
|
- resources/maven-settings.xml
|
|
364
|
+
- resources/project_cpd_report.html
|
|
343
365
|
- resources/project_diff_report.html
|
|
344
366
|
- resources/project_index.html
|
|
345
367
|
- resources/project_pmd_report.html
|
|
@@ -350,7 +372,6 @@ metadata:
|
|
|
350
372
|
bug_tracker_uri: https://github.com/pmd/pmd-regression-tester/issues
|
|
351
373
|
homepage_uri: https://pmd.github.io
|
|
352
374
|
source_code_uri: https://github.com/pmd/pmd-regression-tester
|
|
353
|
-
post_install_message:
|
|
354
375
|
rdoc_options:
|
|
355
376
|
- "--main"
|
|
356
377
|
- README.rdoc
|
|
@@ -360,17 +381,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
360
381
|
requirements:
|
|
361
382
|
- - ">="
|
|
362
383
|
- !ruby/object:Gem::Version
|
|
363
|
-
version: '
|
|
384
|
+
version: '4'
|
|
364
385
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
365
386
|
requirements:
|
|
366
387
|
- - ">="
|
|
367
388
|
- !ruby/object:Gem::Version
|
|
368
389
|
version: '0'
|
|
369
390
|
requirements: []
|
|
370
|
-
rubygems_version:
|
|
371
|
-
signing_key:
|
|
391
|
+
rubygems_version: 4.0.6
|
|
372
392
|
specification_version: 4
|
|
373
393
|
summary: A regression testing tool ensure that new problems and unexpected behaviors
|
|
374
|
-
will not be introduced to PMD project after fixing an issue
|
|
375
|
-
|
|
394
|
+
will not be introduced to PMD project after fixing an issue and new rules work as
|
|
395
|
+
expected
|
|
376
396
|
test_files: []
|