pmdtester 1.0.0.pre.beta2 → 1.1.1

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/build.sh +67 -0
  3. data/.ci/files/env.gpg +1 -0
  4. data/.ci/inc/install-openjdk.inc +26 -0
  5. data/.ci/manual-integration-tests.sh +20 -0
  6. data/.github/workflows/build.yml +39 -0
  7. data/.github/workflows/manual-integration-tests.yml +32 -0
  8. data/.gitignore +9 -0
  9. data/.hoerc +1 -0
  10. data/.rubocop.yml +21 -2
  11. data/.rubocop_todo.yml +7 -8
  12. data/.ruby-version +1 -0
  13. data/Gemfile +1 -13
  14. data/History.md +108 -0
  15. data/Manifest.txt +60 -0
  16. data/README.rdoc +130 -7
  17. data/Rakefile +31 -17
  18. data/bin/pmdtester +1 -1
  19. data/config/all-java.xml +1 -1
  20. data/config/design.xml +1 -1
  21. data/config/projectlist_1_0_0.xsd +2 -1
  22. data/config/projectlist_1_1_0.xsd +31 -0
  23. data/lib/pmdtester.rb +48 -0
  24. data/lib/pmdtester/builders/liquid_renderer.rb +73 -0
  25. data/lib/pmdtester/builders/pmd_report_builder.rb +133 -64
  26. data/lib/pmdtester/builders/project_builder.rb +100 -0
  27. data/lib/pmdtester/builders/project_hasher.rb +126 -0
  28. data/lib/pmdtester/builders/rule_set_builder.rb +95 -51
  29. data/lib/pmdtester/builders/simple_progress_logger.rb +27 -0
  30. data/lib/pmdtester/builders/summary_report_builder.rb +62 -120
  31. data/lib/pmdtester/cmd.rb +15 -1
  32. data/lib/pmdtester/collection_by_file.rb +55 -0
  33. data/lib/pmdtester/parsers/options.rb +33 -10
  34. data/lib/pmdtester/parsers/pmd_report_document.rb +79 -29
  35. data/lib/pmdtester/parsers/projects_parser.rb +2 -6
  36. data/lib/pmdtester/pmd_branch_detail.rb +36 -13
  37. data/lib/pmdtester/pmd_configerror.rb +62 -0
  38. data/lib/pmdtester/pmd_error.rb +34 -34
  39. data/lib/pmdtester/pmd_report_detail.rb +10 -13
  40. data/lib/pmdtester/pmd_tester_utils.rb +57 -0
  41. data/lib/pmdtester/pmd_violation.rb +66 -26
  42. data/lib/pmdtester/project.rb +28 -25
  43. data/lib/pmdtester/report_diff.rb +194 -70
  44. data/lib/pmdtester/resource_locator.rb +4 -0
  45. data/lib/pmdtester/runner.rb +82 -57
  46. data/pmdtester.gemspec +64 -0
  47. data/resources/_includes/diff_pill_row.html +6 -0
  48. data/resources/css/bootstrap.min.css +7 -0
  49. data/resources/css/datatables.min.css +36 -0
  50. data/resources/css/pmd-tester.css +131 -0
  51. data/resources/js/bootstrap.min.js +7 -0
  52. data/resources/js/code-snippets.js +66 -0
  53. data/resources/js/datatables.min.js +726 -0
  54. data/resources/js/jquery-3.2.1.slim.min.js +4 -0
  55. data/resources/js/jquery.min.js +2 -0
  56. data/resources/js/popper.min.js +5 -0
  57. data/resources/js/project-report.js +136 -0
  58. data/resources/project_diff_report.html +205 -0
  59. data/resources/project_index.html +102 -0
  60. metadata +117 -44
  61. data/.travis.yml +0 -22
  62. data/lib/pmdtester/builders/diff_builder.rb +0 -35
  63. data/lib/pmdtester/builders/diff_report_builder.rb +0 -226
  64. data/lib/pmdtester/builders/html_report_builder.rb +0 -34
  65. data/lib/pmdtester/pmdtester.rb +0 -17
  66. data/resources/css/maven-base.css +0 -155
  67. data/resources/css/maven-theme.css +0 -171
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc98cf9ced82209cfacc2752160229c5eb067c9604c8639d3ec5d9663134d8fc
4
- data.tar.gz: 2c5a013fe96a5e60614f7d932837434a42e15ba19ae5a5e7096934ae4b7692f7
3
+ metadata.gz: 4d0d2deb3eea885db1ea9fd273fc2330f93be694a4a7f804f6ffc03811b67280
4
+ data.tar.gz: 1cd1d39bdfd34a113a88275c9662a180c352b425d2ab06278fdd4530ce2bf8d5
5
5
  SHA512:
6
- metadata.gz: eb72595523c73e2a2a9adfe560f653baf0c35581ee803d3381ef9f400c90aeec9f92ef262f19f6f56323a848a5b4a98fb898af811577c815429a6ac93c619e7e
7
- data.tar.gz: 93d11d0f0943378987968434a6f0a36391830826a70dc6a8ce09a9706aef6cd5cfe87bf31671e7bba031ac52f34c2d26e4edc96f096a5c02f9be19dfd2ce4a82
6
+ metadata.gz: 4fea894ba2fe827517f09a54cef4f729f7a2a3340318479422a3d4f5ca064d3ef7fefc7474a174b2b0a0de8644b8985d83da3663828ee2bb1e37b4b2f33faf39
7
+ data.tar.gz: d3057fde3a18df5ba4fcad91ed1159de018ae2b3732eb867fc546ac4e8f819547765bdbb3acb20787e126a09edc2b929f9dab6c9e2f5bf946e1acc58677a2c1e
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source $(dirname $0)/inc/install-openjdk.inc
4
+
5
+ set -e
6
+
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
37
+ exit 0
38
+ fi
39
+
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::"
49
+ fi
50
+
51
+ }
52
+
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
+ }
65
+
66
+
67
+ build_regression_tester
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,26 @@
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
+ }
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env bash
2
+
3
+ source $(dirname $0)/inc/install-openjdk.inc
4
+
5
+ set -e
6
+
7
+ echo "::group::Install OpenJDK 8+11"
8
+ install_openjdk 8
9
+ install_openjdk 11 # last one is the default
10
+ echo "::endgroup::"
11
+
12
+ echo "::group::Install dependencies"
13
+ gem install bundler
14
+ bundle config set --local path vendor/bundle
15
+ bundle install
16
+ echo "::endgroup::"
17
+
18
+ echo "::group::Run Manual Integration Tests"
19
+ bundle exec ruby -I test test/manual_integration_tests.rb
20
+ echo "::endgroup::"
@@ -0,0 +1,39 @@
1
+ name: build
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ tags:
7
+ - '**'
8
+ pull_request:
9
+ branches: [ master ]
10
+
11
+ jobs:
12
+ build:
13
+ runs-on: ubuntu-latest
14
+ continue-on-error: false
15
+ if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - uses: actions/cache@v2
19
+ with:
20
+ path: |
21
+ ~/.m2/repository
22
+ ~/.cache
23
+ vendor/bundle
24
+ key: ${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
25
+ restore-keys: |
26
+ ${{ runner.os }}-
27
+ - name: Set up Ruby
28
+ uses: ruby/setup-ruby@v1
29
+ with:
30
+ ruby-version: 2.7
31
+ - name: Build
32
+ run: .ci/build.sh
33
+ shell: bash
34
+ env:
35
+ MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3
36
+ 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 }}
@@ -0,0 +1,32 @@
1
+ name: manual-integration-tests
2
+
3
+ on: workflow_dispatch
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ continue-on-error: false
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - uses: actions/cache@v2
12
+ with:
13
+ path: |
14
+ ~/.m2/repository
15
+ ~/.cache
16
+ vendor/bundle
17
+ key: ${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
18
+ restore-keys: |
19
+ ${{ runner.os }}-
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: 2.7
24
+ - name: Build
25
+ run: .ci/manual-integration-tests.sh
26
+ shell: bash
27
+ env:
28
+ MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3
29
+ 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 }}
@@ -0,0 +1,9 @@
1
+ pkg/
2
+ doc/
3
+ Gemfile.lock
4
+ .project
5
+ .idea
6
+ .bundle
7
+ target/
8
+ vendor/
9
+ localtests/
data/.hoerc ADDED
@@ -0,0 +1 @@
1
+ exclude: !ruby/regexp /tmp$|\.(git|idea)\/|\.project|target|test\/|Gemfile\.lock|\.bundle\/|vendor\/bundle|localtests/
@@ -1,10 +1,29 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.4
4
+ TargetRubyVersion: 2.7
5
+ Include:
6
+ - 'lib/**/*'
7
+ - 'test/**/*'
5
8
  Exclude:
9
+ # pmdtester.gemspec and Gemfile are generated
10
+ - 'pmdtester.gemspec'
11
+ - 'Gemfile'
6
12
  - 'target/**/*'
7
13
  - 'test/resources/**/*'
14
+ - 'vendor/**/*'
8
15
 
9
16
  Metrics/LineLength:
10
- Max: 100
17
+ Max: 120
18
+
19
+ Metrics/MethodLength:
20
+ Exclude:
21
+ - 'lib/pmdtester/parsers/options.rb'
22
+
23
+ Metrics/ClassLength:
24
+ Exclude:
25
+ - '**/*'
26
+
27
+ Metrics/BlockLength:
28
+ Exclude:
29
+ - 'lib/pmdtester/parsers/options.rb'
@@ -1,27 +1,26 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-07-12 16:57:46 +0800 using RuboCop version 0.56.0.
3
+ # on 2018-11-25 11:00:37 +0100 using RuboCop version 0.51.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 22
9
+ # Offense count: 30
10
10
  Metrics/AbcSize:
11
11
  Max: 47
12
12
 
13
- # Offense count: 3
13
+ # Offense count: 6
14
14
  # Configuration parameters: CountComments.
15
15
  Metrics/ClassLength:
16
- Max: 174
16
+ Max: 135
17
17
 
18
- # Offense count: 33
18
+ # Offense count: 38
19
19
  # Configuration parameters: CountComments.
20
20
  Metrics/MethodLength:
21
- Max: 35
21
+ Max: 22
22
22
 
23
- # Offense count: 5
23
+ # Offense count: 3
24
24
  Naming/AccessorMethodName:
25
25
  Exclude:
26
26
  - 'lib/pmdtester/builders/pmd_report_builder.rb'
27
- - 'lib/pmdtester/parsers/projects_parser.rb'
@@ -0,0 +1 @@
1
+ 2.7
data/Gemfile CHANGED
@@ -3,18 +3,6 @@
3
3
  # DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
4
4
 
5
5
  source "https://rubygems.org/"
6
-
7
- gem "nokogiri", "~>1.8.2"
8
- gem "slop", "~>4.6.2"
9
-
10
- gem "hoe-bundler", "~>1.2", :group => [:development, :test]
11
- gem "hoe-gemspec", "~>1.0", :group => [:development, :test]
12
- gem "hoe-git", "~>1.6", :group => [:development, :test]
13
- gem "minitest", "~>5.10.1", :group => [:development, :test]
14
- gem "mocha", "~>1.5.0", :group => [:development, :test]
15
- gem "rubocop", "~>0.56.0", :group => [:development, :test]
16
- gem "test-unit", "~>3.2.3", :group => [:development, :test]
17
- gem "rdoc", ">=4.0", "<6", :group => [:development, :test]
18
- gem "hoe", "~>3.17", :group => [:development, :test]
6
+ gemspec
19
7
 
20
8
  # vim: syntax=ruby
data/History.md CHANGED
@@ -1,3 +1,111 @@
1
+ # 1.1.1 / 2021-01-15
2
+
3
+ This is a bugfix release.
4
+
5
+ ## Fixed Issues
6
+
7
+ * [#81](https://github.com/pmd/pmd-regression-tester/pull/81): Dynamically generated rulesets are not applied on diffs
8
+ * [#82](https://github.com/pmd/pmd-regression-tester/pull/82): Summary hash uses wrong key names
9
+ * An already built PMD binary was not reused in CI
10
+
11
+ # 1.1.0 / 2020-12-05
12
+
13
+ ## New and Noteworthy
14
+
15
+ * At least ruby 2.7 is required.
16
+
17
+ * Typeresolution is now supported by two new tags in the project-list.xml file:
18
+ `build-command` and `auxclasspath-command`. For details, see pull request [#72](https://github.com/pmd/pmd-regression-tester/pull/72).
19
+
20
+ * As part of [#74](https://github.com/pmd/pmd-regression-tester/pull/74) runner now returns a single hash
21
+ with the summarized values instead of multiple numbers:
22
+
23
+ ```
24
+ summary = PmdTester::Runner.new(argv).run
25
+ puts summary
26
+ # {:errors=>{:new=>0, :removed=>0}, :violations=>{:new=>0, :removed=>0, :changed=>0}, :configerrors=>{:new=>0, :removed=>0}}
27
+ ```
28
+
29
+ * As part of [#73](https://github.com/pmd/pmd-regression-tester/issues/73) and [#78](https://github.com/pmd/pmd-regression-tester/pull/78)
30
+ a improved HTML report is now generated with the following features:
31
+ * searchable table for violations with filters by rule/file/kind (added, removed, changed)
32
+ * summary of changes by rule
33
+ * code snippets for the violations
34
+
35
+ ## Fixed Issues
36
+
37
+ * [#48](https://github.com/pmd/pmd-regression-tester/issues/48): Support auxclasspath / typeresolution
38
+ * [#67](https://github.com/pmd/pmd-regression-tester/pull/67): Report contains errors having nil filename
39
+ * [#68](https://github.com/pmd/pmd-regression-tester/pull/68): Don't generate a dynamic ruleset if not needed
40
+ * [#69](https://github.com/pmd/pmd-regression-tester/pull/69): Detect single rules with auto-gen-config
41
+ * [#70](https://github.com/pmd/pmd-regression-tester/pull/70): Add link to PR on github in HTML report
42
+ * [#73](https://github.com/pmd/pmd-regression-tester/issues/73): Better HTML presentation for diff report
43
+ * [#74](https://github.com/pmd/pmd-regression-tester/pull/74): Merge violations that have just changed messages
44
+ * [#75](https://github.com/pmd/pmd-regression-tester/pull/75): Add new option "--error-recovery"
45
+ * [#76](https://github.com/pmd/pmd-regression-tester/pull/76): Speedup XML parsing
46
+ * [#79](https://github.com/pmd/pmd-regression-tester/pull/79): Add new configuration option "--baseline-download-url"
47
+ * [#80](https://github.com/pmd/pmd-regression-tester/pull/80): Cache and reuse pmd builds
48
+
49
+ ## External Contributions
50
+
51
+ # 1.0.1 / 2020-07-08
52
+
53
+ This is a bugfix release.
54
+
55
+ ## Fixed Issues
56
+
57
+ * [#62](https://github.com/pmd/pmd-regression-tester/pull/62): Violation descriptions parsed incompletely
58
+
59
+ # 1.0.0 / 2020-04-25
60
+
61
+ ## New and Noteworthy
62
+
63
+ First stable release.
64
+
65
+ ## Fixed Issues
66
+
67
+ * [#35](https://github.com/pmd/pmd-regression-tester/issues/35): exclude-pattern hasn't been implemented
68
+ * [#37](https://github.com/pmd/pmd-regression-tester/issues/37): Render stack traces properly
69
+ * [#38](https://github.com/pmd/pmd-regression-tester/issues/38): Improve Danger messages
70
+ * [#40](https://github.com/pmd/pmd-regression-tester/issues/40): NoMethodError on beta3
71
+ * [#42](https://github.com/pmd/pmd-regression-tester/issues/42): Installing the snapshot version of pmdtester locally from github
72
+ * [#46](https://github.com/pmd/pmd-regression-tester/issues/46): Support multithreaded execution of PMD
73
+ * [#47](https://github.com/pmd/pmd-regression-tester/issues/47): Reuse the already built PMD binary for PR checks
74
+ * [#49](https://github.com/pmd/pmd-regression-tester/issues/49): Support comparing two error stacktraces
75
+ * [#50](https://github.com/pmd/pmd-regression-tester/issues/50): Differences due to different locale settings
76
+ * [#57](https://github.com/pmd/pmd-regression-tester/issues/57): Support configuration errors in the report
77
+ * [#60](https://github.com/pmd/pmd-regression-tester/issues/60): Display a simple progress report
78
+
79
+ ## External Contributions
80
+
81
+ * [#33](https://github.com/pmd/pmd-regression-tester/pull/33): Ignore changes to test code of PMD when generating dynamic rule sets - [BBG](https://github.com/djydewang)
82
+ * [#34](https://github.com/pmd/pmd-regression-tester/pull/34): Clear old reports before generating new differences regression reports - [BBG](https://github.com/djydewang)
83
+ * [#36](https://github.com/pmd/pmd-regression-tester/pull/36): Implements exclude-pattern - [BBG](https://github.com/djydewang)
84
+ * [#39](https://github.com/pmd/pmd-regression-tester/pull/39): Render stacktraces properly - [BBG](https://github.com/djydewang)
85
+ * [#41](https://github.com/pmd/pmd-regression-tester/pull/41): Fixes NoMethodError in Project class - [BBG](https://github.com/djydewang)
86
+ * [#43](https://github.com/pmd/pmd-regression-tester/pull/43): Adds pmdtester.gemspec file - [BBG](https://github.com/djydewang)
87
+ * [#44](https://github.com/pmd/pmd-regression-tester/pull/44): Improve Danger messages & Increase the readability of the summary report - [BBG](https://github.com/djydewang)
88
+ * [#45](https://github.com/pmd/pmd-regression-tester/pull/45): Removes the exit statement in RuleSetBuilder Class - [BBG](https://github.com/djydewang)
89
+ * [#51](https://github.com/pmd/pmd-regression-tester/pull/51): Add the JDK version and locale info to the summary table of the diff report - [BBG](https://github.com/djydewang)
90
+ * [#52](https://github.com/pmd/pmd-regression-tester/pull/52): Get the result of command 'java -version' from stderr rather than stdout - [BBG](https://github.com/djydewang)
91
+ * [#53](https://github.com/pmd/pmd-regression-tester/pull/53): Support comparing the two error stacktraces - [BBG](https://github.com/djydewang)
92
+ * [#54](https://github.com/pmd/pmd-regression-tester/pull/54): Support multithreaded execution of PMD - [BBG](https://github.com/djydewang)
93
+ * [#61](https://github.com/pmd/pmd-regression-tester/pull/61): Display a simple progress report every 2 minutes - [BBG](https://github.com/djydewang)
94
+
95
+ # 1.0.0.beta3 / 2018-08-01
96
+
97
+ Note: This is a beta release. The pmdtester is feature complete,
98
+ but might contain bugs.
99
+
100
+ ## External Contributions
101
+
102
+ * [#28](https://github.com/pmd/pmd-regression-tester/pull/28): Refactor require statements - [BBG](https://github.com/djydewang)
103
+ * [#29](https://github.com/pmd/pmd-regression-tester/pull/29): Add 'verify' rake task to verify code quality before committing changes - [BBG](https://github.com/djydewang)
104
+ * [#30](https://github.com/pmd/pmd-regression-tester/pull/30): Fix diff_cmd in RuleSetBuilder - [BBG](https://github.com/djydewang)
105
+ * [#31](https://github.com/pmd/pmd-regression-tester/pull/31): Fix color scheme for diff report, add default values for various options - [BBG](https://github.com/djydewang)
106
+ * [#32](https://github.com/pmd/pmd-regression-tester/pull/32): Update Readme.rdoc - [BBG](https://github.com/djydewang)
107
+
108
+
1
109
  # 1.0.0.beta2 / 2018-07-17
2
110
 
3
111
  * First release of pmdtester
@@ -0,0 +1,60 @@
1
+ .ci/build.sh
2
+ .ci/files/env.gpg
3
+ .ci/inc/install-openjdk.inc
4
+ .ci/manual-integration-tests.sh
5
+ .github/workflows/build.yml
6
+ .github/workflows/manual-integration-tests.yml
7
+ .gitignore
8
+ .hoerc
9
+ .rubocop.yml
10
+ .rubocop_todo.yml
11
+ .ruby-version
12
+ Gemfile
13
+ History.md
14
+ LICENSE
15
+ Manifest.txt
16
+ README.rdoc
17
+ Rakefile
18
+ bin/pmdtester
19
+ config/all-java.xml
20
+ config/design.xml
21
+ config/project-list.xml
22
+ config/projectlist_1_0_0.xsd
23
+ config/projectlist_1_1_0.xsd
24
+ lib/pmdtester.rb
25
+ lib/pmdtester/builders/liquid_renderer.rb
26
+ lib/pmdtester/builders/pmd_report_builder.rb
27
+ lib/pmdtester/builders/project_builder.rb
28
+ lib/pmdtester/builders/project_hasher.rb
29
+ lib/pmdtester/builders/rule_set_builder.rb
30
+ lib/pmdtester/builders/simple_progress_logger.rb
31
+ lib/pmdtester/builders/summary_report_builder.rb
32
+ lib/pmdtester/cmd.rb
33
+ lib/pmdtester/collection_by_file.rb
34
+ lib/pmdtester/parsers/options.rb
35
+ lib/pmdtester/parsers/pmd_report_document.rb
36
+ lib/pmdtester/parsers/projects_parser.rb
37
+ lib/pmdtester/pmd_branch_detail.rb
38
+ lib/pmdtester/pmd_configerror.rb
39
+ lib/pmdtester/pmd_error.rb
40
+ lib/pmdtester/pmd_report_detail.rb
41
+ lib/pmdtester/pmd_tester_utils.rb
42
+ lib/pmdtester/pmd_violation.rb
43
+ lib/pmdtester/project.rb
44
+ lib/pmdtester/report_diff.rb
45
+ lib/pmdtester/resource_locator.rb
46
+ lib/pmdtester/runner.rb
47
+ pmdtester.gemspec
48
+ resources/_includes/diff_pill_row.html
49
+ resources/css/bootstrap.min.css
50
+ resources/css/datatables.min.css
51
+ resources/css/pmd-tester.css
52
+ resources/js/bootstrap.min.js
53
+ resources/js/code-snippets.js
54
+ resources/js/datatables.min.js
55
+ resources/js/jquery-3.2.1.slim.min.js
56
+ resources/js/jquery.min.js
57
+ resources/js/popper.min.js
58
+ resources/js/project-report.js
59
+ resources/project_diff_report.html
60
+ resources/project_index.html