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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d45c31e2cf8ad4eaba391c13fa0523ade4a84394bc07a908e6a49806a12ebf6
4
- data.tar.gz: fdf6c23a45dc0fd6738e272e564c3c29322dea2285269c1a869608bd77494d8a
3
+ metadata.gz: 8d8994ea3c45ad46bc4fd3266dc6f58984778312f8bd4d08bf072b591eb2328c
4
+ data.tar.gz: 27127580adda8a0747b93e12968b92f4afdacf117ecd5d9281f285a351b21850
5
5
  SHA512:
6
- metadata.gz: 249c6a07412a2b74405e84fe1780d5cdb8fe4173d32438c7c0fab4f78b5852ec1a63654e3a1219b4889c43e931d00451a361d27924dc0978061035abd7d03322
7
- data.tar.gz: 3f4f7e4bf61f827ff475d9f302f1b73cf1e43c9807ac5b6aaf364d27bbb774db066f7a7af28586aa29ea2365e2664c915944afcedc2d0a112587f1e1cf0efb8a
6
+ metadata.gz: 56ba181fd89c6250f358e324cbfa7ee6fa7d3c449348502b2daac3fbc7943f2e60d484f15703f9d97114ff7139e1dd6bd7f735be1a76c8e6c57cc294b48f5c5b
7
+ data.tar.gz: d4922834c2665e367fe27107e33ce0b0909c7719e1ff554906bb1e739d4eabfd66626094e8f51547c6a3306fce11a4d9c95737c0292009dd945fc8fa3859cbc3
data/.ci/build.sh CHANGED
@@ -1,67 +1,99 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- source $(dirname $0)/inc/install-openjdk.inc
4
-
3
+ # Exit this script immediately if a command/function exits with a non-zero status.
5
4
  set -e
6
5
 
7
-
8
- function build_regression_tester() {
9
- echo "::group::Install OpenJDK 8+11"
10
- install_openjdk 8
11
- install_openjdk 11 # last one is the default
12
- echo "::endgroup::"
13
-
14
- echo "::group::Install dependencies"
15
- gem install bundler
16
- bundle config set --local path vendor/bundle
17
- bundle install
18
- echo "::endgroup::"
19
-
20
- echo "::group::Build with rake"
21
- bundle exec rake check_manifest
22
- bundle exec rake rubocop
23
- bundle exec rake clean test
24
- echo "::endgroup::"
25
-
26
- echo "::group::Run Integration Tests"
27
- bundle exec rake clean integration-test
28
- echo "::endgroup::"
29
-
30
- echo "::group::Build Package"
31
- bundle exec rake install_gem
32
- bundle exec pmdtester -h
33
- echo "::endgroup::"
34
-
35
- # builds on forks or builds for pull requests stop here
36
- if [[ "${PMD_CI_REPO}" != "pmd/pmd-regression-tester" || -n "${PMD_CI_PULL_REQUEST_NUMBER}" ]]; then
6
+ SCRIPT_INCLUDES="log.bash utils.bash setup-secrets.bash openjdk.bash github-releases-api.bash"
7
+ # shellcheck source=inc/fetch_ci_scripts.bash
8
+ source "$(dirname "$0")/inc/fetch_ci_scripts.bash" && fetch_ci_scripts
9
+
10
+ function build() {
11
+ pmd_ci_log_group_start "Install OpenJDK 8+11"
12
+ pmd_ci_openjdk_install_adoptium 11
13
+ pmd_ci_openjdk_install_adoptium 8
14
+ pmd_ci_openjdk_setdefault 11
15
+ pmd_ci_log_group_end
16
+
17
+ pmd_ci_log_group_start "Install dependencies"
18
+ gem install --user-install bundler
19
+ bundle config set --local path vendor/bundle
20
+ bundle install
21
+ pmd_ci_log_group_end
22
+
23
+ echo
24
+ local version
25
+ version="$(bundle exec ruby -I. -e 'require "lib/pmdtester"; print PmdTester::VERSION;')"
26
+ pmd_ci_log_info "======================================================================="
27
+ pmd_ci_log_info "Building pmd-regression-tester ${version}"
28
+ pmd_ci_log_info "======================================================================="
29
+ pmd_ci_utils_determine_build_env pmd/pmd-regression-tester
30
+ echo
31
+
32
+ pmd_ci_log_group_start "Build with rake"
33
+ bundle exec rake check_manifest
34
+ bundle exec rake rubocop
35
+ bundle exec rake clean test
36
+ pmd_ci_log_group_end
37
+
38
+ pmd_ci_log_group_start "Run Integration Tests"
39
+ bundle exec rake clean integration-test
40
+ pmd_ci_log_group_end
41
+
42
+ pmd_ci_log_group_start "Build Package"
43
+ bundle exec rake install_gem
44
+ bundle exec pmdtester -h
45
+ pmd_ci_log_group_end
46
+
47
+ if pmd_ci_utils_is_fork_or_pull_request; then
48
+ # builds on forks or builds for pull requests stop here
37
49
  exit 0
38
50
  fi
39
51
 
40
- # if this is a release build from a tag...
41
- if [[ "${PMD_CI_REPO}" == "pmd/pmd-regression-tester" && "${PMD_CI_GIT_REF}" == refs/tags/* ]]; then
42
- echo "::group::Publish to rubygems"
43
- setup_secrets
44
-
45
- git stash --all
46
- gem build pmdtester.gemspec
47
- gem push pmdtester-*.gem
48
- echo "::endgroup::"
52
+ # only builds on pmd/pmd-regression-tester continue here
53
+ pmd_ci_log_group_start "Setup environment"
54
+ pmd_ci_setup_secrets_private_env
55
+ pmd_ci_log_group_end
56
+
57
+ if isReleaseBuild "$version"; then
58
+ pmd_ci_log_group_start "Publish to rubygems"
59
+ gem build pmdtester.gemspec
60
+ local gempkgfile
61
+ gempkgfile="$(echo pmdtester-*.gem)"
62
+ gem push "${gempkgfile}"
63
+ pmd_ci_log_group_end
64
+
65
+ pmd_ci_log_group_start "Update Github Releases"
66
+ # create a draft github release
67
+ pmd_ci_gh_releases_createDraftRelease "${PMD_CI_TAG}" "$(git rev-list -n 1 "${PMD_CI_TAG}")"
68
+ GH_RELEASE="$RESULT"
69
+
70
+ # Deploy to github releases
71
+ pmd_ci_gh_releases_uploadAsset "$GH_RELEASE" "${gempkgfile}"
72
+
73
+ # extract the release notes
74
+ RELEASE_NAME="${version}"
75
+ BEGIN_LINE=$(grep -n "^# " History.md|head -1|cut -d ":" -f 1)
76
+ BEGIN_LINE=$((BEGIN_LINE + 1))
77
+ END_LINE=$(grep -n "^# " History.md|head -2|tail -1|cut -d ":" -f 1)
78
+ END_LINE=$((END_LINE - 1))
79
+ RELEASE_BODY="$(head -$END_LINE History.md | tail -$((END_LINE - BEGIN_LINE)))"
80
+
81
+ pmd_ci_gh_releases_updateRelease "$GH_RELEASE" "$RELEASE_NAME" "$RELEASE_BODY"
82
+
83
+ # Publish release - this sends out notifications on github
84
+ pmd_ci_gh_releases_publishRelease "$GH_RELEASE"
85
+ pmd_ci_log_group_end
49
86
  fi
50
-
51
87
  }
52
88
 
53
- ## helper functions
54
-
55
- function setup_secrets() {
56
- echo "Setting up secrets..."
57
- # Required secrets are: GEM_HOST_API_KEY
58
- local -r env_file=".ci/files/env"
59
- printenv PMD_CI_SECRET_PASSPHRASE | gpg --batch --yes --decrypt \
60
- --passphrase-fd 0 \
61
- --output ${env_file} ${env_file}.gpg
62
- source ${env_file} >/dev/null 2>&1
63
- rm ${env_file}
64
- }
89
+ function isReleaseBuild() {
90
+ local version="$1"
65
91
 
92
+ if [[ "${version}" != *-SNAPSHOT && "${PMD_CI_TAG}" != "" ]]; then
93
+ return 0
94
+ fi
95
+
96
+ return 1
97
+ }
66
98
 
67
- build_regression_tester
99
+ build
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bash
2
+
3
+ function fetch_ci_scripts() {
4
+ local inc_dir
5
+ local inc_url
6
+ inc_dir="$(dirname "$0")/inc"
7
+ inc_url="${PMD_CI_SCRIPTS_URL:-https://raw.githubusercontent.com/pmd/build-tools/master/scripts}/inc"
8
+
9
+ mkdir -p "${inc_dir}"
10
+
11
+ for f in ${SCRIPT_INCLUDES}; do
12
+ if [ ! -e "${inc_dir}/$f" ]; then
13
+ curl -sSL "${inc_url}/$f" > "${inc_dir}/$f"
14
+ fi
15
+ [ "$PMD_CI_DEBUG" = "true" ] && echo "loading ${inc_dir}/$f in ${MODULE:-$0}"
16
+ # shellcheck source=/dev/null
17
+ source "${inc_dir}/$f" || exit 1
18
+ done
19
+ }
@@ -1,20 +1,37 @@
1
1
  #!/usr/bin/env bash
2
2
 
3
- source $(dirname $0)/inc/install-openjdk.inc
4
-
3
+ # Exit this script immediately if a command/function exits with a non-zero status.
5
4
  set -e
6
5
 
7
- echo "::group::Install OpenJDK 8+11"
8
- install_openjdk 8
9
- install_openjdk 11 # last one is the default
10
- echo "::endgroup::"
6
+ SCRIPT_INCLUDES="log.bash utils.bash openjdk.bash"
7
+ # shellcheck source=inc/fetch_ci_scripts.bash
8
+ source "$(dirname "$0")/inc/fetch_ci_scripts.bash" && fetch_ci_scripts
9
+
10
+ function build() {
11
+ pmd_ci_log_group_start "Install OpenJDK 8+11"
12
+ pmd_ci_openjdk_install_adoptium 11
13
+ pmd_ci_openjdk_install_adoptium 8
14
+ pmd_ci_openjdk_setdefault 11
15
+ pmd_ci_log_group_end
16
+
17
+ pmd_ci_log_group_start "Install dependencies"
18
+ gem install --user-install bundler
19
+ bundle config set --local path vendor/bundle
20
+ bundle install
21
+ pmd_ci_log_group_end
22
+
23
+ echo
24
+ local version
25
+ version="$(bundle exec ruby -I. -e 'require "lib/pmdtester"; print PmdTester::VERSION;')"
26
+ pmd_ci_log_info "======================================================================="
27
+ pmd_ci_log_info "Building pmd-regression-tester ${version}"
28
+ pmd_ci_log_info "======================================================================="
29
+ pmd_ci_utils_determine_build_env pmd/pmd-regression-tester
30
+ echo
11
31
 
12
- echo "::group::Install dependencies"
13
- gem install bundler
14
- bundle config set --local path vendor/bundle
15
- bundle install
16
- echo "::endgroup::"
32
+ pmd_ci_log_group_start "Run Manual Integration Tests"
33
+ bundle exec ruby -I test test/manual_integration_tests.rb
34
+ pmd_ci_log_group_end
35
+ }
17
36
 
18
- echo "::group::Run Manual Integration Tests"
19
- bundle exec ruby -I test test/manual_integration_tests.rb
20
- echo "::endgroup::"
37
+ build
@@ -2,11 +2,16 @@ name: build
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [ master ]
5
+ branches:
6
+ - main
7
+ - master
6
8
  tags:
7
9
  - '**'
8
10
  pull_request:
9
- branches: [ master ]
11
+ schedule:
12
+ # build it monthly: At 04:30 on day-of-month 1.
13
+ - cron: '30 4 1 * *'
14
+ workflow_dispatch:
10
15
 
11
16
  jobs:
12
17
  build:
@@ -21,19 +26,31 @@ jobs:
21
26
  ~/.m2/repository
22
27
  ~/.cache
23
28
  vendor/bundle
24
- key: ${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
29
+ target/repositories
30
+ key: v1-${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
25
31
  restore-keys: |
26
- ${{ runner.os }}-
27
- - name: Set up Ruby
32
+ v1-${{ runner.os }}-
33
+ - name: Set up Ruby 2.7
28
34
  uses: ruby/setup-ruby@v1
29
35
  with:
30
36
  ruby-version: 2.7
37
+ - name: Setup Environment
38
+ shell: bash
39
+ run: |
40
+ echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
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/17/scripts" >> $GITHUB_ENV
43
+ - name: Check Environment
44
+ shell: bash
45
+ run: |
46
+ f=check-environment.sh; \
47
+ mkdir -p .ci && \
48
+ ( [ -e .ci/$f ] || curl -sSL "${PMD_CI_SCRIPTS_URL}/$f" > ".ci/$f" ) && \
49
+ chmod 755 .ci/$f && \
50
+ .ci/$f
31
51
  - name: Build
32
52
  run: .ci/build.sh
33
53
  shell: bash
34
54
  env:
35
- MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3
36
55
  PMD_CI_SECRET_PASSPHRASE: ${{ secrets.PMD_CI_SECRET_PASSPHRASE }}
37
- PMD_CI_REPO: ${{ github.repository }}
38
- PMD_CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
39
- PMD_CI_GIT_REF: ${{ github.ref }}
56
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,6 +1,10 @@
1
1
  name: manual-integration-tests
2
2
 
3
- on: workflow_dispatch
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:
@@ -14,19 +18,31 @@ jobs:
14
18
  ~/.m2/repository
15
19
  ~/.cache
16
20
  vendor/bundle
17
- key: ${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
21
+ target/repositories
22
+ key: v1-${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
18
23
  restore-keys: |
19
- ${{ runner.os }}-
20
- - name: Set up Ruby
24
+ v1-${{ runner.os }}-
25
+ - name: Set up Ruby 2.7
21
26
  uses: ruby/setup-ruby@v1
22
27
  with:
23
28
  ruby-version: 2.7
29
+ - name: Setup Environment
30
+ shell: bash
31
+ run: |
32
+ echo "LANG=en_US.UTF-8" >> $GITHUB_ENV
33
+ echo "MAVEN_OPTS=-Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3" >> $GITHUB_ENV
34
+ echo "PMD_CI_SCRIPTS_URL=https://raw.githubusercontent.com/pmd/build-tools/17/scripts" >> $GITHUB_ENV
35
+ - name: Check Environment
36
+ shell: bash
37
+ run: |
38
+ f=check-environment.sh; \
39
+ mkdir -p .ci && \
40
+ ( [ -e .ci/$f ] || curl -sSL "${PMD_CI_SCRIPTS_URL}/$f" > ".ci/$f" ) && \
41
+ chmod 755 .ci/$f && \
42
+ .ci/$f
24
43
  - name: Build
25
44
  run: .ci/manual-integration-tests.sh
26
45
  shell: bash
27
46
  env:
28
- MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3
29
47
  PMD_CI_SECRET_PASSPHRASE: ${{ secrets.PMD_CI_SECRET_PASSPHRASE }}
30
- PMD_CI_REPO: ${{ github.repository }}
31
- PMD_CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
32
- PMD_CI_GIT_REF: ${{ github.ref }}
48
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
data/.hoerc CHANGED
@@ -1 +1 @@
1
- exclude: !ruby/regexp /tmp$|\.(git|idea)\/|\.project|target|test\/|Gemfile\.lock|\.bundle\/|vendor\/bundle|localtests/
1
+ exclude: !ruby/regexp /tmp$|\.git\/|\.idea|\.project|target\/|test\/|Gemfile\.lock|\.bundle\/|vendor\/|localtests\/|\.ci\/inc\/(log|utils|setup-secrets|openjdk|github-releases-api)\.bash|\.ci\/files\/|\.ci\/check-environment\.sh/
data/.rubocop.yml CHANGED
@@ -27,3 +27,6 @@ Metrics/ClassLength:
27
27
  Metrics/BlockLength:
28
28
  Exclude:
29
29
  - 'lib/pmdtester/parsers/options.rb'
30
+
31
+ Metrics/ModuleLength:
32
+ CountAsOne: ['array', 'hash']
data/History.md CHANGED
@@ -1,3 +1,34 @@
1
+ # 1.4.0 / 2022-03-24
2
+
3
+ ## Enhancements
4
+
5
+ * [#103](https://github.com/pmd/pmd-regression-tester/pull/103): Support other languages besides java
6
+
7
+ # 1.3.0 / 2021-12-17
8
+
9
+ ## Enhancements
10
+
11
+ * [#94](https://github.com/pmd/pmd-regression-tester/issues/94): Improve code snippet preview
12
+ * [#95](https://github.com/pmd/pmd-regression-tester/issues/95): Add length menu for datatable to allow configurable page size
13
+
14
+ ## Fixed Issues
15
+
16
+ * [#86](https://github.com/pmd/pmd-regression-tester/issues/86): Uncaught TypeError: violation is undefined
17
+ * [#93](https://github.com/pmd/pmd-regression-tester/issues/93): Line numbers > 1000 are not displayed correctly
18
+ * [#96](https://github.com/pmd/pmd-regression-tester/issues/96): Fix failing integration tests
19
+
20
+ # 1.2.0 / 2021-06-20
21
+
22
+ ## New and Noteworthy
23
+
24
+ * Support for Mercurial is removed. The only SCM supported in the project-list.xml is "git".
25
+
26
+ ## Fixed Issues
27
+
28
+ * [#71](https://github.com/pmd/pmd-regression-tester/issues/71): Include full PMD report
29
+ * [#89](https://github.com/pmd/pmd-regression-tester/pull/89): Make it possible to select a subpath of cloned directory
30
+ * [#91](https://github.com/pmd/pmd-regression-tester/pull/91): Filter baseline based on patch config
31
+
1
32
  # 1.1.2 / 2021-04-20
2
33
 
3
34
  This is a bugfix release.
data/Manifest.txt CHANGED
@@ -1,6 +1,5 @@
1
1
  .ci/build.sh
2
- .ci/files/env.gpg
3
- .ci/inc/install-openjdk.inc
2
+ .ci/inc/fetch_ci_scripts.bash
4
3
  .ci/manual-integration-tests.sh
5
4
  .github/workflows/build.yml
6
5
  .github/workflows/manual-integration-tests.yml
@@ -21,6 +20,7 @@ config/design.xml
21
20
  config/project-list.xml
22
21
  config/projectlist_1_0_0.xsd
23
22
  config/projectlist_1_1_0.xsd
23
+ config/projectlist_1_2_0.xsd
24
24
  lib/pmdtester.rb
25
25
  lib/pmdtester/builders/liquid_renderer.rb
26
26
  lib/pmdtester/builders/pmd_report_builder.rb
@@ -44,6 +44,7 @@ lib/pmdtester/project.rb
44
44
  lib/pmdtester/report_diff.rb
45
45
  lib/pmdtester/resource_locator.rb
46
46
  lib/pmdtester/runner.rb
47
+ lib/pmdtester/semver.rb
47
48
  pmdtester.gemspec
48
49
  resources/_includes/diff_pill_row.html
49
50
  resources/css/bootstrap.min.css
@@ -58,3 +59,4 @@ resources/js/popper.min.js
58
59
  resources/js/project-report.js
59
60
  resources/project_diff_report.html
60
61
  resources/project_index.html
62
+ resources/project_pmd_report.html
data/README.rdoc CHANGED
@@ -20,29 +20,30 @@ on a list of standard projects(Spring Framework, Hibernate, Solr, etc.)
20
20
  == SYNOPSIS:
21
21
 
22
22
  === Options:
23
- -r, --local-git-repo path to the local PMD repository
24
- -b, --base-branch name of the base branch in local PMD repository
25
- -p, --patch-branch name of the patch branch in local PMD repository
26
- -bc, --base-config path to the base PMD configuration file default:PMDTESTER_INSTALLED_DIR/config/all-java.xml
27
- -pc, --patch-config path to the patch PMD configuration file default:PMDTESTER_INSTALLED_DIR/config/all-java.xml
28
- -c, --config path to the base and patch PMD configuration file
29
- -l, --list-of-project path to the file which contains the list of standard projects default:PMDTESTER_INSTALLED_DIR/config/project-list.xml
30
- -m, --mode the mode of the tool: 'local', 'online' or 'single'
23
+ -r, --local-git-repo path to the local PMD repository
24
+ -b, --base-branch name of the base branch in local PMD repository
25
+ -p, --patch-branch name of the patch branch in local PMD repository
26
+ -bc, --base-config path to the base PMD configuration file
27
+ -pc, --patch-config path to the patch PMD configuration file
28
+ -c, --config path to the base and patch PMD configuration file
29
+ -l, --list-of-project path to the file which contains the list of standard projects
30
+ -m, --mode the mode of the tool: 'local', 'online' or 'single'
31
31
  single: Set this option to 'single' if your patch branch contains changes
32
32
  for any option that can't work on master/base branch
33
33
  online: Set this option to 'online' if you want to download
34
34
  the PMD report of master/base branch rather than generating it locally
35
35
  local: Default option is 'local', PMD reports for the base and patch branches are generated locally.
36
36
 
37
- -t, --threads Sets the number of threads used by PMD. Set threads to 0 to disable multi-threading processing. default:1
38
- -f, --html-flag whether to not generate the html diff report in single mode
39
- -a, --auto-gen-config whether to generate configurations automatically based on branch differences,this option only works in online and local mode
40
- --keep-reports whether to keep old reports and skip running PMD again if possible
41
- -d, --debug whether change log level to DEBUG to see more information
42
- --error-recovery enable error recovery mode when executing PMD. Might help to analyze errors.
43
- --baseline-download-url download url prefix from where to download the baseline in online mode default:https://sourceforge.net/projects/pmd/files/pmd-regression-tester/
44
- -v, --version
45
- -h, --help
37
+ -t, --threads Sets the number of threads used by PMD. Set threads to 0 to disable multi-threading processing.
38
+ -f, --html-flag whether to not generate the html diff report in single mode
39
+ -a, --auto-gen-config whether to generate configurations automatically based on branch differences,this option only works in online and local mode
40
+ --filter-with-patch-config whether to use patch config to filter baseline result as if --auto-gen-config has been used. This option only works in online mode.
41
+ --keep-reports whether to keep old reports and skip running PMD again if possible
42
+ -d, --debug whether change log level to DEBUG to see more information
43
+ --error-recovery enable error recovery mode when executing PMD. Might help to analyze errors.
44
+ --baseline-download-url download url prefix from where to download the baseline in online mode
45
+ -v, --version
46
+ -h, --help
46
47
 
47
48
  === Quick start
48
49
 
@@ -104,23 +105,22 @@ The tool creates the following folders:
104
105
 
105
106
  === Runtime dependency
106
107
 
107
- nokogiri >= 1.11.0.rc4
108
+ nokogiri ~> 1.13
108
109
  slop ~> 4.6
109
110
  differ ~> 0.1
110
- rufus-scheduler ~> 3.5
111
+ rufus-scheduler ~> 3.8
111
112
  logger-colors ~> 1.0
112
- liquid >= 4.0
113
+ liquid ~> 5.2
113
114
 
114
115
  === Development dependency
115
116
 
116
- hoe ~> 3.22
117
117
  hoe-bundler ~> 1.5
118
118
  hoe-git ~> 1.6
119
119
  minitest ~> 5.10
120
120
  mocha ~> 1.5
121
- rdoc < 7, >= 4.0
122
- rubocop ~> 0.81
123
- test-unit ~> 3.2
121
+ rubocop ~> 0.93
122
+ test-unit ~> 3.5
123
+ rdoc ~> 6.4
124
124
 
125
125
  == INSTALL:
126
126
 
@@ -153,4 +153,5 @@ The tool creates the following folders:
153
153
  * Commit ("Prepare next development version x.y.z-SNAPSHOT").
154
154
  * Push to master.
155
155
  * Push the tag. Github Actions will build and publish the new gem
156
- * Update the release notes on https://github.com/pmd/pmd-regression-tester/releases
156
+ * A github release is automatically created, verify it on https://github.com/pmd/pmd-regression-tester/releases
157
+ * To make pmd's main CI use the new version (in [pmd/pmd](https://github.com/pmd/pmd/)), go to the root directory and run `bundle lock --update`. Commit these changes.
data/Rakefile CHANGED
@@ -19,18 +19,23 @@ hoe = Hoe.spec 'pmdtester' do
19
19
  developer 'Clément Fournier', 'clement.fournier76@gmail.com'
20
20
 
21
21
  self.clean_globs = %w[target/reports/**/* target/test/**/* target/dynamic-config.xml Gemfile.lock]
22
- self.extra_deps += [['nokogiri', '>= 1.11.0.rc4'], ['slop', '~> 4.6'], ['differ', '~> 0.1'],
23
- ['rufus-scheduler', '~> 3.5'], ['logger-colors', '~> 1.0'],
24
- ['liquid', '>= 4.0']]
22
+ self.extra_deps += [
23
+ ['nokogiri', '~> 1.13'],
24
+ ['slop', '~> 4.6'],
25
+ ['differ', '~> 0.1'],
26
+ ['rufus-scheduler', '~> 3.8'],
27
+ ['logger-colors', '~> 1.0'],
28
+ ['liquid', '~> 5.2']
29
+ ]
25
30
  self.extra_dev_deps += [
26
31
  ['hoe-bundler', '~> 1.5'],
27
32
  ['hoe-git', '~> 1.6'],
28
33
  ['minitest', '~> 5.10'],
29
34
  ['mocha', '~> 1.5'],
30
35
  # use the same version of rubocop as codacy
31
- ['rubocop', '~> 0.81'],
32
- ['test-unit', '~> 3.2'],
33
- ['rdoc', ['>= 4.0', '< 7']]
36
+ ['rubocop', '~> 0.93'],
37
+ ['test-unit', '~> 3.5'],
38
+ ['rdoc', '~> 6.4']
34
39
  ]
35
40
  spec_extras[:required_ruby_version] = '>= 2.7'
36
41
 
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
 
3
3
  <projectlist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:noNamespaceSchemaLocation="projectlist_1_0_0.xsd">
4
+ xsi:noNamespaceSchemaLocation="projectlist_1_2_0.xsd">
5
5
  <description>Standard Projects</description>
6
6
 
7
7
  <project>
@@ -20,10 +20,11 @@ xsi:noNamespaceSchemaLocation="projectlist_1_0_0.xsd">
20
20
  <tag>v5.0.6.RELEASE</tag>
21
21
  </project>
22
22
 
23
- <!---<project>
24
- <name>openjdk10</name>
25
- <type>hg</type>
26
- <connection>http://hg.openjdk.java.net/jdk10/jdk10/jdk</connection>
27
- <webview-url>http://hg.openjdk.java.net/jdk10/jdk10/jdk/file/777356696811</webview-url>
28
- </project> -->
23
+ <project>
24
+ <name>openjdk-11</name>
25
+ <type>git</type>
26
+ <connection>https://github.com/openjdk/jdk</connection>
27
+ <tag>jdk-11+28</tag>
28
+ <src-subpath>src/java.base</src-subpath>
29
+ </project>
29
30
  </projectlist>
@@ -0,0 +1,39 @@
1
+ <?xml version="1.0" ?>
2
+ <!-- version 1.1.0 -->
3
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
4
+ <xs:element name="projectlist">
5
+ <xs:complexType>
6
+ <xs:sequence>
7
+ <xs:element name="description" type="xs:string" minOccurs="1" maxOccurs="1"/>
8
+ <xs:element name="project" type="project" minOccurs="1" maxOccurs="unbounded"/>
9
+ </xs:sequence>
10
+ </xs:complexType>
11
+ </xs:element>
12
+ <xs:complexType name="project">
13
+ <xs:sequence>
14
+ <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
15
+ <xs:element name="type" minOccurs="1" maxOccurs="1">
16
+ <xs:simpleType>
17
+ <xs:restriction base="xs:string">
18
+ <xs:enumeration value="git"/>
19
+ </xs:restriction>
20
+ </xs:simpleType>
21
+ </xs:element>
22
+ <xs:element name="connection" type="xs:string" minOccurs="1" maxOccurs="1"/>
23
+ <xs:element name="webview-url" type="xs:string" minOccurs="0" maxOccurs="1"/>
24
+ <xs:element name="tag" type="xs:string" minOccurs="0" maxOccurs="1"/>
25
+ <xs:element name="src-subpath" type="xs:string" minOccurs="0" maxOccurs="1" default=".">
26
+ <xs:annotation>
27
+ <xs:documentation>
28
+ Value of the -dir option for the PMD run.
29
+ The value must be a directory path relative to the root directory of the clone.
30
+ Defaults to just '.', ie the entire directory.
31
+ </xs:documentation>
32
+ </xs:annotation>
33
+ </xs:element>
34
+ <xs:element name="exclude-pattern" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
35
+ <xs:element name="build-command" type="xs:string" minOccurs="0" maxOccurs="1"/>
36
+ <xs:element name="auxclasspath-command" type="xs:string" minOccurs="0" maxOccurs="1"/>
37
+ </xs:sequence>
38
+ </xs:complexType>
39
+ </xs:schema>