danger-pmd 0.0.5 → 0.1.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/.rubocop.yml +8 -3
- data/.travis.yml +2 -2
- data/Gemfile.lock +21 -21
- data/README.md +26 -20
- data/lib/pmd/gem_version.rb +1 -1
- data/lib/pmd/plugin.rb +86 -65
- data/lib/pmd/pmd_file.rb +10 -5
- data/lib/pmd/pmd_violation.rb +1 -3
- data/spec/fixtures/report_1/pmd_sub_report.xml +14 -0
- data/spec/fixtures/report_2/pmd_sub_report.xml +11 -0
- data/spec/pmd_spec.rb +178 -29
- metadata +7 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9a2697bcfe2820d4c84823070dffd3ea0062a1aa743c55d1265613eb78865508
|
|
4
|
+
data.tar.gz: 61412ff7cae4072811742d730ab19667b0c23584bee3a92cd5ad5241700db2b3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a34d67327b69424a7ac177fd80358881c01159592711d79b62ffc45c3293144692b3549e394c71e287a7471c61a5e58c989259a952f79d51a4181a59a4d73d35
|
|
7
|
+
data.tar.gz: 916683f3ed4821208a84f0af44a6d2b33fb13c2769a03b3655d35e6a7ef8d5fd11ef6f913f3a0e4f3ee261be01be08d2a13cf8f8ea4058aa45afe2f2dd997360
|
data/.rubocop.yml
CHANGED
|
@@ -23,10 +23,10 @@ Lint/UselessAssignment:
|
|
|
23
23
|
- '**/spec/**/*'
|
|
24
24
|
|
|
25
25
|
# We could potentially enable the 2 below:
|
|
26
|
-
Layout/
|
|
26
|
+
Layout/FirstHashElementIndentation:
|
|
27
27
|
Enabled: false
|
|
28
28
|
|
|
29
|
-
Layout/
|
|
29
|
+
Layout/HashAlignment:
|
|
30
30
|
Enabled: false
|
|
31
31
|
|
|
32
32
|
# HoundCI doesn't like this rule
|
|
@@ -124,13 +124,18 @@ Metrics/BlockLength:
|
|
|
124
124
|
Exclude:
|
|
125
125
|
- "**/*_spec.rb"
|
|
126
126
|
|
|
127
|
+
Metrics/ModuleLength:
|
|
128
|
+
Max: 100
|
|
129
|
+
Exclude:
|
|
130
|
+
- "**/*_spec.rb"
|
|
131
|
+
|
|
127
132
|
Style/MixinGrouping:
|
|
128
133
|
Enabled: false
|
|
129
134
|
|
|
130
135
|
Style/FileName:
|
|
131
136
|
Enabled: false
|
|
132
137
|
|
|
133
|
-
Layout/
|
|
138
|
+
Layout/HeredocIndentation:
|
|
134
139
|
Enabled: false
|
|
135
140
|
|
|
136
141
|
Style/SpecialGlobalVars:
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
danger-pmd (0.0
|
|
4
|
+
danger-pmd (0.1.0)
|
|
5
5
|
danger-plugin-api (~> 1.0)
|
|
6
6
|
oga (~> 2.10)
|
|
7
7
|
|
|
@@ -37,14 +37,14 @@ GEM
|
|
|
37
37
|
danger-plugin-api (1.0.0)
|
|
38
38
|
danger (> 2.0)
|
|
39
39
|
diff-lcs (1.3)
|
|
40
|
-
faraday (0.
|
|
40
|
+
faraday (0.17.1)
|
|
41
41
|
multipart-post (>= 1.2, < 3)
|
|
42
42
|
faraday-http-cache (2.0.0)
|
|
43
43
|
faraday (~> 0.8)
|
|
44
|
-
ffi (1.11.
|
|
44
|
+
ffi (1.11.3)
|
|
45
45
|
formatador (0.2.5)
|
|
46
46
|
git (1.5.0)
|
|
47
|
-
guard (2.
|
|
47
|
+
guard (2.16.1)
|
|
48
48
|
formatador (>= 0.2.4)
|
|
49
49
|
listen (>= 2.7, < 4.0)
|
|
50
50
|
lumberjack (>= 1.0.12, < 2.0)
|
|
@@ -58,7 +58,7 @@ GEM
|
|
|
58
58
|
guard (~> 2.1)
|
|
59
59
|
guard-compat (~> 1.1)
|
|
60
60
|
rspec (>= 2.99.0, < 4.0)
|
|
61
|
-
jaro_winkler (1.5.
|
|
61
|
+
jaro_winkler (1.5.4)
|
|
62
62
|
kramdown (2.1.0)
|
|
63
63
|
kramdown-parser-gfm (1.1.0)
|
|
64
64
|
kramdown (~> 2.0)
|
|
@@ -80,7 +80,7 @@ GEM
|
|
|
80
80
|
ast
|
|
81
81
|
ruby-ll (~> 2.1)
|
|
82
82
|
open4 (1.3.4)
|
|
83
|
-
parallel (1.
|
|
83
|
+
parallel (1.19.1)
|
|
84
84
|
parser (2.6.5.0)
|
|
85
85
|
ast (~> 2.4.0)
|
|
86
86
|
pry (0.12.2)
|
|
@@ -90,22 +90,22 @@ GEM
|
|
|
90
90
|
rainbow (3.0.0)
|
|
91
91
|
rake (10.5.0)
|
|
92
92
|
rb-fsevent (0.10.3)
|
|
93
|
-
rb-inotify (0.10.
|
|
93
|
+
rb-inotify (0.10.1)
|
|
94
94
|
ffi (~> 1.0)
|
|
95
|
-
rspec (3.
|
|
96
|
-
rspec-core (~> 3.
|
|
97
|
-
rspec-expectations (~> 3.
|
|
98
|
-
rspec-mocks (~> 3.
|
|
99
|
-
rspec-core (3.
|
|
100
|
-
rspec-support (~> 3.
|
|
101
|
-
rspec-expectations (3.
|
|
95
|
+
rspec (3.9.0)
|
|
96
|
+
rspec-core (~> 3.9.0)
|
|
97
|
+
rspec-expectations (~> 3.9.0)
|
|
98
|
+
rspec-mocks (~> 3.9.0)
|
|
99
|
+
rspec-core (3.9.0)
|
|
100
|
+
rspec-support (~> 3.9.0)
|
|
101
|
+
rspec-expectations (3.9.0)
|
|
102
102
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
103
|
-
rspec-support (~> 3.
|
|
104
|
-
rspec-mocks (3.
|
|
103
|
+
rspec-support (~> 3.9.0)
|
|
104
|
+
rspec-mocks (3.9.0)
|
|
105
105
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
106
|
-
rspec-support (~> 3.
|
|
107
|
-
rspec-support (3.
|
|
108
|
-
rubocop (0.
|
|
106
|
+
rspec-support (~> 3.9.0)
|
|
107
|
+
rspec-support (3.9.0)
|
|
108
|
+
rubocop (0.78.0)
|
|
109
109
|
jaro_winkler (~> 1.5.1)
|
|
110
110
|
parallel (~> 1.10)
|
|
111
111
|
parser (>= 2.6)
|
|
@@ -122,7 +122,7 @@ GEM
|
|
|
122
122
|
shellany (0.0.1)
|
|
123
123
|
terminal-table (1.8.0)
|
|
124
124
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
125
|
-
thor (0.
|
|
125
|
+
thor (1.0.1)
|
|
126
126
|
unicode-display_width (1.6.0)
|
|
127
127
|
yard (0.9.20)
|
|
128
128
|
|
|
@@ -142,4 +142,4 @@ DEPENDENCIES
|
|
|
142
142
|
yard (~> 0.9.20)
|
|
143
143
|
|
|
144
144
|
BUNDLED WITH
|
|
145
|
-
1.17.
|
|
145
|
+
1.17.3
|
data/README.md
CHANGED
|
@@ -25,44 +25,50 @@ pmd.report
|
|
|
25
25
|
</pre>
|
|
26
26
|
</blockquote>
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
<blockquote>Running PMD with an array of report files
|
|
29
|
+
<pre>
|
|
30
|
+
pmd.report_files = ["modules/**/build/reports/pmd/pmd.xml", "app/build/reports/pmd/pmd.xml"]
|
|
31
|
+
pmd.report
|
|
32
|
+
</pre>
|
|
33
|
+
</blockquote>
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
<blockquote>Running PMD without running a Gradle task
|
|
36
|
+
<pre>
|
|
37
|
+
pmd.skip_gradle_task = true
|
|
38
|
+
pmd.report
|
|
39
|
+
</pre>
|
|
40
|
+
</blockquote>
|
|
41
|
+
|
|
42
|
+
#### Attributes
|
|
33
43
|
|
|
34
44
|
`gradle_task` - Custom Gradle task to run.
|
|
35
45
|
This is useful when your project has different flavors.
|
|
36
46
|
Defaults to "pmd".
|
|
37
47
|
|
|
48
|
+
`skip_gradle_task` - Skip Gradle task.
|
|
49
|
+
If you skip Gradle task, for example project does not manage Gradle.
|
|
50
|
+
|
|
38
51
|
`report_file` - Location of report file
|
|
39
52
|
If your pmd task outputs to a different location, you can specify it here.
|
|
40
53
|
Defaults to "app/build/reports/pmd/pmd.xml".
|
|
41
54
|
|
|
42
|
-
`
|
|
43
|
-
If
|
|
55
|
+
`report_files` - Location of report files
|
|
56
|
+
If your pmd task outputs to a different location, you can specify it here.
|
|
57
|
+
Defaults to ["app/build/reports/pmd/pmd.xml]".
|
|
44
58
|
|
|
45
59
|
#### Methods
|
|
46
60
|
|
|
47
|
-
`report` - Calls
|
|
61
|
+
`report` - Calls PMD task of your Gradle project, send comment and return PMD issues.
|
|
48
62
|
It fails if `gradlew` cannot be found inside current directory.
|
|
49
|
-
It fails if `report_file` cannot be found inside current directory.
|
|
63
|
+
It fails if `report_file` or `report_files` cannot be found inside current directory.
|
|
50
64
|
|
|
51
|
-
`
|
|
65
|
+
`gradle_task` - A getter for `gradle_task`, returning Gradle task report.
|
|
52
66
|
|
|
53
|
-
`
|
|
67
|
+
`skip_gradle_task` - A getter for `skip_gradle_task`.
|
|
54
68
|
|
|
55
|
-
`
|
|
69
|
+
`report_file` - A getter for `report_file`.
|
|
56
70
|
|
|
57
|
-
`
|
|
58
|
-
|
|
59
|
-
`pmd_report` - A getter for `pmd_report`, returning PMD report.
|
|
60
|
-
|
|
61
|
-
`pmd_issues` - A getter for PMD issues, returning PMD issues.
|
|
62
|
-
|
|
63
|
-
`send_inline_comment` - Send inline comment with danger's warn or fail method.
|
|
64
|
-
|
|
65
|
-
`skip_gradle_task` - Skip Gradle task.
|
|
71
|
+
`report_files` - A getter for `report_files`.
|
|
66
72
|
|
|
67
73
|
## Development
|
|
68
74
|
|
data/lib/pmd/gem_version.rb
CHANGED
data/lib/pmd/plugin.rb
CHANGED
|
@@ -15,6 +15,11 @@ module Danger
|
|
|
15
15
|
# pmd.report_file = "app/build/reports/pmd/pmd.xml"
|
|
16
16
|
# pmd.report
|
|
17
17
|
#
|
|
18
|
+
# @example Running PMD with an array of report files
|
|
19
|
+
#
|
|
20
|
+
# pmd.report_files = ["modules/**/build/reports/pmd/pmd.xml", "app/build/reports/pmd/pmd.xml"]
|
|
21
|
+
# pmd.report
|
|
22
|
+
#
|
|
18
23
|
# @example Running PMD without running a Gradle task
|
|
19
24
|
#
|
|
20
25
|
# pmd.skip_gradle_task = true
|
|
@@ -26,123 +31,139 @@ module Danger
|
|
|
26
31
|
class DangerPmd < Plugin
|
|
27
32
|
require_relative "./pmd_file"
|
|
28
33
|
|
|
29
|
-
# Custom Gradle module to run.
|
|
30
|
-
# This is useful when your project has different flavors.
|
|
31
|
-
# Defaults to "app".
|
|
32
|
-
# @return [String]
|
|
33
|
-
attr_writer :gradle_module
|
|
34
|
-
|
|
35
34
|
# Custom Gradle task to run.
|
|
36
35
|
# This is useful when your project has different flavors.
|
|
37
36
|
# Defaults to "pmd".
|
|
38
37
|
# @return [String]
|
|
39
38
|
attr_writer :gradle_task
|
|
40
39
|
|
|
41
|
-
#
|
|
42
|
-
# If your pmd task outputs to a different location, you can specify it here.
|
|
43
|
-
# Defaults to "build/reports/pmd/pmd.xml".
|
|
40
|
+
# A getter for `gradle_task`, returning "pmd" if value is nil.
|
|
44
41
|
# @return [String]
|
|
45
|
-
|
|
42
|
+
def gradle_task
|
|
43
|
+
@gradle_task ||= "pmd"
|
|
44
|
+
end
|
|
46
45
|
|
|
47
|
-
# Skip Gradle task
|
|
46
|
+
# Skip Gradle task.
|
|
48
47
|
# If you skip Gradle task, for example project does not manage Gradle.
|
|
48
|
+
# Defaults to `false`.
|
|
49
49
|
# @return [Bool]
|
|
50
50
|
attr_writer :skip_gradle_task
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
# A getter for `skip_gradle_task`, returning false if value is nil.
|
|
53
|
+
# @return [Boolean]
|
|
54
|
+
def skip_gradle_task
|
|
55
|
+
@skip_gradle_task ||= false
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Location of report file.
|
|
59
|
+
# If your pmd task outputs to a different location, you can specify it here.
|
|
60
|
+
# Defaults to "app/build/reports/pmd/pmd.xml".
|
|
61
|
+
# @return [String]
|
|
62
|
+
attr_writer :report_file
|
|
63
|
+
|
|
64
|
+
# A getter for `report_file`, returning "app/build/reports/pmd/pmd.xml" if value is nil.
|
|
65
|
+
# @return [String]
|
|
66
|
+
def report_file
|
|
67
|
+
@report_file ||= "app/build/reports/pmd/pmd.xml"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Location of report files.
|
|
71
|
+
# If your pmd task outputs to a different location, you can specify it here.
|
|
72
|
+
# Defaults to "app/build/reports/pmd/pmd.xml".
|
|
73
|
+
# @return [Array[String]]
|
|
74
|
+
attr_writer :report_files
|
|
75
|
+
|
|
76
|
+
# A getter for `report_files`, returning ["app/build/reports/pmd/pmd.xml"] if value is nil.
|
|
77
|
+
# @return [Array[String]]
|
|
78
|
+
def report_files
|
|
79
|
+
@report_files ||= [report_file]
|
|
80
|
+
end
|
|
54
81
|
|
|
55
82
|
# Calls PMD task of your Gradle project.
|
|
56
83
|
# It fails if `gradlew` cannot be found inside current directory.
|
|
57
84
|
# It fails if `report_file` cannot be found inside current directory.
|
|
58
|
-
#
|
|
85
|
+
# It fails if `report_files` is empty.
|
|
86
|
+
# @return [Array[PmdFile]]
|
|
59
87
|
def report(inline_mode = true)
|
|
60
88
|
unless skip_gradle_task
|
|
61
|
-
return fail(
|
|
89
|
+
return fail("Could not find `gradlew` inside current directory") unless gradlew_exists?
|
|
62
90
|
|
|
63
91
|
exec_gradle_task
|
|
64
92
|
end
|
|
65
93
|
|
|
66
|
-
|
|
94
|
+
report_files_flatten = []
|
|
95
|
+
report_files.each do |report_file|
|
|
96
|
+
Dir.glob(report_file).sort.each do |report_file_glob|
|
|
97
|
+
return fail("PMD report file not found #{report_file_glob}") unless report_file_exist?(report_file_glob)
|
|
67
98
|
|
|
68
|
-
|
|
69
|
-
|
|
99
|
+
report_files_flatten.push(report_file_glob)
|
|
100
|
+
end
|
|
70
101
|
end
|
|
71
|
-
end
|
|
72
102
|
|
|
73
|
-
|
|
74
|
-
# @return [String]
|
|
75
|
-
def gradle_module
|
|
76
|
-
@gradle_module ||= "app"
|
|
103
|
+
report_and_send_inline_comment(report_files_flatten, inline_mode)
|
|
77
104
|
end
|
|
78
105
|
|
|
79
|
-
|
|
80
|
-
# @return [String]
|
|
81
|
-
def gradle_task
|
|
82
|
-
@gradle_task ||= "pmd"
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# A getter for `skip_gradle_task`, returning false if value is nil.
|
|
86
|
-
# @return [Boolean]
|
|
87
|
-
def skip_gradle_task
|
|
88
|
-
@skip_gradle_task ||= false
|
|
89
|
-
end
|
|
106
|
+
private
|
|
90
107
|
|
|
91
|
-
#
|
|
92
|
-
# @return [
|
|
93
|
-
def
|
|
94
|
-
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# A getter for current updated files
|
|
98
|
-
# @return [Array[String]]
|
|
99
|
-
def target_files
|
|
100
|
-
@target_files ||= (git.modified_files - git.deleted_files) + git.added_files
|
|
108
|
+
# Check gradlew file exists in current directory.
|
|
109
|
+
# @return [Bool]
|
|
110
|
+
def gradlew_exists?
|
|
111
|
+
!`ls gradlew`.strip.empty?
|
|
101
112
|
end
|
|
102
113
|
|
|
103
|
-
# Run Gradle task
|
|
114
|
+
# Run Gradle task.
|
|
104
115
|
# @return [void]
|
|
105
116
|
def exec_gradle_task
|
|
106
117
|
system "./gradlew #{gradle_task}"
|
|
107
118
|
end
|
|
108
119
|
|
|
109
|
-
# Check
|
|
110
|
-
# @return [Bool]
|
|
111
|
-
def gradlew_exists?
|
|
112
|
-
!`ls gradlew`.strip.empty?
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
# Check report_file exists in current directory
|
|
120
|
+
# Check report_file exists in current directory.
|
|
116
121
|
# @return [Bool]
|
|
117
|
-
def report_file_exist?
|
|
122
|
+
def report_file_exist?(report_file)
|
|
118
123
|
File.exist?(report_file)
|
|
119
124
|
end
|
|
120
125
|
|
|
121
126
|
# A getter for `pmd_report`, returning PMD report.
|
|
122
127
|
# @return [Oga::XML::Document]
|
|
123
|
-
def pmd_report
|
|
128
|
+
def pmd_report(report_file)
|
|
124
129
|
require "oga"
|
|
125
|
-
|
|
130
|
+
Oga.parse_xml(File.open(report_file))
|
|
126
131
|
end
|
|
127
132
|
|
|
128
133
|
# A getter for PMD issues, returning PMD issues.
|
|
129
134
|
# @return [Array[PmdFile]]
|
|
130
|
-
def pmd_issues
|
|
131
|
-
|
|
132
|
-
PmdFile.new(
|
|
135
|
+
def pmd_issues(report_file)
|
|
136
|
+
pmd_report(report_file).xpath("//file").map do |pmd_file|
|
|
137
|
+
PmdFile.new(pmd_file)
|
|
133
138
|
end
|
|
134
139
|
end
|
|
135
140
|
|
|
136
|
-
#
|
|
137
|
-
# @return [
|
|
138
|
-
def
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
# A getter for current updated files.
|
|
142
|
+
# @return [Array[String]]
|
|
143
|
+
def target_files
|
|
144
|
+
@target_files ||= (git.modified_files - git.deleted_files) + git.added_files
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# Generate report and send inline comment with Danger's warn or fail method.
|
|
148
|
+
# @return [Array[PmdFile]]
|
|
149
|
+
def report_and_send_inline_comment(report_files, inline_mode = true)
|
|
150
|
+
pmd_issues = []
|
|
141
151
|
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
report_files.each do |report_file|
|
|
153
|
+
pmd_issues(report_file).each do |pmd_file|
|
|
154
|
+
next unless target_files.include? pmd_file.absolute_path
|
|
155
|
+
|
|
156
|
+
pmd_issues.push(pmd_file)
|
|
157
|
+
|
|
158
|
+
next if inline_mode
|
|
159
|
+
|
|
160
|
+
pmd_file.violations.each do |pmd_violation|
|
|
161
|
+
send(pmd_violation.type, pmd_violation.description, file: pmd_file.absolute_path, line: pmd_violation.line)
|
|
162
|
+
end
|
|
144
163
|
end
|
|
145
164
|
end
|
|
165
|
+
|
|
166
|
+
pmd_issues
|
|
146
167
|
end
|
|
147
168
|
end
|
|
148
169
|
end
|
data/lib/pmd/pmd_file.rb
CHANGED
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
class PmdFile
|
|
4
4
|
require_relative "./pmd_violation"
|
|
5
|
-
attr_accessor :module_name
|
|
6
5
|
attr_accessor :file
|
|
7
6
|
|
|
8
|
-
def initialize(
|
|
9
|
-
@module_name = module_name
|
|
7
|
+
def initialize(file)
|
|
10
8
|
@file = file
|
|
11
9
|
end
|
|
12
10
|
|
|
@@ -15,12 +13,19 @@ class PmdFile
|
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
def absolute_path
|
|
18
|
-
|
|
16
|
+
dirname = File.basename(Dir.getwd)
|
|
17
|
+
if source_path.index(dirname)
|
|
18
|
+
index_start = source_path.index(dirname) + dirname.length + 1
|
|
19
|
+
else
|
|
20
|
+
index_start = 0
|
|
21
|
+
end
|
|
22
|
+
index_end = source_path.length
|
|
23
|
+
@absolute_path ||= Pathname.new(source_path[index_start, index_end]).to_s
|
|
19
24
|
end
|
|
20
25
|
|
|
21
26
|
def violations
|
|
22
27
|
@violations ||= file.xpath("violation").map do |pmd_violation|
|
|
23
|
-
PmdViolation.new(
|
|
28
|
+
PmdViolation.new(pmd_violation)
|
|
24
29
|
end
|
|
25
30
|
end
|
|
26
31
|
end
|
data/lib/pmd/pmd_violation.rb
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
|
|
5
|
+
version="6.8.0" timestamp="2019-10-03T20:34:18.074">
|
|
6
|
+
<file name="/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java">
|
|
7
|
+
<violation beginline="23" endline="23" begincolumn="21" endcolumn="21" rule="CollapsibleIfStatements" ruleset="Design" package="com.android.sample" class="Utils" method="doSomething" externalInfoUrl="https://pmd.github.io/pmd-6.15.0/pmd_rules_java_design.html#collapsibleifstatements" priority="3">
|
|
8
|
+
These nested if statements could be combined
|
|
9
|
+
</violation>
|
|
10
|
+
<violation beginline="45" endline="45" begincolumn="23" endcolumn="30" rule="AvoidDuplicateLiterals" ruleset="Error Prone" package="com.android.sample" class="Utils" externalInfoUrl="https://pmd.github.io/pmd-6.15.0/pmd_rules_java_errorprone.html#avoidduplicateliterals" priority="3">
|
|
11
|
+
The String literal "unused" appears 4 times in this file; the first occurrence is on line 45
|
|
12
|
+
</violation>
|
|
13
|
+
</file>
|
|
14
|
+
</pmd>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
|
|
5
|
+
version="6.8.0" timestamp="2019-10-03T20:34:18.074">
|
|
6
|
+
<file name="/Users/developer/sample/app/src/main/java/com/android/sample/Application.java">
|
|
7
|
+
<violation beginline="135" endline="135" begincolumn="27" endcolumn="33" rule="AvoidDuplicateLiterals" ruleset="Error Prone" package="com.android.sample" class="Application" method="start" externalInfoUrl="https://pmd.github.io/pmd-6.15.0/pmd_rules_java_errorprone.html#avoidduplicateliterals" priority="3">
|
|
8
|
+
The String literal "label" appears 5 times in this file; the first occurrence is on line 135
|
|
9
|
+
</violation>
|
|
10
|
+
</file>
|
|
11
|
+
</pmd>
|
data/spec/pmd_spec.rb
CHANGED
|
@@ -11,59 +11,69 @@ module Danger
|
|
|
11
11
|
describe "with Dangerfile" do
|
|
12
12
|
before do
|
|
13
13
|
@dangerfile = testing_dangerfile
|
|
14
|
-
@
|
|
14
|
+
@pmd = @dangerfile.pmd
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it "Check default report file path" do
|
|
18
|
-
expect(@
|
|
18
|
+
expect(@pmd.report_file).to eq("app/build/reports/pmd/pmd.xml")
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
it "Set custom report file path" do
|
|
22
|
-
custom_report_path = "custom/
|
|
23
|
-
@
|
|
24
|
-
expect(@
|
|
22
|
+
custom_report_path = "custom-path/pmd_sub_report.xml"
|
|
23
|
+
@pmd.report_file = custom_report_path
|
|
24
|
+
expect(@pmd.report_file).to eq(custom_report_path)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
it "Check default
|
|
28
|
-
expect(@
|
|
27
|
+
it "Check default report files paths" do
|
|
28
|
+
expect(@pmd.report_files).to eq(["app/build/reports/pmd/pmd.xml"])
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
it "Set custom
|
|
32
|
-
|
|
33
|
-
@
|
|
34
|
-
expect(@
|
|
31
|
+
it "Set custom report files paths" do
|
|
32
|
+
custom_report_paths = %w(custom-path/pmd_report_1.xml custom-path/pmd_report_2.xml)
|
|
33
|
+
@pmd.report_files = custom_report_paths
|
|
34
|
+
expect(@pmd.report_files).to eq(custom_report_paths)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "Check default Gradle task" do
|
|
38
|
-
expect(@
|
|
38
|
+
expect(@pmd.gradle_task).to eq("pmd")
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
it "Set custom Gradle task" do
|
|
42
42
|
custom_task = "pmdStagingDebug"
|
|
43
|
-
@
|
|
44
|
-
expect(@
|
|
43
|
+
@pmd.gradle_task = custom_task
|
|
44
|
+
expect(@pmd.gradle_task).to eq(custom_task)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "Skip Gradle task" do
|
|
48
48
|
skip_gradle_task = true
|
|
49
|
-
@
|
|
50
|
-
expect(@
|
|
49
|
+
@pmd.skip_gradle_task = skip_gradle_task
|
|
50
|
+
expect(@pmd.skip_gradle_task).to eq(skip_gradle_task)
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "Check default skip Gradle task" do
|
|
54
|
-
expect(@
|
|
54
|
+
expect(@pmd.skip_gradle_task).to eq(false)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
it "
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
it "Report with report file" do
|
|
58
|
+
target_files = [
|
|
59
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java",
|
|
60
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java",
|
|
61
|
+
"/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java",
|
|
62
|
+
"/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java"
|
|
63
|
+
]
|
|
64
|
+
allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return(target_files)
|
|
65
|
+
|
|
66
|
+
@pmd.report_file = "spec/fixtures/pmd_report.xml"
|
|
67
|
+
@pmd.skip_gradle_task = true
|
|
68
|
+
|
|
69
|
+
pmd_issues = @pmd.report
|
|
61
70
|
expect(pmd_issues).not_to be_nil
|
|
71
|
+
expect(pmd_issues.length).to be(4)
|
|
62
72
|
|
|
63
73
|
pmd_issue1 = pmd_issues[0]
|
|
64
74
|
expect(pmd_issue1).not_to be_nil
|
|
65
75
|
expect(pmd_issue1.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
66
|
-
expect(pmd_issue1.absolute_path).to eq("app/src/main/java/com/android/sample/Tools.java")
|
|
76
|
+
expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
67
77
|
expect(pmd_issue1.violations).not_to be_nil
|
|
68
78
|
expect(pmd_issue1.violations.length).to eq(1)
|
|
69
79
|
expect(pmd_issue1.violations.first).not_to be_nil
|
|
@@ -73,7 +83,7 @@ module Danger
|
|
|
73
83
|
pmd_issue2 = pmd_issues[1]
|
|
74
84
|
expect(pmd_issue2).not_to be_nil
|
|
75
85
|
expect(pmd_issue2.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
|
|
76
|
-
expect(pmd_issue2.absolute_path).to eq("app/src/main/java/com/android/sample/MainActivity.java")
|
|
86
|
+
expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
|
|
77
87
|
expect(pmd_issue2.violations).not_to be_nil
|
|
78
88
|
expect(pmd_issue2.violations.length).to eq(1)
|
|
79
89
|
expect(pmd_issue2.violations.first).not_to be_nil
|
|
@@ -83,7 +93,7 @@ module Danger
|
|
|
83
93
|
pmd_issue3 = pmd_issues[2]
|
|
84
94
|
expect(pmd_issue3).not_to be_nil
|
|
85
95
|
expect(pmd_issue3.source_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
|
|
86
|
-
expect(pmd_issue3.absolute_path).to eq("app/src/test/java/com/android/sample/ExampleUnitTest.java")
|
|
96
|
+
expect(pmd_issue3.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
|
|
87
97
|
expect(pmd_issue3.violations).not_to be_nil
|
|
88
98
|
expect(pmd_issue3.violations.length).to eq(1)
|
|
89
99
|
expect(pmd_issue3.violations.first).not_to be_nil
|
|
@@ -93,7 +103,7 @@ module Danger
|
|
|
93
103
|
pmd_issue4 = pmd_issues[3]
|
|
94
104
|
expect(pmd_issue4).not_to be_nil
|
|
95
105
|
expect(pmd_issue4.source_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
96
|
-
expect(pmd_issue4.absolute_path).to eq("app/src/test/java/com/android/sample/ToolsTest.java")
|
|
106
|
+
expect(pmd_issue4.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
97
107
|
expect(pmd_issue4.violations).not_to be_nil
|
|
98
108
|
expect(pmd_issue4.violations.length).to eq(2)
|
|
99
109
|
expect(pmd_issue4.violations[0]).not_to be_nil
|
|
@@ -104,11 +114,150 @@ module Danger
|
|
|
104
114
|
expect(pmd_issue4.violations[1].description).to eq("The JUnit 4 test method name 'getLabel_2' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
105
115
|
end
|
|
106
116
|
|
|
107
|
-
it "
|
|
117
|
+
it "Report with report file not in target files" do
|
|
118
|
+
target_files = [
|
|
119
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java",
|
|
120
|
+
"/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java"
|
|
121
|
+
]
|
|
122
|
+
allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return(target_files)
|
|
123
|
+
|
|
124
|
+
@pmd.report_file = "spec/fixtures/pmd_report.xml"
|
|
125
|
+
@pmd.skip_gradle_task = true
|
|
126
|
+
|
|
127
|
+
pmd_issues = @pmd.report
|
|
128
|
+
expect(pmd_issues).not_to be_nil
|
|
129
|
+
expect(pmd_issues.length).to be(2)
|
|
130
|
+
|
|
131
|
+
pmd_issue1 = pmd_issues[0]
|
|
132
|
+
expect(pmd_issue1).not_to be_nil
|
|
133
|
+
expect(pmd_issue1.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
134
|
+
expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
135
|
+
expect(pmd_issue1.violations).not_to be_nil
|
|
136
|
+
expect(pmd_issue1.violations.length).to eq(1)
|
|
137
|
+
expect(pmd_issue1.violations.first).not_to be_nil
|
|
138
|
+
expect(pmd_issue1.violations.first.line).to eq(5)
|
|
139
|
+
expect(pmd_issue1.violations.first.description).to eq("The utility class name 'Tools' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)'")
|
|
140
|
+
|
|
141
|
+
pmd_issue2 = pmd_issues[1]
|
|
142
|
+
expect(pmd_issue2).not_to be_nil
|
|
143
|
+
expect(pmd_issue2.source_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
144
|
+
expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
145
|
+
expect(pmd_issue2.violations).not_to be_nil
|
|
146
|
+
expect(pmd_issue2.violations.length).to eq(2)
|
|
147
|
+
expect(pmd_issue2.violations[0]).not_to be_nil
|
|
148
|
+
expect(pmd_issue2.violations[0].line).to eq(12)
|
|
149
|
+
expect(pmd_issue2.violations[0].description).to eq("The JUnit 4 test method name 'getLabel_1' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
150
|
+
expect(pmd_issue2.violations[1]).not_to be_nil
|
|
151
|
+
expect(pmd_issue2.violations[1].line).to eq(18)
|
|
152
|
+
expect(pmd_issue2.violations[1].description).to eq("The JUnit 4 test method name 'getLabel_2' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "Report with report files" do
|
|
156
|
+
target_files = [
|
|
157
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/Application.java",
|
|
158
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java",
|
|
159
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java",
|
|
160
|
+
"/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java",
|
|
161
|
+
"/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java",
|
|
162
|
+
"/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java"
|
|
163
|
+
]
|
|
164
|
+
allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return(target_files)
|
|
165
|
+
|
|
166
|
+
@pmd.report_files = %w(spec/fixtures/pmd_report.xml spec/fixtures/**/pmd_sub_report.xml)
|
|
167
|
+
@pmd.skip_gradle_task = true
|
|
168
|
+
|
|
169
|
+
pmd_issues = @pmd.report
|
|
170
|
+
expect(pmd_issues).not_to be_nil
|
|
171
|
+
expect(pmd_issues.length).to be(6)
|
|
172
|
+
|
|
173
|
+
pmd_issue1 = pmd_issues[0]
|
|
174
|
+
expect(pmd_issue1).not_to be_nil
|
|
175
|
+
expect(pmd_issue1.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
176
|
+
expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
|
|
177
|
+
expect(pmd_issue1.violations).not_to be_nil
|
|
178
|
+
expect(pmd_issue1.violations.length).to eq(1)
|
|
179
|
+
expect(pmd_issue1.violations.first).not_to be_nil
|
|
180
|
+
expect(pmd_issue1.violations.first.line).to eq(5)
|
|
181
|
+
expect(pmd_issue1.violations.first.description).to eq("The utility class name 'Tools' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)'")
|
|
182
|
+
|
|
183
|
+
pmd_issue2 = pmd_issues[1]
|
|
184
|
+
expect(pmd_issue2).not_to be_nil
|
|
185
|
+
expect(pmd_issue2.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
|
|
186
|
+
expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
|
|
187
|
+
expect(pmd_issue2.violations).not_to be_nil
|
|
188
|
+
expect(pmd_issue2.violations.length).to eq(1)
|
|
189
|
+
expect(pmd_issue2.violations.first).not_to be_nil
|
|
190
|
+
expect(pmd_issue2.violations.first.line).to eq(39)
|
|
191
|
+
expect(pmd_issue2.violations.first.description).to eq("Use equals() to compare strings instead of '==' or '!='")
|
|
192
|
+
|
|
193
|
+
pmd_issue3 = pmd_issues[2]
|
|
194
|
+
expect(pmd_issue3).not_to be_nil
|
|
195
|
+
expect(pmd_issue3.source_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
|
|
196
|
+
expect(pmd_issue3.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
|
|
197
|
+
expect(pmd_issue3.violations).not_to be_nil
|
|
198
|
+
expect(pmd_issue3.violations.length).to eq(1)
|
|
199
|
+
expect(pmd_issue3.violations.first).not_to be_nil
|
|
200
|
+
expect(pmd_issue3.violations.first.line).to eq(15)
|
|
201
|
+
expect(pmd_issue3.violations.first.description).to eq("The JUnit 4 test method name 'addition_isCorrect' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
202
|
+
|
|
203
|
+
pmd_issue4 = pmd_issues[3]
|
|
204
|
+
expect(pmd_issue4).not_to be_nil
|
|
205
|
+
expect(pmd_issue4.source_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
206
|
+
expect(pmd_issue4.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
|
|
207
|
+
expect(pmd_issue4.violations).not_to be_nil
|
|
208
|
+
expect(pmd_issue4.violations.length).to eq(2)
|
|
209
|
+
expect(pmd_issue4.violations[0]).not_to be_nil
|
|
210
|
+
expect(pmd_issue4.violations[0].line).to eq(12)
|
|
211
|
+
expect(pmd_issue4.violations[0].description).to eq("The JUnit 4 test method name 'getLabel_1' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
212
|
+
expect(pmd_issue4.violations[1]).not_to be_nil
|
|
213
|
+
expect(pmd_issue4.violations[1].line).to eq(18)
|
|
214
|
+
expect(pmd_issue4.violations[1].description).to eq("The JUnit 4 test method name 'getLabel_2' doesn't match '[a-z][a-zA-Z0-9]*'")
|
|
215
|
+
|
|
216
|
+
pmd_issue5 = pmd_issues[4]
|
|
217
|
+
expect(pmd_issue5).not_to be_nil
|
|
218
|
+
expect(pmd_issue5.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java")
|
|
219
|
+
expect(pmd_issue5.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java")
|
|
220
|
+
expect(pmd_issue5.violations).not_to be_nil
|
|
221
|
+
expect(pmd_issue5.violations.length).to eq(2)
|
|
222
|
+
expect(pmd_issue5.violations[0]).not_to be_nil
|
|
223
|
+
expect(pmd_issue5.violations[0].line).to eq(23)
|
|
224
|
+
expect(pmd_issue5.violations[0].description).to eq("These nested if statements could be combined")
|
|
225
|
+
expect(pmd_issue5.violations[1]).not_to be_nil
|
|
226
|
+
expect(pmd_issue5.violations[1].line).to eq(45)
|
|
227
|
+
expect(pmd_issue5.violations[1].description).to eq("The String literal \"unused\" appears 4 times in this file; the first occurrence is on line 45")
|
|
228
|
+
|
|
229
|
+
pmd_issue6 = pmd_issues[5]
|
|
230
|
+
expect(pmd_issue6).not_to be_nil
|
|
231
|
+
expect(pmd_issue6.source_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Application.java")
|
|
232
|
+
expect(pmd_issue6.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Application.java")
|
|
233
|
+
expect(pmd_issue6.violations).not_to be_nil
|
|
234
|
+
expect(pmd_issue6.violations.length).to eq(1)
|
|
235
|
+
expect(pmd_issue6.violations[0]).not_to be_nil
|
|
236
|
+
expect(pmd_issue6.violations[0].line).to eq(135)
|
|
237
|
+
expect(pmd_issue6.violations[0].description).to eq("The String literal \"label\" appears 5 times in this file; the first occurrence is on line 135")
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
it "Report without Gradle" do
|
|
108
241
|
allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return([])
|
|
109
|
-
|
|
110
|
-
@
|
|
111
|
-
|
|
242
|
+
|
|
243
|
+
@pmd.report_file = "spec/fixtures/pmd_report.xml"
|
|
244
|
+
@pmd.skip_gradle_task = false
|
|
245
|
+
|
|
246
|
+
pmd_issues = @pmd.report
|
|
247
|
+
expect(pmd_issues).not_to be_nil
|
|
248
|
+
expect(pmd_issues.length).to be(1)
|
|
249
|
+
expect(pmd_issues[0]).to be("Could not find `gradlew` inside current directory")
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "Report without existing report file" do
|
|
253
|
+
allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return([])
|
|
254
|
+
|
|
255
|
+
@pmd.report_file = "spec/fixtures/custom/pmd_report.xml"
|
|
256
|
+
@pmd.skip_gradle_task = true
|
|
257
|
+
|
|
258
|
+
pmd_issues = @pmd.report
|
|
259
|
+
expect(pmd_issues).not_to be_nil
|
|
260
|
+
expect(pmd_issues.length).to be(0)
|
|
112
261
|
end
|
|
113
262
|
end
|
|
114
263
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: danger-pmd
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mathieu Rul
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-12-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: danger-plugin-api
|
|
@@ -188,6 +188,8 @@ files:
|
|
|
188
188
|
- lib/pmd/pmd_file.rb
|
|
189
189
|
- lib/pmd/pmd_violation.rb
|
|
190
190
|
- spec/fixtures/pmd_report.xml
|
|
191
|
+
- spec/fixtures/report_1/pmd_sub_report.xml
|
|
192
|
+
- spec/fixtures/report_2/pmd_sub_report.xml
|
|
191
193
|
- spec/pmd_spec.rb
|
|
192
194
|
- spec/spec_helper.rb
|
|
193
195
|
homepage: https://github.com/mathroule/danger-pmd
|
|
@@ -209,11 +211,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
209
211
|
- !ruby/object:Gem::Version
|
|
210
212
|
version: '0'
|
|
211
213
|
requirements: []
|
|
212
|
-
rubygems_version: 3.0.
|
|
214
|
+
rubygems_version: 3.0.6
|
|
213
215
|
signing_key:
|
|
214
216
|
specification_version: 4
|
|
215
217
|
summary: A Danger plugin for PMD (Programming Mistake Detector), see https://pmd.github.io.
|
|
216
218
|
test_files:
|
|
217
219
|
- spec/fixtures/pmd_report.xml
|
|
220
|
+
- spec/fixtures/report_1/pmd_sub_report.xml
|
|
221
|
+
- spec/fixtures/report_2/pmd_sub_report.xml
|
|
218
222
|
- spec/pmd_spec.rb
|
|
219
223
|
- spec/spec_helper.rb
|