danger-phpmd 0.0.3 → 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/.github/workflows/CI.yml +28 -0
- data/.rubocop.yml +1 -0
- data/Gemfile.lock +21 -15
- data/README.md +31 -0
- data/lib/phpmd/gem_version.rb +1 -1
- data/lib/phpmd/plugin.rb +17 -9
- data/spec/fixtures/cleancode_warnings.php +11 -0
- data/spec/fixtures/no_warnings.php +1 -0
- data/spec/phpmd_spec.rb +26 -21
- metadata +8 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fadbd745fa93f2da53a1a67b93a0ca61de2c21f64fc585a97443e61e56c5e7e1
|
|
4
|
+
data.tar.gz: 8b31e814c6293a58d0291c390a3aaac9ea803ea447950ac19fcb854d211a5131
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4bbe29d4fd993884820861ed149c442764d07529aa8eeb2d80f69399c30b59be7dcf79378c994f6078ab7e1192b565737b0785676da7c05bdf0abe47ba0485b2
|
|
7
|
+
data.tar.gz: 6fd877b2192508304cfaf3a55485809f1676fdb4e4476f61add8fea52f4ba592b11d06a3bba32dc614823be946a7d4bc067f56e267ab5b89f881e08d861c890a
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
name: CI
|
|
3
|
+
|
|
4
|
+
on: [push]
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
test:
|
|
8
|
+
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
strategy:
|
|
11
|
+
matrix:
|
|
12
|
+
ruby-version: ['2.7', '3.0', '3.1']
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v2
|
|
16
|
+
- name: Setup PHP environment
|
|
17
|
+
uses: shivammathur/setup-php@v2
|
|
18
|
+
with:
|
|
19
|
+
php-version: '8.0'
|
|
20
|
+
coverage: none
|
|
21
|
+
tools: phpmd
|
|
22
|
+
- name: Set up Ruby
|
|
23
|
+
uses: ruby/setup-ruby@v1
|
|
24
|
+
with:
|
|
25
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
26
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
27
|
+
- name: Run tests
|
|
28
|
+
run: bundle exec rake
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
danger-phpmd (0.0
|
|
4
|
+
danger-phpmd (0.1.0)
|
|
5
5
|
danger-plugin-api (~> 1.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -19,7 +19,7 @@ GEM
|
|
|
19
19
|
colored2 (3.1.2)
|
|
20
20
|
cork (0.3.0)
|
|
21
21
|
colored2 (~> 3.1)
|
|
22
|
-
danger (8.4.
|
|
22
|
+
danger (8.4.2)
|
|
23
23
|
claide (~> 1.0)
|
|
24
24
|
claide-plugins (>= 0.9.2)
|
|
25
25
|
colored2 (~> 3.1)
|
|
@@ -34,17 +34,18 @@ GEM
|
|
|
34
34
|
terminal-table (>= 1, < 4)
|
|
35
35
|
danger-plugin-api (1.0.0)
|
|
36
36
|
danger (> 2.0)
|
|
37
|
-
diff-lcs (1.
|
|
38
|
-
faraday (1.
|
|
37
|
+
diff-lcs (1.5.0)
|
|
38
|
+
faraday (1.9.3)
|
|
39
39
|
faraday-em_http (~> 1.0)
|
|
40
40
|
faraday-em_synchrony (~> 1.0)
|
|
41
41
|
faraday-excon (~> 1.1)
|
|
42
|
-
faraday-httpclient (~> 1.0
|
|
42
|
+
faraday-httpclient (~> 1.0)
|
|
43
|
+
faraday-multipart (~> 1.0)
|
|
43
44
|
faraday-net_http (~> 1.0)
|
|
44
|
-
faraday-net_http_persistent (~> 1.
|
|
45
|
+
faraday-net_http_persistent (~> 1.0)
|
|
45
46
|
faraday-patron (~> 1.0)
|
|
46
47
|
faraday-rack (~> 1.0)
|
|
47
|
-
|
|
48
|
+
faraday-retry (~> 1.0)
|
|
48
49
|
ruby2_keywords (>= 0.0.4)
|
|
49
50
|
faraday-em_http (1.0.0)
|
|
50
51
|
faraday-em_synchrony (1.0.0)
|
|
@@ -52,13 +53,16 @@ GEM
|
|
|
52
53
|
faraday-http-cache (2.2.0)
|
|
53
54
|
faraday (>= 0.8)
|
|
54
55
|
faraday-httpclient (1.0.1)
|
|
56
|
+
faraday-multipart (1.0.2)
|
|
57
|
+
multipart-post (>= 1.2, < 3)
|
|
55
58
|
faraday-net_http (1.0.1)
|
|
56
59
|
faraday-net_http_persistent (1.2.0)
|
|
57
60
|
faraday-patron (1.0.0)
|
|
58
61
|
faraday-rack (1.0.0)
|
|
62
|
+
faraday-retry (1.0.3)
|
|
59
63
|
ffi (1.15.4)
|
|
60
64
|
formatador (0.3.0)
|
|
61
|
-
git (1.
|
|
65
|
+
git (1.10.2)
|
|
62
66
|
rchardet (~> 1.8)
|
|
63
67
|
guard (2.18.0)
|
|
64
68
|
formatador (>= 0.2.4)
|
|
@@ -95,7 +99,7 @@ GEM
|
|
|
95
99
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
96
100
|
open4 (1.3.4)
|
|
97
101
|
parallel (1.21.0)
|
|
98
|
-
parser (3.0.
|
|
102
|
+
parser (3.1.0.0)
|
|
99
103
|
ast (~> 2.4.1)
|
|
100
104
|
pry (0.14.1)
|
|
101
105
|
coderay (~> 1.1)
|
|
@@ -107,7 +111,7 @@ GEM
|
|
|
107
111
|
rb-inotify (0.10.1)
|
|
108
112
|
ffi (~> 1.0)
|
|
109
113
|
rchardet (1.8.0)
|
|
110
|
-
regexp_parser (2.
|
|
114
|
+
regexp_parser (2.2.0)
|
|
111
115
|
rexml (3.2.5)
|
|
112
116
|
rspec (3.10.0)
|
|
113
117
|
rspec-core (~> 3.10.0)
|
|
@@ -122,16 +126,16 @@ GEM
|
|
|
122
126
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
123
127
|
rspec-support (~> 3.10.0)
|
|
124
128
|
rspec-support (3.10.3)
|
|
125
|
-
rubocop (1.
|
|
129
|
+
rubocop (1.24.1)
|
|
126
130
|
parallel (~> 1.10)
|
|
127
131
|
parser (>= 3.0.0.0)
|
|
128
132
|
rainbow (>= 2.2.2, < 4.0)
|
|
129
133
|
regexp_parser (>= 1.8, < 3.0)
|
|
130
134
|
rexml
|
|
131
|
-
rubocop-ast (>= 1.
|
|
135
|
+
rubocop-ast (>= 1.15.1, < 2.0)
|
|
132
136
|
ruby-progressbar (~> 1.7)
|
|
133
137
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
134
|
-
rubocop-ast (1.
|
|
138
|
+
rubocop-ast (1.15.1)
|
|
135
139
|
parser (>= 3.0.1.1)
|
|
136
140
|
ruby-progressbar (1.11.0)
|
|
137
141
|
ruby2_keywords (0.0.5)
|
|
@@ -141,9 +145,11 @@ GEM
|
|
|
141
145
|
shellany (0.0.1)
|
|
142
146
|
terminal-table (3.0.2)
|
|
143
147
|
unicode-display_width (>= 1.1.1, < 3)
|
|
144
|
-
thor (1.1
|
|
148
|
+
thor (1.2.1)
|
|
145
149
|
unicode-display_width (2.1.0)
|
|
146
|
-
|
|
150
|
+
webrick (1.7.0)
|
|
151
|
+
yard (0.9.27)
|
|
152
|
+
webrick (~> 1.7.0)
|
|
147
153
|
|
|
148
154
|
PLATFORMS
|
|
149
155
|
ruby
|
data/README.md
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
$ gem install danger-phpmd
|
|
8
8
|
|
|
9
|
+
`phpmd` also needs to be installed before you run Danger.
|
|
10
|
+
Please check the [installation guide](https://phpmd.org/download/index.html).
|
|
11
|
+
|
|
9
12
|
## Usage
|
|
10
13
|
|
|
11
14
|
Add this to Dangerfile.
|
|
@@ -22,5 +25,33 @@ phpmd.run ruleset: "rulesets.xml"
|
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
|
|
28
|
+
### GitHub actions
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
name: CI
|
|
32
|
+
|
|
33
|
+
on: [pull_request]
|
|
25
34
|
|
|
35
|
+
jobs:
|
|
36
|
+
danger:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
if: github.event_name == 'pull_request'
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v2
|
|
41
|
+
- uses: ruby/setup-ruby@v1
|
|
42
|
+
with:
|
|
43
|
+
ruby-version: 2.6
|
|
44
|
+
bundler-cache: true
|
|
45
|
+
|
|
46
|
+
- name: Setup PHP environment
|
|
47
|
+
uses: shivammathur/setup-php@v2
|
|
48
|
+
with:
|
|
49
|
+
php-version: '8.0'
|
|
50
|
+
coverage: none
|
|
51
|
+
tools: phpmd
|
|
52
|
+
|
|
53
|
+
- run: bundle exec danger
|
|
54
|
+
env:
|
|
55
|
+
DANGER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
56
|
+
```
|
|
26
57
|
|
data/lib/phpmd/gem_version.rb
CHANGED
data/lib/phpmd/plugin.rb
CHANGED
|
@@ -23,9 +23,10 @@ module Danger
|
|
|
23
23
|
# @return [void]
|
|
24
24
|
def run(options)
|
|
25
25
|
return if target_files.empty?
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
|
|
27
|
+
tmpfile = Tempfile.open("phpmd_result")
|
|
28
|
+
Open3.capture3(cmd_path, "--reportfile", tmpfile.path, target_files.join(","), "json", options[:ruleset])
|
|
29
|
+
results = parse(tmpfile.read)
|
|
29
30
|
results.each do |result|
|
|
30
31
|
warn(result[:message], file: result[:file], line: result[:line])
|
|
31
32
|
end
|
|
@@ -33,19 +34,26 @@ module Danger
|
|
|
33
34
|
|
|
34
35
|
private
|
|
35
36
|
|
|
37
|
+
def cmd_path
|
|
38
|
+
return binary_path if binary_path
|
|
39
|
+
|
|
40
|
+
File.exist?("./vendor/bin/phpmd") ? "./vendor/bin/phpmd" : "phpmd"
|
|
41
|
+
end
|
|
42
|
+
|
|
36
43
|
def parse(json)
|
|
37
44
|
array = JSON.parse json
|
|
38
45
|
return if array.empty?
|
|
46
|
+
|
|
39
47
|
path = "#{Dir.pwd}/"
|
|
40
48
|
|
|
41
49
|
results = []
|
|
42
|
-
array[
|
|
43
|
-
file = line[
|
|
44
|
-
line[
|
|
50
|
+
array["files"].each do |line|
|
|
51
|
+
file = line["file"].sub(path, "")
|
|
52
|
+
line["violations"].each do |violation|
|
|
45
53
|
results << {
|
|
46
|
-
message: violation[
|
|
54
|
+
message: violation["description"],
|
|
47
55
|
file: file,
|
|
48
|
-
line: violation[
|
|
56
|
+
line: violation["beginLine"]
|
|
49
57
|
}
|
|
50
58
|
end
|
|
51
59
|
end
|
|
@@ -53,7 +61,7 @@ module Danger
|
|
|
53
61
|
end
|
|
54
62
|
|
|
55
63
|
def target_files
|
|
56
|
-
((git.added_files + (git.modified_files - git.deleted_files)) - git.renamed_files.map{|r|r[:before]} + git.renamed_files.map{|r|r[:after]}).uniq
|
|
64
|
+
((git.added_files + (git.modified_files - git.deleted_files)) - git.renamed_files.map { |r| r[:before] } + git.renamed_files.map { |r| r[:after] }).uniq
|
|
57
65
|
end
|
|
58
66
|
end
|
|
59
67
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<?php
|
data/spec/phpmd_spec.rb
CHANGED
|
@@ -8,39 +8,44 @@ module Danger
|
|
|
8
8
|
expect(Danger::DangerPhpmd.new(nil)).to be_a Danger::Plugin
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
#
|
|
12
|
-
# You should test your custom attributes and methods here
|
|
13
|
-
#
|
|
14
11
|
describe "with Dangerfile" do
|
|
15
12
|
before do
|
|
16
13
|
@dangerfile = testing_dangerfile
|
|
17
14
|
@my_plugin = @dangerfile.phpmd
|
|
18
|
-
|
|
19
|
-
# mock the PR data
|
|
20
|
-
# you can then use this, eg. github.pr_author, later in the spec
|
|
21
|
-
json = File.read("#{File.dirname(__FILE__)}/support/fixtures/github_pr.json") # example json: `curl https://api.github.com/repos/danger/danger-plugin-template/pulls/18 > github_pr.json`
|
|
22
|
-
allow(@my_plugin.github).to receive(:pr_json).and_return(json)
|
|
23
15
|
end
|
|
24
16
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
context "with a file included no warnings" do
|
|
18
|
+
before do
|
|
19
|
+
allow(@my_plugin).to receive(:target_files).and_return(
|
|
20
|
+
[File.expand_path("fixtures/no_warnings.php", __dir__)]
|
|
21
|
+
)
|
|
22
|
+
end
|
|
31
23
|
|
|
32
|
-
|
|
24
|
+
it "warns nothing" do
|
|
25
|
+
@my_plugin.run({ ruleset: "cleancode" })
|
|
33
26
|
|
|
34
|
-
|
|
27
|
+
expect(@dangerfile.status_report[:warnings]).to eq([])
|
|
28
|
+
end
|
|
35
29
|
end
|
|
36
30
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
context "with a file included some warnings" do
|
|
32
|
+
let(:expected_message) { "The method bar uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them." }
|
|
33
|
+
before do
|
|
34
|
+
allow(@my_plugin).to receive(:target_files).and_return(
|
|
35
|
+
[File.expand_path("fixtures/cleancode_warnings.php", __dir__)]
|
|
36
|
+
)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "warns nothing" do
|
|
40
|
+
@my_plugin.run({ ruleset: "cleancode" })
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
expect(@dangerfile.status_report[:warnings]).to eq([expected_message])
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
violation_report = @dangerfile.violation_report[:warnings].first
|
|
45
|
+
expect(violation_report.file).to eq("spec/fixtures/cleancode_warnings.php")
|
|
46
|
+
expect(violation_report.line).to eq(7)
|
|
47
|
+
expect(violation_report.message).to eq(expected_message)
|
|
48
|
+
end
|
|
44
49
|
end
|
|
45
50
|
end
|
|
46
51
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: danger-phpmd
|
|
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
|
- Kyosuke Takayama
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-01-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: danger-plugin-api
|
|
@@ -157,6 +157,7 @@ executables: []
|
|
|
157
157
|
extensions: []
|
|
158
158
|
extra_rdoc_files: []
|
|
159
159
|
files:
|
|
160
|
+
- ".github/workflows/CI.yml"
|
|
160
161
|
- ".gitignore"
|
|
161
162
|
- ".rubocop.yml"
|
|
162
163
|
- Gemfile
|
|
@@ -170,6 +171,8 @@ files:
|
|
|
170
171
|
- lib/danger_plugin.rb
|
|
171
172
|
- lib/phpmd/gem_version.rb
|
|
172
173
|
- lib/phpmd/plugin.rb
|
|
174
|
+
- spec/fixtures/cleancode_warnings.php
|
|
175
|
+
- spec/fixtures/no_warnings.php
|
|
173
176
|
- spec/phpmd_spec.rb
|
|
174
177
|
- spec/spec_helper.rb
|
|
175
178
|
homepage: https://github.com/ktakayama/danger-phpmd
|
|
@@ -191,10 +194,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
191
194
|
- !ruby/object:Gem::Version
|
|
192
195
|
version: '0'
|
|
193
196
|
requirements: []
|
|
194
|
-
rubygems_version: 3.
|
|
197
|
+
rubygems_version: 3.3.3
|
|
195
198
|
signing_key:
|
|
196
199
|
specification_version: 4
|
|
197
200
|
summary: Danger plugin for PHPMD.
|
|
198
201
|
test_files:
|
|
202
|
+
- spec/fixtures/cleancode_warnings.php
|
|
203
|
+
- spec/fixtures/no_warnings.php
|
|
199
204
|
- spec/phpmd_spec.rb
|
|
200
205
|
- spec/spec_helper.rb
|