danger-phpmd 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|