danger-pmd 1.0.1 → 1.0.2

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.
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-pmd (1.0.1)
4
+ danger-pmd (1.0.2)
5
5
  danger-plugin-api (~> 1.0)
6
- oga (~> 2.10)
6
+ oga (~> 2.15)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -11,17 +11,17 @@ GEM
11
11
  addressable (2.7.0)
12
12
  public_suffix (>= 2.0.2, < 5.0)
13
13
  ansi (1.5.0)
14
- ast (2.4.0)
14
+ ast (2.4.2)
15
15
  claide (1.0.3)
16
16
  claide-plugins (0.9.2)
17
17
  cork
18
18
  nap
19
19
  open4 (~> 1.3)
20
- coderay (1.1.2)
20
+ coderay (1.1.3)
21
21
  colored2 (3.1.2)
22
22
  cork (0.3.0)
23
23
  colored2 (~> 3.1)
24
- danger (8.2.2)
24
+ danger (8.2.3)
25
25
  claide (~> 1.0)
26
26
  claide-plugins (>= 0.9.2)
27
27
  colored2 (~> 3.1)
@@ -33,10 +33,10 @@ GEM
33
33
  kramdown-parser-gfm (~> 1.0)
34
34
  no_proxy_fix
35
35
  octokit (~> 4.7)
36
- terminal-table (~> 1)
36
+ terminal-table (>= 1, < 4)
37
37
  danger-plugin-api (1.0.0)
38
38
  danger (> 2.0)
39
- diff-lcs (1.3)
39
+ diff-lcs (1.4.4)
40
40
  faraday (1.3.0)
41
41
  faraday-net_http (~> 1.0)
42
42
  multipart-post (>= 1.2, < 3)
@@ -44,11 +44,11 @@ GEM
44
44
  faraday-http-cache (2.2.0)
45
45
  faraday (>= 0.8)
46
46
  faraday-net_http (1.0.1)
47
- ffi (1.11.3)
47
+ ffi (1.15.0)
48
48
  formatador (0.2.5)
49
49
  git (1.8.1)
50
50
  rchardet (~> 1.8)
51
- guard (2.16.1)
51
+ guard (2.16.2)
52
52
  formatador (>= 0.2.4)
53
53
  listen (>= 2.7, < 4.0)
54
54
  lumberjack (>= 1.0.12, < 2.0)
@@ -62,16 +62,15 @@ GEM
62
62
  guard (~> 2.1)
63
63
  guard-compat (~> 1.1)
64
64
  rspec (>= 2.99.0, < 4.0)
65
- jaro_winkler (1.5.4)
66
- kramdown (2.3.0)
65
+ kramdown (2.3.1)
67
66
  rexml
68
67
  kramdown-parser-gfm (1.1.0)
69
68
  kramdown (~> 2.0)
70
- listen (3.0.7)
71
- rb-fsevent (>= 0.9.3)
72
- rb-inotify (>= 0.9.7)
73
- lumberjack (1.0.13)
74
- method_source (0.9.2)
69
+ listen (3.0.8)
70
+ rb-fsevent (~> 0.9, >= 0.9.4)
71
+ rb-inotify (~> 0.9, >= 0.9.7)
72
+ lumberjack (1.2.8)
73
+ method_source (1.0.0)
75
74
  multipart-post (2.1.1)
76
75
  nap (1.1.0)
77
76
  nenv (0.3.0)
@@ -86,69 +85,81 @@ GEM
86
85
  ast
87
86
  ruby-ll (~> 2.1)
88
87
  open4 (1.3.4)
89
- parallel (1.19.1)
90
- parser (2.6.5.0)
91
- ast (~> 2.4.0)
92
- pry (0.12.2)
93
- coderay (~> 1.1.0)
94
- method_source (~> 0.9.0)
88
+ parallel (1.20.1)
89
+ parser (3.0.0.0)
90
+ ast (~> 2.4.1)
91
+ pry (0.14.0)
92
+ coderay (~> 1.1)
93
+ method_source (~> 1.0)
95
94
  public_suffix (4.0.6)
96
95
  rainbow (3.0.0)
97
- rake (13.0.1)
98
- rb-fsevent (0.10.3)
96
+ rake (13.0.3)
97
+ rb-fsevent (0.10.4)
99
98
  rb-inotify (0.10.1)
100
99
  ffi (~> 1.0)
101
100
  rchardet (1.8.0)
101
+ regexp_parser (2.1.1)
102
102
  rexml (3.2.4)
103
- rspec (3.9.0)
104
- rspec-core (~> 3.9.0)
105
- rspec-expectations (~> 3.9.0)
106
- rspec-mocks (~> 3.9.0)
107
- rspec-core (3.9.0)
108
- rspec-support (~> 3.9.0)
109
- rspec-expectations (3.9.0)
103
+ rspec (3.10.0)
104
+ rspec-core (~> 3.10.0)
105
+ rspec-expectations (~> 3.10.0)
106
+ rspec-mocks (~> 3.10.0)
107
+ rspec-core (3.10.1)
108
+ rspec-support (~> 3.10.0)
109
+ rspec-expectations (3.10.1)
110
110
  diff-lcs (>= 1.2.0, < 2.0)
111
- rspec-support (~> 3.9.0)
112
- rspec-mocks (3.9.0)
111
+ rspec-support (~> 3.10.0)
112
+ rspec-mocks (3.10.2)
113
113
  diff-lcs (>= 1.2.0, < 2.0)
114
- rspec-support (~> 3.9.0)
115
- rspec-support (3.9.0)
116
- rubocop (0.78.0)
117
- jaro_winkler (~> 1.5.1)
114
+ rspec-support (~> 3.10.0)
115
+ rspec-support (3.10.2)
116
+ rubocop (1.11.0)
118
117
  parallel (~> 1.10)
119
- parser (>= 2.6)
118
+ parser (>= 3.0.0.0)
120
119
  rainbow (>= 2.2.2, < 4.0)
120
+ regexp_parser (>= 1.8, < 3.0)
121
+ rexml
122
+ rubocop-ast (>= 1.2.0, < 2.0)
121
123
  ruby-progressbar (~> 1.7)
122
- unicode-display_width (>= 1.4.0, < 1.7)
124
+ unicode-display_width (>= 1.4.0, < 3.0)
125
+ rubocop-ast (1.4.1)
126
+ parser (>= 2.7.1.5)
127
+ rubocop-rake (0.5.1)
128
+ rubocop
129
+ rubocop-rspec (2.2.0)
130
+ rubocop (~> 1.0)
131
+ rubocop-ast (>= 1.1.0)
123
132
  ruby-ll (2.1.2)
124
133
  ansi
125
134
  ast
126
- ruby-progressbar (1.10.1)
135
+ ruby-progressbar (1.11.0)
127
136
  ruby2_keywords (0.0.4)
128
137
  sawyer (0.8.2)
129
138
  addressable (>= 2.3.5)
130
139
  faraday (> 0.8, < 2.0)
131
140
  shellany (0.0.1)
132
- terminal-table (1.8.0)
141
+ terminal-table (3.0.0)
133
142
  unicode-display_width (~> 1.1, >= 1.1.1)
134
- thor (1.0.1)
135
- unicode-display_width (1.6.0)
136
- yard (0.9.20)
143
+ thor (1.1.0)
144
+ unicode-display_width (1.7.0)
145
+ yard (0.9.26)
137
146
 
138
147
  PLATFORMS
139
148
  ruby
140
149
 
141
150
  DEPENDENCIES
142
- bundler (~> 1.3)
151
+ bundler (~> 2.0)
143
152
  danger-pmd!
144
- guard (~> 2.14)
145
- guard-rspec (~> 4.7)
146
- listen (= 3.0.7)
147
- pry
153
+ guard (~> 2.16.2)
154
+ guard-rspec (~> 4.7.3)
155
+ listen (~> 3.0.8)
156
+ pry (~> 0.14.0)
148
157
  rake (~> 13.0)
149
- rspec (~> 3.4)
150
- rubocop (~> 0.75)
151
- yard (~> 0.9.20)
158
+ rspec (~> 3.10.0)
159
+ rubocop (~> 1.11.0)
160
+ rubocop-rake (~> 0.5.1)
161
+ rubocop-rspec (~> 2.2.0)
162
+ yard (~> 0.9.26)
152
163
 
153
164
  BUNDLED WITH
154
165
  2.2.14
data/danger-pmd.gemspec CHANGED
@@ -4,40 +4,42 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'pmd/gem_version.rb'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = 'danger-pmd'
8
- spec.version = Pmd::VERSION
9
- spec.authors = ['Mathieu Rul']
10
- spec.email = ['mathroule@gmail.com']
11
- spec.description = 'A Danger plugin for PMD.'
12
- spec.summary = 'A Danger plugin for PMD (Programming Mistake Detector), see https://pmd.github.io.'
13
- spec.homepage = 'https://github.com/mathroule/danger-pmd'
14
- spec.license = 'MIT'
15
-
16
- spec.files = `git ls-files`.split($/)
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
7
+ spec.name = 'danger-pmd'
8
+ spec.version = Pmd::VERSION
9
+ spec.authors = ['Mathieu Rul']
10
+ spec.email = ['mathroule@gmail.com']
11
+ spec.description = 'A Danger plugin for PMD.'
12
+ spec.summary = 'A Danger plugin for PMD (Programming Mistake Detector), see https://pmd.github.io.'
13
+ spec.homepage = 'https://github.com/mathroule/danger-pmd'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
22
- spec.add_runtime_dependency 'oga', '~> 2.10'
22
+ spec.add_runtime_dependency 'oga', '~> 2.15'
23
23
 
24
24
  # General ruby development
25
- spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'bundler', '~> 2.0'
26
26
  spec.add_development_dependency 'rake', '~> 13.0'
27
27
 
28
28
  # Testing support
29
- spec.add_development_dependency 'rspec', '~> 3.4'
29
+ spec.add_development_dependency 'rspec', '~> 3.10.0'
30
30
 
31
31
  # Linting code and docs
32
- spec.add_development_dependency 'rubocop', '~> 0.75'
33
- spec.add_development_dependency 'yard', '~> 0.9.20'
32
+ spec.add_development_dependency 'rubocop', '~> 1.11.0'
33
+ spec.add_development_dependency 'rubocop-rake', '~> 0.5.1'
34
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2.0'
35
+ spec.add_development_dependency 'yard', '~> 0.9.26'
34
36
 
35
37
  # Makes testing easy via `bundle exec guard`
36
- spec.add_development_dependency 'guard', '~> 2.14'
37
- spec.add_development_dependency 'guard-rspec', '~> 4.7'
38
+ spec.add_development_dependency 'guard', '~> 2.16.2'
39
+ spec.add_development_dependency 'guard-rspec', '~> 4.7.3'
38
40
 
39
41
  # If you want to work on older builds of ruby
40
- spec.add_development_dependency 'listen', '3.0.7'
42
+ spec.add_development_dependency 'listen', '~> 3.0.8'
41
43
 
42
44
  # This gives you the chance to run a REPL inside your tests
43
45
  # via:
@@ -46,5 +48,5 @@ Gem::Specification.new do |spec|
46
48
  # binding.pry
47
49
  #
48
50
  # This will stop test execution and let you inspect the results
49
- spec.add_development_dependency 'pry'
51
+ spec.add_development_dependency 'pry', '~> 0.14.0'
50
52
  end
data/lib/danger_plugin.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pmd/plugin"
3
+ require 'pmd/plugin'
data/lib/danger_pmd.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pmd/gem_version"
3
+ require 'pmd/gem_version'
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Represent a PMD file.
3
4
  class PmdFile
4
- require_relative "./pmd_violation"
5
+ require_relative './pmd_violation'
5
6
 
6
7
  attr_accessor :file
7
8
 
@@ -17,23 +18,19 @@ class PmdFile
17
18
 
18
19
  def initialize(prefix, file)
19
20
  @file = file
20
- @absolute_path = file.attribute("name").value.to_s
21
+ @absolute_path = file.attribute('name').value.to_s
21
22
 
22
- if prefix.end_with?(file_separator)
23
- @prefix = prefix
24
- else
25
- @prefix = prefix + file_separator
26
- end
23
+ @prefix = prefix + (prefix.end_with?(file_separator) ? '' : file_separator)
27
24
 
28
- if @absolute_path.start_with?(@prefix)
29
- @relative_path = @absolute_path[@prefix.length, @absolute_path.length - @prefix.length]
30
- else
31
- @relative_path = @absolute_path
32
- end
25
+ @relative_path = if @absolute_path.start_with?(@prefix)
26
+ @absolute_path[@prefix.length, @absolute_path.length - @prefix.length]
27
+ else
28
+ @absolute_path
29
+ end
33
30
  end
34
31
 
35
32
  def violations
36
- @violations ||= file.xpath("violation").map do |pmd_violation|
33
+ @violations ||= file.xpath('violation').map do |pmd_violation|
37
34
  PmdViolation.new(pmd_violation)
38
35
  end
39
36
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Represent a PMD violation.
3
4
  class PmdViolation
4
5
  PRIORITY_ERROR_THRESHOLD = 4
5
6
  attr_accessor :violation
@@ -9,7 +10,7 @@ class PmdViolation
9
10
  end
10
11
 
11
12
  def priority
12
- @priority ||= violation.attribute("priority").value.to_i
13
+ @priority ||= violation.attribute('priority').value.to_i
13
14
  end
14
15
 
15
16
  def type
@@ -17,10 +18,10 @@ class PmdViolation
17
18
  end
18
19
 
19
20
  def line
20
- @line ||= violation.attribute("beginline").value.to_i
21
+ @line ||= violation.attribute('beginline').value.to_i
21
22
  end
22
23
 
23
24
  def description
24
- @description ||= violation.text.gsub("\n", "")
25
+ @description ||= violation.text.gsub("\n", '')
25
26
  end
26
27
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pmd
4
- VERSION = "1.0.1"
4
+ VERSION = '1.0.2'
5
5
  end
data/lib/pmd/plugin.rb CHANGED
@@ -33,18 +33,18 @@ module Danger
33
33
  # @see mathroule/danger-pmd
34
34
  # @tags java, android, pmd
35
35
  class DangerPmd < Plugin
36
- require_relative "./entity/pmd_file"
36
+ require_relative './entity/pmd_file'
37
37
 
38
38
  # Custom Gradle task to run.
39
39
  # This is useful when your project has different flavors.
40
- # Defaults to "pmd".
40
+ # Defaults to 'pmd'.
41
41
  # @return [String]
42
42
  attr_writer :gradle_task
43
43
 
44
- # A getter for `gradle_task`, returning "pmd" if value is nil.
44
+ # A getter for `gradle_task`, returning 'pmd' if value is nil.
45
45
  # @return [String]
46
46
  def gradle_task
47
- @gradle_task ||= "pmd"
47
+ @gradle_task ||= 'pmd'
48
48
  end
49
49
 
50
50
  # Skip Gradle task.
@@ -61,11 +61,11 @@ module Danger
61
61
 
62
62
  # An absolute path to a root.
63
63
  # To comment errors to VCS, this needs to know relative path of files from the root.
64
- # Defaults to result of "git rev-parse --show-toplevel".
64
+ # Defaults to result of 'git rev-parse --show-toplevel'.
65
65
  # @return [String] the root path of git repository by default.
66
66
  attr_writer :root_path
67
67
 
68
- # A getter for `root_path`, returning result of "git rev-parse --show-toplevel" if value is nil.
68
+ # A getter for `root_path`, returning result of 'git rev-parse --show-toplevel' if value is nil.
69
69
  # @return [String]
70
70
  def root_path
71
71
  @root_path ||= `git rev-parse --show-toplevel`.chomp
@@ -73,23 +73,23 @@ module Danger
73
73
 
74
74
  # Location of report file.
75
75
  # If your pmd task outputs to a different location, you can specify it here.
76
- # Defaults to "app/build/reports/pmd/pmd.xml".
76
+ # Defaults to 'app/build/reports/pmd/pmd.xml'.
77
77
  # @return [String]
78
78
  attr_writer :report_file
79
79
 
80
- # A getter for `report_file`, returning "app/build/reports/pmd/pmd.xml" if value is nil.
80
+ # A getter for `report_file`, returning 'app/build/reports/pmd/pmd.xml' if value is nil.
81
81
  # @return [String]
82
82
  def report_file
83
- @report_file ||= "app/build/reports/pmd/pmd.xml"
83
+ @report_file ||= 'app/build/reports/pmd/pmd.xml'
84
84
  end
85
85
 
86
86
  # Location of report files.
87
87
  # If your pmd task outputs to a different location, you can specify it here.
88
- # Defaults to ["app/build/reports/pmd/pmd.xml"].
88
+ # Defaults to ['app/build/reports/pmd/pmd.xml'].
89
89
  # @return [Array[String]]
90
90
  attr_writer :report_files
91
91
 
92
- # A getter for `report_files`, returning ["app/build/reports/pmd/pmd.xml"] if value is nil.
92
+ # A getter for `report_files`, returning ['app/build/reports/pmd/pmd.xml'] if value is nil.
93
93
  # @return [Array[String]]
94
94
  def report_files
95
95
  @report_files ||= [report_file]
@@ -100,15 +100,15 @@ module Danger
100
100
  # It fails if `report_file` cannot be found inside current directory.
101
101
  # It fails if `report_files` is empty.
102
102
  # @return [Array[PmdFile]]
103
- def report(inline_mode = true)
103
+ def report(inline_mode: true)
104
104
  unless skip_gradle_task
105
- return fail("Could not find `gradlew` inside current directory") unless gradlew_exists?
105
+ raise('Could not find `gradlew` inside current directory') unless gradlew_exists?
106
106
 
107
107
  exec_gradle_task
108
108
  end
109
109
 
110
110
  report_files_expanded = Dir.glob(report_files).sort
111
- return fail("Could not find matching PMD report files for #{report_files} inside current directory") if report_files_expanded.empty?
111
+ raise("Could not find matching PMD report files for #{report_files} inside current directory") if report_files_expanded.empty?
112
112
 
113
113
  do_comment(report_files_expanded, inline_mode)
114
114
  end
@@ -136,14 +136,14 @@ module Danger
136
136
  # A getter for `pmd_report`, returning PMD report.
137
137
  # @return [Oga::XML::Document]
138
138
  def pmd_report(report_file)
139
- require "oga"
139
+ require 'oga'
140
140
  Oga.parse_xml(File.open(report_file))
141
141
  end
142
142
 
143
143
  # A getter for PMD issues, returning PMD issues.
144
144
  # @return [Array[PmdFile]]
145
145
  def pmd_issues(report_file)
146
- pmd_report(report_file).xpath("//file").map do |pmd_file|
146
+ pmd_report(report_file).xpath('//file').map do |pmd_file|
147
147
  PmdFile.new(root_path, pmd_file)
148
148
  end
149
149
  end
@@ -156,26 +156,30 @@ module Danger
156
156
 
157
157
  # Generate report and send inline comment with Danger's warn or fail method.
158
158
  # @return [Array[PmdFile]]
159
- def do_comment(report_files, inline_mode = true)
159
+ def do_comment(report_files, inline_mode)
160
160
  pmd_issues = []
161
161
 
162
162
  report_files.each do |report_file|
163
163
  pmd_issues(report_file).each do |pmd_file|
164
164
  next unless target_files.include? pmd_file.relative_path
165
165
 
166
- pmd_issues.push(pmd_file)
167
-
168
- pmd_file.violations.each do |pmd_violation|
169
- if inline_mode
170
- send(pmd_violation.type, pmd_violation.description, file: pmd_file.relative_path, line: pmd_violation.line)
171
- else
172
- send(pmd_violation.type, "#{pmd_file.relative_path} : #{pmd_violation.description} at #{pmd_violation.line}")
173
- end
174
- end
166
+ parse_file(pmd_file, pmd_issues, inline_mode)
175
167
  end
176
168
  end
177
169
 
178
170
  pmd_issues
179
171
  end
172
+
173
+ def parse_file(pmd_file, pmd_issues, inline_mode)
174
+ pmd_issues.push(pmd_file)
175
+
176
+ pmd_file.violations.each do |pmd_violation|
177
+ if inline_mode
178
+ send(pmd_violation.type, pmd_violation.description, file: pmd_file.relative_path, line: pmd_violation.line)
179
+ else
180
+ send(pmd_violation.type, "#{pmd_file.relative_path} : #{pmd_violation.description} at #{pmd_violation.line}")
181
+ end
182
+ end
183
+ end
180
184
  end
181
185
  end