danger-pmd 0.2.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.
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Represent a PMD violation.
3
4
  class PmdViolation
4
- PRIORITY_ERROR_THRESHOLD = 2
5
+ PRIORITY_ERROR_THRESHOLD = 4
5
6
  attr_accessor :violation
6
7
 
7
8
  def initialize(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 = "0.2.1"
4
+ VERSION = '1.0.2'
5
5
  end
data/lib/pmd/plugin.rb CHANGED
@@ -11,18 +11,18 @@ module Danger
11
11
  #
12
12
  # @example Running PMD with a specific Gradle task or report file (glob accepted)
13
13
  #
14
- # pmd.gradle_task = 'app:pmd' #defalut: pmd
15
- # pmd.report_file = "module/build/reports/pmd/pmd.xml" #defalut: app/build/reports/pmd/pmd.xml
14
+ # pmd.gradle_task = 'app:pmd' # default: pmd
15
+ # pmd.report_file = 'module/build/reports/pmd/pmd.xml' # default: app/build/reports/pmd/pmd.xml
16
16
  # pmd.report
17
17
  #
18
18
  # @example Running PMD with a specific root path
19
19
  #
20
- # pmd.root_path = '/Users/developer/project
20
+ # pmd.root_path = '/Users/developer/project'
21
21
  # pmd.report
22
22
  #
23
23
  # @example Running PMD with an array of report files (glob accepted)
24
24
  #
25
- # pmd.report_files = ["modules/**/build/reports/pmd/pmd.xml", "app/build/reports/pmd/pmd.xml"]
25
+ # pmd.report_files = ['modules/**/build/reports/pmd/pmd.xml', 'app/build/reports/pmd/pmd.xml']
26
26
  # pmd.report
27
27
  #
28
28
  # @example Running PMD without running a Gradle task
@@ -32,20 +32,19 @@ module Danger
32
32
  #
33
33
  # @see mathroule/danger-pmd
34
34
  # @tags java, android, pmd
35
-
36
35
  class DangerPmd < Plugin
37
- require_relative "./pmd_file"
36
+ require_relative './entity/pmd_file'
38
37
 
39
38
  # Custom Gradle task to run.
40
39
  # This is useful when your project has different flavors.
41
- # Defaults to "pmd".
40
+ # Defaults to 'pmd'.
42
41
  # @return [String]
43
42
  attr_writer :gradle_task
44
43
 
45
- # A getter for `gradle_task`, returning "pmd" if value is nil.
44
+ # A getter for `gradle_task`, returning 'pmd' if value is nil.
46
45
  # @return [String]
47
46
  def gradle_task
48
- @gradle_task ||= "pmd"
47
+ @gradle_task ||= 'pmd'
49
48
  end
50
49
 
51
50
  # Skip Gradle task.
@@ -62,11 +61,11 @@ module Danger
62
61
 
63
62
  # An absolute path to a root.
64
63
  # To comment errors to VCS, this needs to know relative path of files from the root.
65
- # Defaults to result of "git rev-parse --show-toplevel".
64
+ # Defaults to result of 'git rev-parse --show-toplevel'.
66
65
  # @return [String] the root path of git repository by default.
67
66
  attr_writer :root_path
68
67
 
69
- # 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.
70
69
  # @return [String]
71
70
  def root_path
72
71
  @root_path ||= `git rev-parse --show-toplevel`.chomp
@@ -74,23 +73,23 @@ module Danger
74
73
 
75
74
  # Location of report file.
76
75
  # If your pmd task outputs to a different location, you can specify it here.
77
- # Defaults to "app/build/reports/pmd/pmd.xml".
76
+ # Defaults to 'app/build/reports/pmd/pmd.xml'.
78
77
  # @return [String]
79
78
  attr_writer :report_file
80
79
 
81
- # 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.
82
81
  # @return [String]
83
82
  def report_file
84
- @report_file ||= "app/build/reports/pmd/pmd.xml"
83
+ @report_file ||= 'app/build/reports/pmd/pmd.xml'
85
84
  end
86
85
 
87
86
  # Location of report files.
88
87
  # If your pmd task outputs to a different location, you can specify it here.
89
- # Defaults to ["app/build/reports/pmd/pmd.xml"].
88
+ # Defaults to ['app/build/reports/pmd/pmd.xml'].
90
89
  # @return [Array[String]]
91
90
  attr_writer :report_files
92
91
 
93
- # 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.
94
93
  # @return [Array[String]]
95
94
  def report_files
96
95
  @report_files ||= [report_file]
@@ -101,17 +100,17 @@ module Danger
101
100
  # It fails if `report_file` cannot be found inside current directory.
102
101
  # It fails if `report_files` is empty.
103
102
  # @return [Array[PmdFile]]
104
- def report(inline_comment = true)
103
+ def report(inline_mode: true)
105
104
  unless skip_gradle_task
106
- return fail("Could not find `gradlew` inside current directory") unless gradlew_exists?
105
+ raise('Could not find `gradlew` inside current directory') unless gradlew_exists?
107
106
 
108
107
  exec_gradle_task
109
108
  end
110
109
 
111
110
  report_files_expanded = Dir.glob(report_files).sort
112
- 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?
113
112
 
114
- do_comment(report_files_expanded, inline_comment)
113
+ do_comment(report_files_expanded, inline_mode)
115
114
  end
116
115
 
117
116
  private
@@ -137,14 +136,14 @@ module Danger
137
136
  # A getter for `pmd_report`, returning PMD report.
138
137
  # @return [Oga::XML::Document]
139
138
  def pmd_report(report_file)
140
- require "oga"
139
+ require 'oga'
141
140
  Oga.parse_xml(File.open(report_file))
142
141
  end
143
142
 
144
143
  # A getter for PMD issues, returning PMD issues.
145
144
  # @return [Array[PmdFile]]
146
145
  def pmd_issues(report_file)
147
- pmd_report(report_file).xpath("//file").map do |pmd_file|
146
+ pmd_report(report_file).xpath('//file').map do |pmd_file|
148
147
  PmdFile.new(root_path, pmd_file)
149
148
  end
150
149
  end
@@ -157,26 +156,30 @@ module Danger
157
156
 
158
157
  # Generate report and send inline comment with Danger's warn or fail method.
159
158
  # @return [Array[PmdFile]]
160
- def do_comment(report_files, inline_comment = true)
159
+ def do_comment(report_files, inline_mode)
161
160
  pmd_issues = []
162
161
 
163
162
  report_files.each do |report_file|
164
163
  pmd_issues(report_file).each do |pmd_file|
165
164
  next unless target_files.include? pmd_file.relative_path
166
165
 
167
- pmd_issues.push(pmd_file)
168
-
169
- pmd_file.violations.each do |pmd_violation|
170
- if inline_comment
171
- send(pmd_violation.type, pmd_violation.description, file: pmd_file.relative_path, line: pmd_violation.line)
172
- else
173
- send(pmd_violation.type, "#{pmd_file.relative_path} : #{pmd_violation.description} at #{pmd_violation.line}")
174
- end
175
- end
166
+ parse_file(pmd_file, pmd_issues, inline_mode)
176
167
  end
177
168
  end
178
169
 
179
170
  pmd_issues
180
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
181
184
  end
182
185
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../spec_helper"
4
+
5
+ module Pmd
6
+ require 'oga'
7
+
8
+ describe PmdFile do
9
+ it 'should initialize relative path ending with file separator' do
10
+ xml = Oga.parse_xml(File.open('spec/fixtures/pmd_report.xml'))
11
+ pmd_file = PmdFile.new('/Users/developer/sample/', xml.xpath('//file').first)
12
+
13
+ expect(pmd_file.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
14
+ expect(pmd_file.relative_path).to eq('app/src/main/java/com/android/sample/Tools.java')
15
+ expect(pmd_file.violations).not_to be_nil
16
+ expect(pmd_file.violations.length).to eq(1)
17
+ expect(pmd_file.violations.first).not_to be_nil
18
+ expect(pmd_file.violations.first.line).to eq(5)
19
+ expect(pmd_file.violations.first.description).to eq("The utility class name 'Tools' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)'")
20
+ end
21
+
22
+ it 'should initialize relative path not ending with file separator' do
23
+ xml = Oga.parse_xml(File.open('spec/fixtures/pmd_report.xml'))
24
+ pmd_file = PmdFile.new('/Users/developer/sample', xml.xpath('//file').first)
25
+
26
+ expect(pmd_file.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
27
+ expect(pmd_file.relative_path).to eq('app/src/main/java/com/android/sample/Tools.java')
28
+ expect(pmd_file.violations).not_to be_nil
29
+ expect(pmd_file.violations.length).to eq(1)
30
+ expect(pmd_file.violations.first).not_to be_nil
31
+ expect(pmd_file.violations.first.line).to eq(5)
32
+ expect(pmd_file.violations.first.description).to eq("The utility class name 'Tools' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)'")
33
+ end
34
+
35
+ it 'should initialize relative path not prefixed' do
36
+ xml = Oga.parse_xml(File.open('spec/fixtures/pmd_report.xml'))
37
+ pmd_file = PmdFile.new('/Users/developer/something', xml.xpath('//file').first)
38
+
39
+ expect(pmd_file.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
40
+ expect(pmd_file.relative_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
41
+ expect(pmd_file.violations).not_to be_nil
42
+ expect(pmd_file.violations.length).to eq(1)
43
+ expect(pmd_file.violations.first).not_to be_nil
44
+ expect(pmd_file.violations.first.line).to eq(5)
45
+ expect(pmd_file.violations.first.description).to eq("The utility class name 'Tools' doesn't match '[A-Z][a-zA-Z0-9]+(Utils?|Helper)'")
46
+ end
47
+ end
48
+ end
data/spec/pmd_spec.rb CHANGED
@@ -1,70 +1,70 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require File.expand_path("spec_helper", __dir__)
3
+ require File.expand_path('spec_helper', __dir__)
4
4
 
5
5
  module Danger
6
6
  describe Danger::DangerPmd do
7
- it "should be a plugin" do
7
+ it 'should be a plugin' do
8
8
  expect(Danger::DangerPmd.new(nil)).to be_a Danger::Plugin
9
9
  end
10
10
 
11
- describe "with Dangerfile" do
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
- it "Check default Gradle task" do
18
- expect(@pmd.gradle_task).to eq("pmd")
17
+ it 'Check default Gradle task' do
18
+ expect(@pmd.gradle_task).to eq('pmd')
19
19
  end
20
20
 
21
- it "Set custom Gradle task" do
22
- custom_task = "pmdStagingDebug"
21
+ it 'Set custom Gradle task' do
22
+ custom_task = 'pmdStagingDebug'
23
23
  @pmd.gradle_task = custom_task
24
24
  expect(@pmd.gradle_task).to eq(custom_task)
25
25
  end
26
26
 
27
- it "Check default skip Gradle task" do
27
+ it 'Check default skip Gradle task' do
28
28
  expect(@pmd.skip_gradle_task).to eq(false)
29
29
  end
30
30
 
31
- it "Set custom skip Gradle task" do
31
+ it 'Set custom skip Gradle task' do
32
32
  skip_gradle_task = true
33
33
  @pmd.skip_gradle_task = skip_gradle_task
34
34
  expect(@pmd.skip_gradle_task).to eq(skip_gradle_task)
35
35
  end
36
36
 
37
- it "Check default report file path" do
38
- expect(@pmd.report_file).to eq("app/build/reports/pmd/pmd.xml")
37
+ it 'Check default report file path' do
38
+ expect(@pmd.report_file).to eq('app/build/reports/pmd/pmd.xml')
39
39
  end
40
40
 
41
- it "Set custom report file path" do
42
- custom_report_path = "custom-path/pmd_sub_report.xml"
41
+ it 'Set custom report file path' do
42
+ custom_report_path = 'custom-path/pmd_sub_report.xml'
43
43
  @pmd.report_file = custom_report_path
44
44
  expect(@pmd.report_file).to eq(custom_report_path)
45
45
  end
46
46
 
47
- it "Check default report files paths" do
48
- expect(@pmd.report_files).to eq(["app/build/reports/pmd/pmd.xml"])
47
+ it 'Check default report files paths' do
48
+ expect(@pmd.report_files).to eq(['app/build/reports/pmd/pmd.xml'])
49
49
  end
50
50
 
51
- it "Set custom report files paths" do
52
- custom_report_paths = ["custom-path/pmd_report_1.xml", "custom-path/pmd_report_2.xml"]
51
+ it 'Set custom report files paths' do
52
+ custom_report_paths = %w[custom-path/pmd_report_1.xml custom-path/pmd_report_2.xml]
53
53
  @pmd.report_files = custom_report_paths
54
54
  expect(@pmd.report_files).to eq(custom_report_paths)
55
55
  end
56
56
 
57
- it "Check default root path" do
57
+ it 'Check default root path' do
58
58
  expect(@pmd.root_path).to eq(Dir.pwd)
59
59
  end
60
60
 
61
- it "Set custom root path" do
62
- root_path = "/Users/developer/sample/"
61
+ it 'Set custom root path' do
62
+ root_path = '/Users/developer/sample/'
63
63
  @pmd.root_path = root_path
64
64
  expect(@pmd.root_path).to eq(root_path)
65
65
  end
66
66
 
67
- it "Report with report file" do
67
+ it 'Report with report file' do
68
68
  target_files = [
69
69
  "app/src/main/java/com/android/sample/MainActivity.java",
70
70
  "app/src/main/java/com/android/sample/Tools.java",
@@ -73,8 +73,8 @@ module Danger
73
73
  ]
74
74
  allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return(target_files)
75
75
 
76
- @pmd.report_file = "spec/fixtures/pmd_report.xml"
77
- @pmd.root_path = "/Users/developer/sample/"
76
+ @pmd.report_file = 'spec/fixtures/pmd_report.xml'
77
+ @pmd.root_path = '/Users/developer/sample/'
78
78
  @pmd.skip_gradle_task = true
79
79
 
80
80
  pmd_issues = @pmd.report
@@ -83,8 +83,8 @@ module Danger
83
83
 
84
84
  pmd_issue1 = pmd_issues[0]
85
85
  expect(pmd_issue1).not_to be_nil
86
- expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
87
- expect(pmd_issue1.relative_path).to eq("app/src/main/java/com/android/sample/Tools.java")
86
+ expect(pmd_issue1.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
87
+ expect(pmd_issue1.relative_path).to eq('app/src/main/java/com/android/sample/Tools.java')
88
88
  expect(pmd_issue1.violations).not_to be_nil
89
89
  expect(pmd_issue1.violations.length).to eq(1)
90
90
  expect(pmd_issue1.violations.first).not_to be_nil
@@ -93,8 +93,8 @@ module Danger
93
93
 
94
94
  pmd_issue2 = pmd_issues[1]
95
95
  expect(pmd_issue2).not_to be_nil
96
- expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
97
- expect(pmd_issue2.relative_path).to eq("app/src/main/java/com/android/sample/MainActivity.java")
96
+ expect(pmd_issue2.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java')
97
+ expect(pmd_issue2.relative_path).to eq('app/src/main/java/com/android/sample/MainActivity.java')
98
98
  expect(pmd_issue2.violations).not_to be_nil
99
99
  expect(pmd_issue2.violations.length).to eq(1)
100
100
  expect(pmd_issue2.violations.first).not_to be_nil
@@ -103,8 +103,8 @@ module Danger
103
103
 
104
104
  pmd_issue3 = pmd_issues[2]
105
105
  expect(pmd_issue3).not_to be_nil
106
- expect(pmd_issue3.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
107
- expect(pmd_issue3.relative_path).to eq("app/src/test/java/com/android/sample/ExampleUnitTest.java")
106
+ expect(pmd_issue3.absolute_path).to eq('/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java')
107
+ expect(pmd_issue3.relative_path).to eq('app/src/test/java/com/android/sample/ExampleUnitTest.java')
108
108
  expect(pmd_issue3.violations).not_to be_nil
109
109
  expect(pmd_issue3.violations.length).to eq(1)
110
110
  expect(pmd_issue3.violations.first).not_to be_nil
@@ -113,8 +113,8 @@ module Danger
113
113
 
114
114
  pmd_issue4 = pmd_issues[3]
115
115
  expect(pmd_issue4).not_to be_nil
116
- expect(pmd_issue4.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
117
- expect(pmd_issue4.relative_path).to eq("app/src/test/java/com/android/sample/ToolsTest.java")
116
+ expect(pmd_issue4.absolute_path).to eq('/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java')
117
+ expect(pmd_issue4.relative_path).to eq('app/src/test/java/com/android/sample/ToolsTest.java')
118
118
  expect(pmd_issue4.violations).not_to be_nil
119
119
  expect(pmd_issue4.violations.length).to eq(2)
120
120
  expect(pmd_issue4.violations[0]).not_to be_nil
@@ -142,8 +142,8 @@ module Danger
142
142
 
143
143
  pmd_issue1 = pmd_issues[0]
144
144
  expect(pmd_issue1).not_to be_nil
145
- expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
146
- expect(pmd_issue1.relative_path).to eq("app/src/main/java/com/android/sample/Tools.java")
145
+ expect(pmd_issue1.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
146
+ expect(pmd_issue1.relative_path).to eq('app/src/main/java/com/android/sample/Tools.java')
147
147
  expect(pmd_issue1.violations).not_to be_nil
148
148
  expect(pmd_issue1.violations.length).to eq(1)
149
149
  expect(pmd_issue1.violations.first).not_to be_nil
@@ -152,8 +152,8 @@ module Danger
152
152
 
153
153
  pmd_issue2 = pmd_issues[1]
154
154
  expect(pmd_issue2).not_to be_nil
155
- expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
156
- expect(pmd_issue2.relative_path).to eq("app/src/test/java/com/android/sample/ToolsTest.java")
155
+ expect(pmd_issue2.absolute_path).to eq('/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java')
156
+ expect(pmd_issue2.relative_path).to eq('app/src/test/java/com/android/sample/ToolsTest.java')
157
157
  expect(pmd_issue2.violations).not_to be_nil
158
158
  expect(pmd_issue2.violations.length).to eq(2)
159
159
  expect(pmd_issue2.violations[0]).not_to be_nil
@@ -175,8 +175,8 @@ module Danger
175
175
  ]
176
176
  allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return(target_files)
177
177
 
178
- @pmd.report_files = ["spec/fixtures/pmd_report.xml", "spec/fixtures/**/pmd_sub_report.xml"]
179
- @pmd.root_path = "/Users/developer/sample"
178
+ @pmd.report_files = %w[spec/fixtures/pmd_report.xml spec/fixtures/**/pmd_sub_report.xml]
179
+ @pmd.root_path = '/Users/developer/sample/'
180
180
  @pmd.skip_gradle_task = true
181
181
 
182
182
  pmd_issues = @pmd.report
@@ -185,8 +185,8 @@ module Danger
185
185
 
186
186
  pmd_issue1 = pmd_issues[0]
187
187
  expect(pmd_issue1).not_to be_nil
188
- expect(pmd_issue1.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java")
189
- expect(pmd_issue1.relative_path).to eq("app/src/main/java/com/android/sample/Tools.java")
188
+ expect(pmd_issue1.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Tools.java')
189
+ expect(pmd_issue1.relative_path).to eq('app/src/main/java/com/android/sample/Tools.java')
190
190
  expect(pmd_issue1.violations).not_to be_nil
191
191
  expect(pmd_issue1.violations.length).to eq(1)
192
192
  expect(pmd_issue1.violations.first).not_to be_nil
@@ -195,8 +195,8 @@ module Danger
195
195
 
196
196
  pmd_issue2 = pmd_issues[1]
197
197
  expect(pmd_issue2).not_to be_nil
198
- expect(pmd_issue2.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java")
199
- expect(pmd_issue2.relative_path).to eq("app/src/main/java/com/android/sample/MainActivity.java")
198
+ expect(pmd_issue2.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/MainActivity.java')
199
+ expect(pmd_issue2.relative_path).to eq('app/src/main/java/com/android/sample/MainActivity.java')
200
200
  expect(pmd_issue2.violations).not_to be_nil
201
201
  expect(pmd_issue2.violations.length).to eq(1)
202
202
  expect(pmd_issue2.violations.first).not_to be_nil
@@ -205,8 +205,8 @@ module Danger
205
205
 
206
206
  pmd_issue3 = pmd_issues[2]
207
207
  expect(pmd_issue3).not_to be_nil
208
- expect(pmd_issue3.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java")
209
- expect(pmd_issue3.relative_path).to eq("app/src/test/java/com/android/sample/ExampleUnitTest.java")
208
+ expect(pmd_issue3.absolute_path).to eq('/Users/developer/sample/app/src/test/java/com/android/sample/ExampleUnitTest.java')
209
+ expect(pmd_issue3.relative_path).to eq('app/src/test/java/com/android/sample/ExampleUnitTest.java')
210
210
  expect(pmd_issue3.violations).not_to be_nil
211
211
  expect(pmd_issue3.violations.length).to eq(1)
212
212
  expect(pmd_issue3.violations.first).not_to be_nil
@@ -215,8 +215,8 @@ module Danger
215
215
 
216
216
  pmd_issue4 = pmd_issues[3]
217
217
  expect(pmd_issue4).not_to be_nil
218
- expect(pmd_issue4.absolute_path).to eq("/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java")
219
- expect(pmd_issue4.relative_path).to eq("app/src/test/java/com/android/sample/ToolsTest.java")
218
+ expect(pmd_issue4.absolute_path).to eq('/Users/developer/sample/app/src/test/java/com/android/sample/ToolsTest.java')
219
+ expect(pmd_issue4.relative_path).to eq('app/src/test/java/com/android/sample/ToolsTest.java')
220
220
  expect(pmd_issue4.violations).not_to be_nil
221
221
  expect(pmd_issue4.violations.length).to eq(2)
222
222
  expect(pmd_issue4.violations[0]).not_to be_nil
@@ -228,50 +228,44 @@ module Danger
228
228
 
229
229
  pmd_issue5 = pmd_issues[4]
230
230
  expect(pmd_issue5).not_to be_nil
231
- expect(pmd_issue5.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java")
232
- expect(pmd_issue5.relative_path).to eq("app/src/main/java/com/android/sample/Utils.java")
231
+ expect(pmd_issue5.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Utils.java')
232
+ expect(pmd_issue5.relative_path).to eq('app/src/main/java/com/android/sample/Utils.java')
233
233
  expect(pmd_issue5.violations).not_to be_nil
234
234
  expect(pmd_issue5.violations.length).to eq(2)
235
235
  expect(pmd_issue5.violations[0]).not_to be_nil
236
236
  expect(pmd_issue5.violations[0].line).to eq(23)
237
- expect(pmd_issue5.violations[0].description).to eq("These nested if statements could be combined")
237
+ expect(pmd_issue5.violations[0].description).to eq('These nested if statements could be combined')
238
238
  expect(pmd_issue5.violations[1]).not_to be_nil
239
239
  expect(pmd_issue5.violations[1].line).to eq(45)
240
- 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")
240
+ 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')
241
241
 
242
242
  pmd_issue6 = pmd_issues[5]
243
243
  expect(pmd_issue6).not_to be_nil
244
- expect(pmd_issue6.absolute_path).to eq("/Users/developer/sample/app/src/main/java/com/android/sample/Application.java")
245
- expect(pmd_issue6.relative_path).to eq("app/src/main/java/com/android/sample/Application.java")
244
+ expect(pmd_issue6.absolute_path).to eq('/Users/developer/sample/app/src/main/java/com/android/sample/Application.java')
245
+ expect(pmd_issue6.relative_path).to eq('app/src/main/java/com/android/sample/Application.java')
246
246
  expect(pmd_issue6.violations).not_to be_nil
247
247
  expect(pmd_issue6.violations.length).to eq(1)
248
248
  expect(pmd_issue6.violations[0]).not_to be_nil
249
249
  expect(pmd_issue6.violations[0].line).to eq(135)
250
- 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")
250
+ 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')
251
251
  end
252
252
 
253
- it "Report without Gradle" do
253
+ it 'Report without Gradle' do
254
254
  allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return([])
255
255
 
256
- @pmd.report_file = "spec/fixtures/pmd_report.xml"
256
+ @pmd.report_file = 'spec/fixtures/pmd_report.xml'
257
257
  @pmd.skip_gradle_task = false
258
258
 
259
- pmd_issues = @pmd.report
260
- expect(pmd_issues).not_to be_nil
261
- expect(pmd_issues.length).to be(1)
262
- expect(pmd_issues[0]).to be("Could not find `gradlew` inside current directory")
259
+ expect { @pmd.report }.to raise_error('Could not find `gradlew` inside current directory')
263
260
  end
264
261
 
265
- it "Report without existing report file" do
262
+ it 'Report without existing report file' do
266
263
  allow_any_instance_of(Danger::DangerPmd).to receive(:target_files).and_return([])
267
264
 
268
- @pmd.report_file = "spec/fixtures/custom/pmd_report.xml"
265
+ @pmd.report_file = 'spec/fixtures/custom/pmd_report.xml'
269
266
  @pmd.skip_gradle_task = true
270
267
 
271
- pmd_issues = @pmd.report
272
- expect(pmd_issues).not_to be_nil
273
- expect(pmd_issues.length).to be(1)
274
- expect(pmd_issues[0]).to eq("Could not find matching PMD report files for [\"spec/fixtures/custom/pmd_report.xml\"] inside current directory")
268
+ expect { @pmd.report }.to raise_error('Could not find matching PMD report files for ["spec/fixtures/custom/pmd_report.xml"] inside current directory')
275
269
  end
276
270
  end
277
271
  end