pmdtester 1.0.0.pre.beta2 → 1.0.0.pre.beta3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.hoerc +1 -0
- data/.rubocop.yml +8 -0
- data/.travis.yml +1 -1
- data/Gemfile +0 -1
- data/History.md +13 -0
- data/Manifest.txt +36 -0
- data/README.rdoc +81 -8
- data/Rakefile +7 -5
- data/bin/pmdtester +1 -1
- data/lib/pmdtester.rb +40 -0
- data/lib/pmdtester/builders/diff_builder.rb +0 -5
- data/lib/pmdtester/builders/diff_report_builder.rb +4 -5
- data/lib/pmdtester/builders/html_report_builder.rb +0 -1
- data/lib/pmdtester/builders/pmd_report_builder.rb +1 -5
- data/lib/pmdtester/builders/rule_set_builder.rb +2 -4
- data/lib/pmdtester/builders/summary_report_builder.rb +0 -3
- data/lib/pmdtester/parsers/options.rb +8 -8
- data/lib/pmdtester/parsers/pmd_report_document.rb +0 -2
- data/lib/pmdtester/parsers/projects_parser.rb +0 -2
- data/lib/pmdtester/pmd_branch_detail.rb +0 -1
- data/lib/pmdtester/project.rb +0 -2
- data/lib/pmdtester/runner.rb +8 -10
- metadata +8 -19
- data/lib/pmdtester/pmdtester.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f7a664829a0e913162fb40f38781976cf9260941e02f535baad1bb2debbe180
|
4
|
+
data.tar.gz: f2805406fcccc9c00e3d009817f7fefa82c79cccc5ca1a08317daf4182f089a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 294c1d8e5eb098d609bfa351612222d7fa7a76002cc43e4ade678cfd74fa1bfac723fa24e0d77ba3b23d084126c3c1aebedf784599be266fd71f318b252f82ef
|
7
|
+
data.tar.gz: 25df0d2de24c75a2bd0750d8025fabc0bad1c5d0f2c742eefbfc4884ffc664f1b6c46f7e2477a68daa50c753c0b575dda1b880df9868dd6d31b34c224d6a7882
|
data/.hoerc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
exclude: !ruby/regexp /tmp$|\.(git|idea)|target|test\/|Gemfile\.lock/
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -14,7 +14,7 @@ before_deploy:
|
|
14
14
|
deploy:
|
15
15
|
provider: rubygems
|
16
16
|
api_key:
|
17
|
-
secure:
|
17
|
+
secure: wXntKsCZseVjujUBnEJd0yYYARrBbIcAGACkfvNiUzGhuSN8Vil5ub6TMKu25vIOa+J122atCVMkAGm0g/3vB+h/5RAnMLxGDIWO9FWT2eGX4xtPkA/PbH6ejdJ5UVqUbUu9CTAehAvr6mYCzyBnmkzoyjD2CGaojy7RsvU+5+qeXAxkOhaY0UWgxUWbWwpwRuSt3BmHT+9ri8eEliXCL78yMRNzDLo5DxS6vC/RgrfrQ38mvoHjnniSN85GR2crYqdv40oTng6YZGuRR8FDxIQbu0VRmL/OsHCA1Ltt2m9FOk04EdP30mUsRawyJAB/5RfgVr7thMNd7PdQ9izsMleeg6lPsIW7NWWKoq0ZpImhsXOvWpQQqU4+vcew+QiFL9xthXsvKVs1wulb9y34dwLS7Wj5RInPdSSFtHihissSgBPQlifdK4IKBRw56LZ9OyBSQ7nid5tyvEfRzAWQCl5jrPnILInz2SB0zFtbMvn+699vsWYyn25w/0pGvWS1qhHLakQVLfRM7X8Yz3C5p4mjSwfBoICnN1kwXnezbdHDwbhXACqqN+UWKc1gWuMYQ22vHccUmOuJof4ooFkiZAY+ccwxfmd5TdAX60fkGSgNSn9+hyCarqGG/rU85b+EXpU/Qc7a08cuiIM0X2CVOKFM7E75KDjoi74nS/k0s2E=
|
18
18
|
on:
|
19
19
|
tags: true
|
20
20
|
skip_cleanup: true
|
data/Gemfile
CHANGED
@@ -8,7 +8,6 @@ gem "nokogiri", "~>1.8.2"
|
|
8
8
|
gem "slop", "~>4.6.2"
|
9
9
|
|
10
10
|
gem "hoe-bundler", "~>1.2", :group => [:development, :test]
|
11
|
-
gem "hoe-gemspec", "~>1.0", :group => [:development, :test]
|
12
11
|
gem "hoe-git", "~>1.6", :group => [:development, :test]
|
13
12
|
gem "minitest", "~>5.10.1", :group => [:development, :test]
|
14
13
|
gem "mocha", "~>1.5.0", :group => [:development, :test]
|
data/History.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 1.0.0.beta3 / 2018-08-01
|
2
|
+
|
3
|
+
Note: This is a beta release. The pmdtester is feature complete,
|
4
|
+
but might contain bugs.
|
5
|
+
|
6
|
+
## External Contributions
|
7
|
+
|
8
|
+
* [#28](https://github.com/pmd/pmd-regression-tester/pull/28): Refactor require statements - [BBG](https://github.com/djydewang)
|
9
|
+
* [#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)
|
10
|
+
* [#30](https://github.com/pmd/pmd-regression-tester/pull/30): Fix diff_cmd in RuleSetBuilder - [BBG](https://github.com/djydewang)
|
11
|
+
* [#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)
|
12
|
+
* [#32](https://github.com/pmd/pmd-regression-tester/pull/32): Update Readme.rdoc - [BBG](https://github.com/djydewang)
|
13
|
+
|
1
14
|
# 1.0.0.beta2 / 2018-07-17
|
2
15
|
|
3
16
|
* First release of pmdtester
|
data/Manifest.txt
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
.hoerc
|
2
|
+
.rubocop.yml
|
3
|
+
.rubocop_todo.yml
|
4
|
+
.travis.yml
|
5
|
+
Gemfile
|
6
|
+
History.md
|
7
|
+
LICENSE
|
8
|
+
Manifest.txt
|
9
|
+
README.rdoc
|
10
|
+
Rakefile
|
11
|
+
bin/pmdtester
|
12
|
+
config/all-java.xml
|
13
|
+
config/design.xml
|
14
|
+
config/project-list.xml
|
15
|
+
config/projectlist_1_0_0.xsd
|
16
|
+
lib/pmdtester.rb
|
17
|
+
lib/pmdtester/builders/diff_builder.rb
|
18
|
+
lib/pmdtester/builders/diff_report_builder.rb
|
19
|
+
lib/pmdtester/builders/html_report_builder.rb
|
20
|
+
lib/pmdtester/builders/pmd_report_builder.rb
|
21
|
+
lib/pmdtester/builders/rule_set_builder.rb
|
22
|
+
lib/pmdtester/builders/summary_report_builder.rb
|
23
|
+
lib/pmdtester/cmd.rb
|
24
|
+
lib/pmdtester/parsers/options.rb
|
25
|
+
lib/pmdtester/parsers/pmd_report_document.rb
|
26
|
+
lib/pmdtester/parsers/projects_parser.rb
|
27
|
+
lib/pmdtester/pmd_branch_detail.rb
|
28
|
+
lib/pmdtester/pmd_error.rb
|
29
|
+
lib/pmdtester/pmd_report_detail.rb
|
30
|
+
lib/pmdtester/pmd_violation.rb
|
31
|
+
lib/pmdtester/project.rb
|
32
|
+
lib/pmdtester/report_diff.rb
|
33
|
+
lib/pmdtester/resource_locator.rb
|
34
|
+
lib/pmdtester/runner.rb
|
35
|
+
resources/css/maven-base.css
|
36
|
+
resources/css/maven-theme.css
|
data/README.rdoc
CHANGED
@@ -15,19 +15,92 @@ The diff report can be generated according to the base and patch branch of PMD
|
|
15
15
|
on a list of standard projects(Spring Framework, Hibernate, Solr, etc.)
|
16
16
|
|
17
17
|
== SYNOPSIS:
|
18
|
-
|
19
|
-
|
18
|
+
===Options:
|
19
|
+
-r, --local-git-repo path to the local PMD repository
|
20
|
+
-b, --base-branch name of the base branch in local PMD repository
|
21
|
+
-p, --patch-branch name of the patch branch in local PMD repository
|
22
|
+
-bc, --base-config path to the base PMD configuration file default:PMDTESTER_INSTALLED_DIR/config/all-java.xml
|
23
|
+
-pc, --patch-config path to the patch PMD configuration file default:PMDTESTER_INSTALLED_DIR/config/all-java.xml
|
24
|
+
-c, --config path to the base and patch PMD configuration file
|
25
|
+
-l, --list-of-project path to the file which contains the list of standard projects default:PMDTESTER_INSTALLED_DIR/config/project-list.xml
|
26
|
+
-m, --mode the mode of the tool: 'local', 'online' or 'single'
|
27
|
+
single: Set this option to 'single' if your patch branch contains changes
|
28
|
+
for any option that can't work on master/base branch
|
29
|
+
online: Set this option to 'online' if you want to download
|
30
|
+
the PMD report of master/base branch rather than generating it locally
|
31
|
+
local: Default option is 'local', PMD reports for the base and patch branches are generated locally.
|
32
|
+
|
33
|
+
-f, --html-flag whether to not generate the html diff report in single mode
|
34
|
+
-a, --auto-gen-config whether to generate configurations automatically based on branch differences,this option only works in online and local mode
|
35
|
+
-d, --debug whether change log level to DEBUG to see more information
|
36
|
+
-v, --version
|
37
|
+
-h, --help
|
38
|
+
=== Quick start
|
39
|
+
==== Run local mode
|
40
|
+
pmdtester -b master -p YOUR_DEVELOPMENT_BRANCH
|
41
|
+
==== Run single mode
|
42
|
+
pmdtester -p YOUR_DEVELOPMENT_BRANCH -pc CONFIG_ONLY_CONTAINS_NEW_PMD_JAVA_RULE -m single
|
43
|
+
==== Run online mode
|
44
|
+
pmdtester -b master -p YOUR_DEVELOPMENT_BRANCH -m online
|
45
|
+
=== Output
|
46
|
+
The tool creates the following folders:
|
47
|
+
target
|
48
|
+
├── repositories <- the analyzed projects are cloned here
|
49
|
+
│ ├── PROJECT_NAME_1
|
50
|
+
│ ├── ......
|
51
|
+
│ └── PROJECT_NAME_n
|
52
|
+
└── reports
|
53
|
+
├── BASE_BRANCH_NAME <- the base baseline is placed here
|
54
|
+
├── PATCH_BRANCH_NAME <- the patch baseline is placed here
|
55
|
+
└── diff
|
56
|
+
├── index.xml <- the summary report of diff reports
|
57
|
+
├── base_config.xml <- the resources of the summary report
|
58
|
+
├── patch_config.xml <- the resources fo the summary report
|
59
|
+
├── css <- css reources are placed here
|
60
|
+
├── PROJECT_NAME_1
|
61
|
+
└── index.xml <- the diff report of PROJECT_1
|
62
|
+
├── .......
|
63
|
+
└── PROJECT_NAME_n
|
64
|
+
└── index.xml <- the diff report of PROJECT_N
|
65
|
+
====The baseline format
|
66
|
+
branch_name
|
67
|
+
├── branch_info.json
|
68
|
+
├── config.xml
|
69
|
+
├── STANDARD_PROJECT_NAME_1
|
70
|
+
│ ├── report_info.json
|
71
|
+
│ └── pmd_report.xml
|
72
|
+
├── ......................
|
73
|
+
│ ├── report_info.json
|
74
|
+
│ └── pmd_report.xml
|
75
|
+
└── STANDARD_PROJECT_NAME_n
|
76
|
+
├── report_info.info
|
77
|
+
└── pmd_report.xml
|
20
78
|
|
21
79
|
== REQUIREMENTS:
|
22
|
-
|
23
|
-
|
24
|
-
|
80
|
+
* Ruby 2.4.1 or higher
|
81
|
+
=== Runtime dependency
|
82
|
+
nokogiri ~> 1.8.2
|
83
|
+
slop ~> 4.6.2
|
84
|
+
=== Development dependency
|
85
|
+
hoe ~> 3.17
|
86
|
+
hoe-bundler ~> 1.2
|
87
|
+
hoe-git ~> 1.6
|
88
|
+
minitest ~> 5.10.1
|
89
|
+
mocha ~> 1.5.0
|
90
|
+
rdoc < 6, >= 4.0
|
91
|
+
rubocop ~> 0.56.0
|
92
|
+
test-unit ~> 3.2.3
|
93
|
+
|
25
94
|
== INSTALL:
|
26
95
|
|
27
|
-
|
96
|
+
gem install pmdtester --pre
|
28
97
|
|
29
98
|
== DEVELOPERS:
|
30
|
-
|
31
|
-
|
99
|
+
git clone https://github.com/pmd/pmd-regression-tester.git
|
100
|
+
cd pmd-regression-tester
|
101
|
+
gem install bundler
|
102
|
+
bundle install
|
103
|
+
rake verify # run this command before commit your changes
|
104
|
+
|
32
105
|
|
33
106
|
|
data/Rakefile
CHANGED
@@ -3,31 +3,31 @@
|
|
3
3
|
# -*- ruby -*-
|
4
4
|
require 'rake/testtask'
|
5
5
|
require 'rubocop/rake_task'
|
6
|
-
require_relative '
|
6
|
+
require_relative 'lib/pmdtester'
|
7
7
|
|
8
8
|
gem 'hoe'
|
9
9
|
require 'hoe'
|
10
|
+
|
10
11
|
Hoe.plugin :bundler
|
11
|
-
Hoe.plugin :gemspec
|
12
12
|
Hoe.plugin :git
|
13
13
|
|
14
14
|
hoe = Hoe.spec 'pmdtester' do
|
15
|
-
self.version = PmdTester::
|
15
|
+
self.version = PmdTester::VERSION
|
16
16
|
|
17
17
|
developer 'Andreas Dangel', 'andreas.dangel@adangel.org'
|
18
18
|
developer 'Binguo Bao', 'djydewang@gmail.com'
|
19
19
|
|
20
|
-
self.clean_globs = %w[target/reports/**/* target/test/**/*]
|
20
|
+
self.clean_globs = %w[target/reports/**/* target/test/**/* Gemfile.lock]
|
21
21
|
self.extra_deps += [['nokogiri', '~> 1.8.2'], ['slop', '~> 4.6.2']]
|
22
22
|
self.extra_dev_deps += [
|
23
23
|
['hoe-bundler', '~> 1.2'],
|
24
|
-
['hoe-gemspec', '~> 1.0'],
|
25
24
|
['hoe-git', '~> 1.6'],
|
26
25
|
['minitest', '~> 5.10.1'],
|
27
26
|
['mocha', '~> 1.5.0'],
|
28
27
|
['rubocop', '~> 0.56.0'],
|
29
28
|
['test-unit', '~> 3.2.3']
|
30
29
|
]
|
30
|
+
self.spec_extras[:required_rubygems_version] = '>= 2.4.1'
|
31
31
|
|
32
32
|
license 'BSD-2-Clause'
|
33
33
|
end
|
@@ -51,4 +51,6 @@ task 'hoe:spec' do
|
|
51
51
|
File.open("#{hoe.name}.gemspec", "w") { |f| f.write hoe.spec.to_ruby}
|
52
52
|
end
|
53
53
|
|
54
|
+
desc 'verify code quality before committing changes'
|
55
|
+
task 'verify' => ['clean', 'test', 'rubocop', 'bundler:gemfile', 'git:manifest']
|
54
56
|
# vim: syntax=ruby
|
data/bin/pmdtester
CHANGED
data/lib/pmdtester.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'logger'
|
4
|
+
|
5
|
+
require_relative 'pmdtester/cmd'
|
6
|
+
require_relative 'pmdtester/pmd_branch_detail'
|
7
|
+
require_relative 'pmdtester/pmd_error'
|
8
|
+
require_relative 'pmdtester/pmd_report_detail'
|
9
|
+
require_relative 'pmdtester/pmd_violation'
|
10
|
+
require_relative 'pmdtester/project'
|
11
|
+
require_relative 'pmdtester/report_diff'
|
12
|
+
require_relative 'pmdtester/resource_locator'
|
13
|
+
require_relative 'pmdtester/runner'
|
14
|
+
|
15
|
+
require_relative 'pmdtester/builders/html_report_builder'
|
16
|
+
require_relative 'pmdtester/builders/diff_builder'
|
17
|
+
require_relative 'pmdtester/builders/diff_report_builder'
|
18
|
+
require_relative 'pmdtester/builders/pmd_report_builder'
|
19
|
+
require_relative 'pmdtester/builders/rule_set_builder'
|
20
|
+
require_relative 'pmdtester/builders/summary_report_builder'
|
21
|
+
|
22
|
+
require_relative 'pmdtester/parsers/options'
|
23
|
+
require_relative 'pmdtester/parsers/pmd_report_document'
|
24
|
+
require_relative 'pmdtester/parsers/projects_parser'
|
25
|
+
|
26
|
+
# PmdTester is a regression testing tool ensure that new problems
|
27
|
+
# and unexpected behaviors will not be introduced to PMD project
|
28
|
+
# after fixing an issue and new rules can work as expected.
|
29
|
+
module PmdTester
|
30
|
+
VERSION = '1.0.0-beta3'
|
31
|
+
|
32
|
+
def logger
|
33
|
+
PmdTester.logger
|
34
|
+
end
|
35
|
+
|
36
|
+
# Global, memoized, lazy initialized instance of a logger
|
37
|
+
def self.logger
|
38
|
+
@logger ||= Logger.new(STDOUT)
|
39
|
+
end
|
40
|
+
end
|
@@ -1,11 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
|
-
require_relative '../pmd_error'
|
5
|
-
require_relative '../pmd_violation'
|
6
|
-
require_relative '../pmd_report_detail'
|
7
|
-
require_relative '../parsers/pmd_report_document'
|
8
|
-
require_relative '../report_diff'
|
9
4
|
|
10
5
|
module PmdTester
|
11
6
|
# Building difference between two pmd xml files
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
|
-
require_relative './html_report_builder'
|
5
4
|
|
6
5
|
module PmdTester
|
7
6
|
# Building diff report for a single project
|
@@ -74,8 +73,8 @@ module PmdTester
|
|
74
73
|
def build_summary_row(doc, item, base, patch, diff)
|
75
74
|
doc.tr do
|
76
75
|
doc.td(class: 'c') { doc.text item }
|
77
|
-
doc.td(class: '
|
78
|
-
doc.td(class: '
|
76
|
+
doc.td(class: 'b') { doc.text base }
|
77
|
+
doc.td(class: 'a') { doc.text patch }
|
79
78
|
doc.td(class: 'c') { doc.text diff }
|
80
79
|
end
|
81
80
|
end
|
@@ -132,7 +131,7 @@ module PmdTester
|
|
132
131
|
end
|
133
132
|
|
134
133
|
def build_violation_table_row(doc, key, pmd_violation, a_index)
|
135
|
-
doc.tr(class: pmd_violation.branch == 'base' ? '
|
134
|
+
doc.tr(class: pmd_violation.branch == 'base' ? 'b' : 'a') do
|
136
135
|
# The anchor
|
137
136
|
doc.td do
|
138
137
|
doc.a(id: "A#{a_index}", href: "#A#{a_index}") { doc.text '#' }
|
@@ -205,7 +204,7 @@ module PmdTester
|
|
205
204
|
doc.tbody do
|
206
205
|
b_index = 1
|
207
206
|
errors.each do |pmd_error|
|
208
|
-
doc.tr(class: pmd_error.branch == 'base' ? '
|
207
|
+
doc.tr(class: pmd_error.branch == 'base' ? 'b' : 'a') do
|
209
208
|
# The anchor
|
210
209
|
doc.td do
|
211
210
|
doc.a(id: "B#{b_index}", href: "#B#{b_index}") { doc.text '#' }
|
@@ -1,10 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'fileutils'
|
4
|
-
require_relative '../cmd'
|
5
|
-
require_relative '../project'
|
6
|
-
require_relative '../pmd_branch_detail'
|
7
|
-
require_relative '../pmd_report_detail'
|
8
4
|
|
9
5
|
module PmdTester
|
10
6
|
# Building pmd xml reports according to a list of standard
|
@@ -101,7 +97,7 @@ module PmdTester
|
|
101
97
|
|
102
98
|
sum_time = 0
|
103
99
|
@projects.each do |project|
|
104
|
-
logger.info "Generating #{project.name}'s PMD report
|
100
|
+
logger.info "Generating #{project.name}'s PMD report"
|
105
101
|
execution_time, end_time =
|
106
102
|
generate_pmd_report(project.local_source_path,
|
107
103
|
project.get_pmd_report_path(@pmd_branch_name))
|
@@ -2,8 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'set'
|
5
|
-
require_relative '../cmd'
|
6
|
-
require_relative '../resource_locator'
|
7
5
|
|
8
6
|
module PmdTester
|
9
7
|
# This class is responsible for generation dynamic configuration
|
@@ -48,7 +46,7 @@ module PmdTester
|
|
48
46
|
base = @options.base_branch
|
49
47
|
patch = @options.patch_branch
|
50
48
|
# We only need to support git here, since PMD's repo is using git.
|
51
|
-
diff_cmd = "git diff --name-only #{base}..#{patch} -- pmd
|
49
|
+
diff_cmd = "git diff --name-only #{base}..#{patch} -- pmd-core pmd-java"
|
52
50
|
filenames = Cmd.execute(diff_cmd)
|
53
51
|
end
|
54
52
|
filenames.split("\n")
|
@@ -80,7 +78,7 @@ module PmdTester
|
|
80
78
|
|
81
79
|
def build_config_file(rule_sets)
|
82
80
|
if rule_sets.empty?
|
83
|
-
|
81
|
+
logger.info NO_JAVA_RULES_CHANGED_MESSAGE
|
84
82
|
exit 0
|
85
83
|
end
|
86
84
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'slop'
|
4
|
-
require_relative '../pmdtester'
|
5
4
|
|
6
5
|
module PmdTester
|
7
6
|
class MissRequiredOptionError < StandardError; end
|
@@ -15,7 +14,8 @@ module PmdTester
|
|
15
14
|
LOCAL = 'local'
|
16
15
|
ONLINE = 'online'
|
17
16
|
SINGLE = 'single'
|
18
|
-
|
17
|
+
DEFAULT_CONFIG_PATH = ResourceLocator.locate('config/all-java.xml')
|
18
|
+
DEFAULT_LIST_PATH = ResourceLocator.locate('config/project-list.xml')
|
19
19
|
|
20
20
|
attr_reader :local_git_repo
|
21
21
|
attr_reader :base_branch
|
@@ -70,11 +70,14 @@ module PmdTester
|
|
70
70
|
o.string '-b', '--base-branch', 'name of the base branch in local PMD repository'
|
71
71
|
o.string '-p', '--patch-branch',
|
72
72
|
'name of the patch branch in local PMD repository'
|
73
|
-
o.string '-bc', '--base-config', 'path to the base PMD configuration file'
|
74
|
-
|
73
|
+
o.string '-bc', '--base-config', 'path to the base PMD configuration file',
|
74
|
+
default: DEFAULT_CONFIG_PATH
|
75
|
+
o.string '-pc', '--patch-config', 'path to the patch PMD configuration file',
|
76
|
+
default: DEFAULT_CONFIG_PATH
|
75
77
|
o.string '-c', '--config', 'path to the base and patch PMD configuration file'
|
76
78
|
o.string '-l', '--list-of-project',
|
77
|
-
'path to the file which contains the list of standard projects'
|
79
|
+
'path to the file which contains the list of standard projects',
|
80
|
+
default: DEFAULT_LIST_PATH
|
78
81
|
o.string '-m', '--mode', mode_message, default: 'local'
|
79
82
|
o.bool '-f', '--html-flag',
|
80
83
|
'whether to not generate the html diff report in single mode'
|
@@ -113,20 +116,17 @@ module PmdTester
|
|
113
116
|
def check_local_options
|
114
117
|
check_option(LOCAL, 'base branch name', @base_branch)
|
115
118
|
check_option(LOCAL, 'base branch config path', @base_config) unless @auto_config_flag
|
116
|
-
check_option(LOCAL, 'patch branch name', @patch_branch)
|
117
119
|
check_option(LOCAL, 'patch branch config path', @patch_config) unless @auto_config_flag
|
118
120
|
check_option(LOCAL, 'list of projects file path', @project_list)
|
119
121
|
end
|
120
122
|
|
121
123
|
def check_single_options
|
122
|
-
check_option(SINGLE, 'patch branch name', @patch_branch)
|
123
124
|
check_option(SINGLE, 'patch branch config path', @patch_config)
|
124
125
|
check_option(SINGLE, 'list of projects file path', @project_list)
|
125
126
|
end
|
126
127
|
|
127
128
|
def check_online_options
|
128
129
|
check_option(ONLINE, 'base branch name', @base_branch)
|
129
|
-
check_option(ONLINE, 'patch branch name', @patch_branch)
|
130
130
|
end
|
131
131
|
|
132
132
|
def check_common_options
|
@@ -1,8 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'nokogiri'
|
4
|
-
require_relative '../pmd_violation'
|
5
|
-
require_relative '../pmd_error'
|
6
4
|
module PmdTester
|
7
5
|
# This class is used for registering types of events you are interested in handling.
|
8
6
|
# Also see: https://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/SAX/Document
|
data/lib/pmdtester/project.rb
CHANGED
data/lib/pmdtester/runner.rb
CHANGED
@@ -1,15 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative './builders/diff_builder.rb'
|
4
|
-
require_relative './builders/diff_report_builder.rb'
|
5
|
-
require_relative './builders/rule_set_builder'
|
6
|
-
require_relative './builders/summary_report_builder.rb'
|
7
|
-
require_relative './builders/pmd_report_builder.rb'
|
8
|
-
require_relative './parsers/options'
|
9
|
-
require_relative './parsers/projects_parser'
|
10
|
-
require_relative './pmdtester'
|
11
|
-
require_relative './pmd_branch_detail'
|
12
|
-
|
13
3
|
module PmdTester
|
14
4
|
# The Runner is a class responsible of organizing all PmdTester modules
|
15
5
|
# and running the PmdTester
|
@@ -28,6 +18,7 @@ module PmdTester
|
|
28
18
|
when Options::SINGLE
|
29
19
|
run_single_mode
|
30
20
|
end
|
21
|
+
introduce_new_pmd_error?
|
31
22
|
end
|
32
23
|
|
33
24
|
def run_local_mode
|
@@ -126,5 +117,12 @@ module PmdTester
|
|
126
117
|
def get_projects(file_path)
|
127
118
|
@projects = ProjectsParser.new.parse(file_path)
|
128
119
|
end
|
120
|
+
|
121
|
+
def introduce_new_pmd_error?
|
122
|
+
@projects.each do |project|
|
123
|
+
return true if project.introduce_new_errors?
|
124
|
+
end
|
125
|
+
false
|
126
|
+
end
|
129
127
|
end
|
130
128
|
end
|
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.0.0.pre.
|
4
|
+
version: 1.0.0.pre.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Dangel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-08-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -53,20 +53,6 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.2'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: hoe-gemspec
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '1.0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '1.0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: hoe-git
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,14 +168,17 @@ executables:
|
|
182
168
|
extensions: []
|
183
169
|
extra_rdoc_files:
|
184
170
|
- History.md
|
171
|
+
- Manifest.txt
|
185
172
|
- README.rdoc
|
186
173
|
files:
|
174
|
+
- ".hoerc"
|
187
175
|
- ".rubocop.yml"
|
188
176
|
- ".rubocop_todo.yml"
|
189
177
|
- ".travis.yml"
|
190
178
|
- Gemfile
|
191
179
|
- History.md
|
192
180
|
- LICENSE
|
181
|
+
- Manifest.txt
|
193
182
|
- README.rdoc
|
194
183
|
- Rakefile
|
195
184
|
- bin/pmdtester
|
@@ -197,6 +186,7 @@ files:
|
|
197
186
|
- config/design.xml
|
198
187
|
- config/project-list.xml
|
199
188
|
- config/projectlist_1_0_0.xsd
|
189
|
+
- lib/pmdtester.rb
|
200
190
|
- lib/pmdtester/builders/diff_builder.rb
|
201
191
|
- lib/pmdtester/builders/diff_report_builder.rb
|
202
192
|
- lib/pmdtester/builders/html_report_builder.rb
|
@@ -211,7 +201,6 @@ files:
|
|
211
201
|
- lib/pmdtester/pmd_error.rb
|
212
202
|
- lib/pmdtester/pmd_report_detail.rb
|
213
203
|
- lib/pmdtester/pmd_violation.rb
|
214
|
-
- lib/pmdtester/pmdtester.rb
|
215
204
|
- lib/pmdtester/project.rb
|
216
205
|
- lib/pmdtester/report_diff.rb
|
217
206
|
- lib/pmdtester/resource_locator.rb
|
@@ -235,9 +224,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
235
224
|
version: '0'
|
236
225
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
237
226
|
requirements:
|
238
|
-
- - "
|
227
|
+
- - ">="
|
239
228
|
- !ruby/object:Gem::Version
|
240
|
-
version:
|
229
|
+
version: 2.4.1
|
241
230
|
requirements: []
|
242
231
|
rubyforge_project:
|
243
232
|
rubygems_version: 2.7.6
|
data/lib/pmdtester/pmdtester.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'logger'
|
4
|
-
|
5
|
-
# PmdTester is a regression testing tool ensure that new problems
|
6
|
-
# and unexpected behaviors will not be introduced to PMD project
|
7
|
-
# after fixing an issue , and new rules can work as expected.
|
8
|
-
module PmdTester
|
9
|
-
def logger
|
10
|
-
PmdTester.logger
|
11
|
-
end
|
12
|
-
|
13
|
-
# Global, memoized, lazy initialized instance of a logger
|
14
|
-
def self.logger
|
15
|
-
@logger ||= Logger.new(STDOUT)
|
16
|
-
end
|
17
|
-
end
|