pmdtester 1.2.0 → 1.3.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 +2 -2
- data/.ci/manual-integration-tests.sh +2 -2
- data/.github/workflows/build.yml +4 -3
- data/.github/workflows/manual-integration-tests.yml +9 -4
- data/History.md +13 -0
- data/Manifest.txt +1 -0
- data/lib/pmdtester/builders/pmd_report_builder.rb +7 -1
- data/lib/pmdtester/semver.rb +36 -0
- data/lib/pmdtester.rb +2 -1
- data/pmdtester.gemspec +6 -6
- data/resources/css/pmd-tester.css +17 -1
- data/resources/js/code-snippets.js +48 -15
- data/resources/js/project-report.js +3 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ab10c148f66f7b8d8942096da3c67260b0a50bc6f0a7671993f86035186c228
|
4
|
+
data.tar.gz: 11175641f5912e24ea5a623fe105392a9507ec0ad43156e223f8cefeea92bd7f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 543126b2c957bfefdd5d5985e0e6bbca6c7442fb8bb826abda65b86c9dd6956f4d704afb66f9b4fb2080acff72fbc6619bc76f6202919c70b99a55a98dd3a644
|
7
|
+
data.tar.gz: f10d380a93eb631fa5e2c4a60fc73795cfeb3a589002da0655c19900daea6445a2cf5f0ecc449c043594d0dd0fb3b27f4203c5ac442d7539b19b4ab63bd915ea
|
data/.ci/build.sh
CHANGED
@@ -9,8 +9,8 @@ source "$(dirname "$0")/inc/fetch_ci_scripts.bash" && fetch_ci_scripts
|
|
9
9
|
|
10
10
|
function build() {
|
11
11
|
pmd_ci_log_group_start "Install OpenJDK 8+11"
|
12
|
-
|
13
|
-
|
12
|
+
pmd_ci_openjdk_install_adoptium 11
|
13
|
+
pmd_ci_openjdk_install_adoptium 8
|
14
14
|
pmd_ci_openjdk_setdefault 11
|
15
15
|
pmd_ci_log_group_end
|
16
16
|
|
@@ -9,8 +9,8 @@ source "$(dirname "$0")/inc/fetch_ci_scripts.bash" && fetch_ci_scripts
|
|
9
9
|
|
10
10
|
function build() {
|
11
11
|
pmd_ci_log_group_start "Install OpenJDK 8+11"
|
12
|
-
|
13
|
-
|
12
|
+
pmd_ci_openjdk_install_adoptium 11
|
13
|
+
pmd_ci_openjdk_install_adoptium 8
|
14
14
|
pmd_ci_openjdk_setdefault 11
|
15
15
|
pmd_ci_log_group_end
|
16
16
|
|
data/.github/workflows/build.yml
CHANGED
@@ -27,9 +27,9 @@ jobs:
|
|
27
27
|
~/.cache
|
28
28
|
vendor/bundle
|
29
29
|
target/repositories
|
30
|
-
key:
|
30
|
+
key: v1-${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
|
31
31
|
restore-keys: |
|
32
|
-
|
32
|
+
v1-${{ runner.os }}-
|
33
33
|
- name: Set up Ruby 2.7
|
34
34
|
uses: ruby/setup-ruby@v1
|
35
35
|
with:
|
@@ -39,7 +39,7 @@ jobs:
|
|
39
39
|
run: |
|
40
40
|
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
|
41
41
|
echo "MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3" >> $GITHUB_ENV
|
42
|
-
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/
|
42
|
+
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/17/scripts" >> $GITHUB_ENV
|
43
43
|
- name: Check Environment
|
44
44
|
shell: bash
|
45
45
|
run: |
|
@@ -53,3 +53,4 @@ jobs:
|
|
53
53
|
shell: bash
|
54
54
|
env:
|
55
55
|
PMD_CI_SECRET_PASSPHRASE: ${{ secrets.PMD_CI_SECRET_PASSPHRASE }}
|
56
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
@@ -1,6 +1,10 @@
|
|
1
1
|
name: manual-integration-tests
|
2
2
|
|
3
|
-
on:
|
3
|
+
on:
|
4
|
+
schedule:
|
5
|
+
# build it monthly: At 08:30 on day-of-month 1.
|
6
|
+
- cron: '30 8 1 * *'
|
7
|
+
workflow_dispatch:
|
4
8
|
|
5
9
|
jobs:
|
6
10
|
build:
|
@@ -15,9 +19,9 @@ jobs:
|
|
15
19
|
~/.cache
|
16
20
|
vendor/bundle
|
17
21
|
target/repositories
|
18
|
-
key:
|
22
|
+
key: v1-${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
|
19
23
|
restore-keys: |
|
20
|
-
|
24
|
+
v1-${{ runner.os }}-
|
21
25
|
- name: Set up Ruby 2.7
|
22
26
|
uses: ruby/setup-ruby@v1
|
23
27
|
with:
|
@@ -27,7 +31,7 @@ jobs:
|
|
27
31
|
run: |
|
28
32
|
echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
|
29
33
|
echo "MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3" >> $GITHUB_ENV
|
30
|
-
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/
|
34
|
+
echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/17/scripts" >> $GITHUB_ENV
|
31
35
|
- name: Check Environment
|
32
36
|
shell: bash
|
33
37
|
run: |
|
@@ -41,3 +45,4 @@ jobs:
|
|
41
45
|
shell: bash
|
42
46
|
env:
|
43
47
|
PMD_CI_SECRET_PASSPHRASE: ${{ secrets.PMD_CI_SECRET_PASSPHRASE }}
|
48
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
data/History.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 1.3.0 / 2021-12-17
|
2
|
+
|
3
|
+
## Enhancements
|
4
|
+
|
5
|
+
* [#94](https://github.com/pmd/pmd-regression-tester/issues/94): Improve code snippet preview
|
6
|
+
* [#95](https://github.com/pmd/pmd-regression-tester/issues/95): Add length menu for datatable to allow configurable page size
|
7
|
+
|
8
|
+
## Fixed Issues
|
9
|
+
|
10
|
+
* [#86](https://github.com/pmd/pmd-regression-tester/issues/86): Uncaught TypeError: violation is undefined
|
11
|
+
* [#93](https://github.com/pmd/pmd-regression-tester/issues/93): Line numbers > 1000 are not displayed correctly
|
12
|
+
* [#96](https://github.com/pmd/pmd-regression-tester/issues/96): Fix failing integration tests
|
13
|
+
|
1
14
|
# 1.2.0 / 2021-06-20
|
2
15
|
|
3
16
|
## New and Noteworthy
|
data/Manifest.txt
CHANGED
@@ -97,11 +97,12 @@ module PmdTester
|
|
97
97
|
def generate_pmd_report(project)
|
98
98
|
error_recovery_options = @error_recovery ? 'PMD_JAVA_OPTS="-Dpmd.error_recovery -ea" ' : ''
|
99
99
|
run_path = "#{saved_distro_path(@pmd_branch_details.branch_last_sha)}/bin/run.sh"
|
100
|
+
fail_on_violation = should_use_long_cli_options ? '--fail-on-violation false' : '-failOnViolation false'
|
100
101
|
pmd_cmd = "#{error_recovery_options}" \
|
101
102
|
"#{run_path} pmd -d #{project.local_source_path} -f xml " \
|
102
103
|
"-R #{project.get_config_path(@pmd_branch_name)} " \
|
103
104
|
"-r #{project.get_pmd_report_path(@pmd_branch_name)} " \
|
104
|
-
"
|
105
|
+
"#{fail_on_violation} -t #{@threads} " \
|
105
106
|
"#{project.auxclasspath}"
|
106
107
|
start_time = Time.now
|
107
108
|
if File.exist?(project.get_pmd_report_path(@pmd_branch_name))
|
@@ -194,5 +195,10 @@ module PmdTester
|
|
194
195
|
def wd_has_dirty_git_changes
|
195
196
|
!Cmd.execute('git status --porcelain').empty?
|
196
197
|
end
|
198
|
+
|
199
|
+
def should_use_long_cli_options
|
200
|
+
logger.debug "PMD Version: #{@pmd_version}"
|
201
|
+
Semver.compare(@pmd_version, '6.41.0') >= 0
|
202
|
+
end
|
197
203
|
end
|
198
204
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PmdTester
|
4
|
+
# Utility to deal with semantic versions
|
5
|
+
class Semver
|
6
|
+
def self.compare(version_a, version_b)
|
7
|
+
PmdTester.logger.debug "Comparing #{version_a} <=> #{version_b}"
|
8
|
+
m = /(\d+)\.(\d+)\.(\d+)(.*)/.match(version_a)
|
9
|
+
a_major = m[1].to_i
|
10
|
+
a_minor = m[2].to_i
|
11
|
+
a_patch = m[3].to_i
|
12
|
+
a_snapshot = m[4]
|
13
|
+
PmdTester.logger.debug " a_major: #{a_major} a_minor: #{a_minor} a_patch: #{a_patch} a_snapshot: #{a_snapshot}"
|
14
|
+
|
15
|
+
m = /(\d+)\.(\d+)\.(\d+)(.*)/.match(version_b)
|
16
|
+
b_major = m[1].to_i
|
17
|
+
b_minor = m[2].to_i
|
18
|
+
b_patch = m[3].to_i
|
19
|
+
b_snapshot = m[4]
|
20
|
+
PmdTester.logger.debug " b_major: #{b_major} b_minor: #{b_minor} b_patch: #{b_patch} b_snapshot: #{b_snapshot}"
|
21
|
+
|
22
|
+
return a_major <=> b_major if a_major != b_major
|
23
|
+
return a_minor <=> b_minor if a_minor != b_minor
|
24
|
+
return a_patch <=> b_patch if a_patch != b_patch
|
25
|
+
|
26
|
+
compare_snapshots(a_snapshot, b_snapshot)
|
27
|
+
end
|
28
|
+
|
29
|
+
private_class_method def self.compare_snapshots(a_snapshot, b_snapshot)
|
30
|
+
return -1 if a_snapshot == '-SNAPSHOT' && b_snapshot == ''
|
31
|
+
return 1 if a_snapshot == '' && b_snapshot == '-SNAPSHOT'
|
32
|
+
|
33
|
+
a_snapshot <=> b_snapshot
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/pmdtester.rb
CHANGED
@@ -15,6 +15,7 @@ require_relative 'pmdtester/project'
|
|
15
15
|
require_relative 'pmdtester/report_diff'
|
16
16
|
require_relative 'pmdtester/resource_locator'
|
17
17
|
require_relative 'pmdtester/runner'
|
18
|
+
require_relative 'pmdtester/semver'
|
18
19
|
|
19
20
|
require_relative 'pmdtester/builders/simple_progress_logger'
|
20
21
|
require_relative 'pmdtester/builders/project_builder'
|
@@ -32,7 +33,7 @@ require_relative 'pmdtester/parsers/projects_parser'
|
|
32
33
|
# and unexpected behaviors will not be introduced to PMD project
|
33
34
|
# after fixing an issue and new rules can work as expected.
|
34
35
|
module PmdTester
|
35
|
-
VERSION = '1.
|
36
|
+
VERSION = '1.3.0'
|
36
37
|
BASE = 'base'
|
37
38
|
PATCH = 'patch'
|
38
39
|
PR_NUM_ENV_VAR = 'PMD_CI_PULL_REQUEST_NUMBER' # see PmdBranchDetail
|
data/pmdtester.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
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.
|
4
|
+
# stub: pmdtester 1.3.0 ruby lib
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "pmdtester".freeze
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.3.0"
|
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 = "2021-
|
14
|
+
s.date = "2021-12-17"
|
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
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, "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.2.1.slim.min.js".freeze, "resources/js/jquery.min.js".freeze, "resources/js/popper.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]
|
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.2.1.slim.min.js".freeze, "resources/js/jquery.min.js".freeze, "resources/js/popper.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]
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_development_dependency(%q<rubocop>.freeze, ["~> 0.81"])
|
43
43
|
s.add_development_dependency(%q<test-unit>.freeze, ["~> 3.2"])
|
44
44
|
s.add_development_dependency(%q<rdoc>.freeze, [">= 4.0", "< 7"])
|
45
|
-
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.
|
45
|
+
s.add_development_dependency(%q<hoe>.freeze, ["~> 3.23"])
|
46
46
|
else
|
47
47
|
s.add_dependency(%q<nokogiri>.freeze, [">= 1.11.0.rc4"])
|
48
48
|
s.add_dependency(%q<slop>.freeze, ["~> 4.6"])
|
@@ -57,7 +57,7 @@ Gem::Specification.new do |s|
|
|
57
57
|
s.add_dependency(%q<rubocop>.freeze, ["~> 0.81"])
|
58
58
|
s.add_dependency(%q<test-unit>.freeze, ["~> 3.2"])
|
59
59
|
s.add_dependency(%q<rdoc>.freeze, [">= 4.0", "< 7"])
|
60
|
-
s.add_dependency(%q<hoe>.freeze, ["~> 3.
|
60
|
+
s.add_dependency(%q<hoe>.freeze, ["~> 3.23"])
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -10,9 +10,25 @@ code {
|
|
10
10
|
font-size: 13pt;
|
11
11
|
white-space: pre;
|
12
12
|
}
|
13
|
-
code.highlight {
|
13
|
+
code.highlight, tr.highlight {
|
14
14
|
background-color: yellow;
|
15
15
|
}
|
16
|
+
table.code-snippet > tbody > tr > td {
|
17
|
+
padding: 0px;
|
18
|
+
border: none;
|
19
|
+
}
|
20
|
+
table.code-snippet > tbody > tr > td.line-number > code:before {
|
21
|
+
content: attr(data-line-number);
|
22
|
+
}
|
23
|
+
.btn-clipboard {
|
24
|
+
margin-top: 1rem;
|
25
|
+
display: block;
|
26
|
+
padding: .25rem .5rem;
|
27
|
+
color: #0d6efd;
|
28
|
+
background-color: #fff;
|
29
|
+
border: 1px solid;
|
30
|
+
border-radius: .25rem;
|
31
|
+
}
|
16
32
|
a {
|
17
33
|
text-decoration: none;
|
18
34
|
}
|
@@ -15,18 +15,18 @@
|
|
15
15
|
|
16
16
|
// returns text, not html
|
17
17
|
function formatLineNumber(number) {
|
18
|
-
let prefix;
|
18
|
+
let prefix = '';
|
19
19
|
if (number < 10) {
|
20
|
-
prefix =
|
20
|
+
prefix = nbsp.repeat(3);
|
21
21
|
} else if (number < 100) {
|
22
|
-
prefix =
|
22
|
+
prefix = nbsp.repeat(2);
|
23
23
|
} else if (number < 1000) {
|
24
24
|
prefix = nbsp;
|
25
25
|
}
|
26
26
|
return prefix + number;
|
27
27
|
}
|
28
28
|
|
29
|
-
function fetchSnippet(document, container, url,
|
29
|
+
function fetchSnippet(document, container, url, violationLineNumber, weburl) {
|
30
30
|
var weburl, requestUrl, oReq;
|
31
31
|
|
32
32
|
requestUrl = url.replace(/github.com/, "raw.githubusercontent.com");
|
@@ -34,37 +34,70 @@
|
|
34
34
|
|
35
35
|
oReq = new XMLHttpRequest();
|
36
36
|
oReq.addEventListener("load", function() {
|
37
|
-
let lines, start, deleteCount;
|
37
|
+
let lines, start, deleteCount, lineSeparator;
|
38
38
|
|
39
39
|
// we'll append stuff in the loop below
|
40
40
|
container.innerHTML = '<p><a href="' + weburl + '" target="_blank" rel="noopener noreferrer">' + weburl + '</a></p>';
|
41
41
|
|
42
|
-
|
43
|
-
|
42
|
+
if (this.responseText.indexOf('\r\n') >= 0) {
|
43
|
+
lineSeparator = '\r\n';
|
44
|
+
} else {
|
45
|
+
lineSeparator = '\n';
|
46
|
+
}
|
47
|
+
lines = this.responseText.split(lineSeparator);
|
48
|
+
start = violationLineNumber - contextLines;
|
44
49
|
if (start > 0) {
|
45
50
|
lines.splice(0, start); // remove lines before
|
46
51
|
}
|
47
52
|
deleteCount = lines.length - (2 * contextLines) + 1;
|
48
53
|
lines.splice(2 * contextLines - 1, deleteCount); // delete lines after
|
49
54
|
|
55
|
+
let table = document.createElement('table');
|
56
|
+
table.classList.add('code-snippet');
|
57
|
+
let tableBody = document.createElement('tbody');
|
58
|
+
table.appendChild(tableBody);
|
50
59
|
// now we have just the lines which will be displayed
|
51
60
|
lines.forEach(line => {
|
52
61
|
start++;
|
53
|
-
let
|
54
|
-
if (start ===
|
55
|
-
|
62
|
+
let tableRow = document.createElement('tr');
|
63
|
+
if (start === violationLineNumber) {
|
64
|
+
tableRow.classList.add("highlight");
|
56
65
|
}
|
66
|
+
|
67
|
+
let lineNumberColumn = document.createElement('td');
|
68
|
+
lineNumberColumn.classList.add('line-number');
|
69
|
+
tableRow.appendChild(lineNumberColumn);
|
70
|
+
let lineNumberElement = document.createElement('code');
|
71
|
+
lineNumberColumn.appendChild(lineNumberElement);
|
72
|
+
lineNumberElement.setAttribute('data-line-number', formatLineNumber(start));
|
73
|
+
|
74
|
+
let codeColumn = document.createElement('td');
|
75
|
+
tableRow.appendChild(codeColumn);
|
76
|
+
let codeElement = document.createElement("code");
|
77
|
+
codeColumn.appendChild(codeElement);
|
57
78
|
// createTextNode escapes special chars
|
58
|
-
|
59
|
-
lineElt.appendChild(document.createElement("br"));
|
79
|
+
codeElement.appendChild(document.createTextNode(line));
|
60
80
|
|
61
|
-
|
81
|
+
tableBody.appendChild(tableRow); // append row to the table
|
62
82
|
});
|
83
|
+
container.appendChild(table);
|
84
|
+
|
85
|
+
if (navigator.clipboard) {
|
86
|
+
let copyButton = document.createElement('button');
|
87
|
+
copyButton.classList.add('btn-clipboard');
|
88
|
+
copyButton.setAttribute('title', 'Copy to clipboard');
|
89
|
+
copyButton.appendChild(document.createTextNode('copy'));
|
90
|
+
copyButton.onclick = function() {
|
91
|
+
navigator.clipboard.writeText(lines.join(lineSeparator));
|
92
|
+
}
|
93
|
+
container.appendChild(copyButton);
|
94
|
+
}
|
63
95
|
});
|
64
|
-
oReq.open("GET", requestUrl);
|
65
|
-
oReq.send();
|
66
96
|
|
67
97
|
container.innerHTML = "<samp>fetching...</samp>";
|
98
|
+
|
99
|
+
oReq.open("GET", requestUrl);
|
100
|
+
oReq.send();
|
68
101
|
}
|
69
102
|
|
70
103
|
window.pmd_code_snippets = {
|
@@ -52,7 +52,7 @@ $(document).ready(function () {
|
|
52
52
|
],
|
53
53
|
deferRender: true,
|
54
54
|
// scrollY: "6000px",
|
55
|
-
dom: '
|
55
|
+
dom: 'Pfrtipl', // Search Panes, filtering input, processing display element, table, table information summary, pagination control, length changing input control
|
56
56
|
searchPanes: {
|
57
57
|
viewTotal: true,
|
58
58
|
cascadePanes: true,
|
@@ -113,12 +113,13 @@ $(document).ready(function () {
|
|
113
113
|
},
|
114
114
|
],
|
115
115
|
displayLength: 25,
|
116
|
+
lengthMenu: [ [10, 20, 25, 50, 100, -1], [10, 20, 25, 50, 100, "All"] ],
|
116
117
|
rowCallback(row, data, index) {
|
117
118
|
$(row).addClass(cssClass[data.t]);
|
118
119
|
},
|
119
120
|
});
|
120
121
|
|
121
|
-
$('#violationsTable tbody').on('click', 'tr', function() {
|
122
|
+
$('#violationsTable tbody').on('click', 'tr[role=row]', function() {
|
122
123
|
var tr = $(this).closest('tr');
|
123
124
|
var row = table.row( tr );
|
124
125
|
|
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.3.0
|
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: 2021-
|
13
|
+
date: 2021-12-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -206,14 +206,14 @@ dependencies:
|
|
206
206
|
requirements:
|
207
207
|
- - "~>"
|
208
208
|
- !ruby/object:Gem::Version
|
209
|
-
version: '3.
|
209
|
+
version: '3.23'
|
210
210
|
type: :development
|
211
211
|
prerelease: false
|
212
212
|
version_requirements: !ruby/object:Gem::Requirement
|
213
213
|
requirements:
|
214
214
|
- - "~>"
|
215
215
|
- !ruby/object:Gem::Version
|
216
|
-
version: '3.
|
216
|
+
version: '3.23'
|
217
217
|
description: A regression testing tool ensure that new problems and unexpected behaviors
|
218
218
|
will not be introduced to PMD project after fixing an issue , and new rules can
|
219
219
|
work as expected.
|
@@ -275,6 +275,7 @@ files:
|
|
275
275
|
- lib/pmdtester/report_diff.rb
|
276
276
|
- lib/pmdtester/resource_locator.rb
|
277
277
|
- lib/pmdtester/runner.rb
|
278
|
+
- lib/pmdtester/semver.rb
|
278
279
|
- pmdtester.gemspec
|
279
280
|
- resources/_includes/diff_pill_row.html
|
280
281
|
- resources/css/bootstrap.min.css
|