danger-android_lint 0.0.4 → 0.0.9
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 +5 -5
- data/.circleci/config.yml +13 -0
- data/.github/CODEOWNERS +1 -0
- data/.gitignore +2 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +98 -75
- data/README.md +18 -0
- data/Rakefile +1 -1
- data/atlantis.yaml +5 -0
- data/danger-android_lint.gemspec +4 -4
- data/lib/android_lint/gem_version.rb +1 -1
- data/lib/android_lint/plugin.rb +82 -17
- data/spec/android_lint_spec.rb +78 -9
- data/spec/fixtures/lint-result-for-pr.xml +62 -0
- data/spec/fixtures/lint-result-with-special-chars.xml +19 -0
- data/spec/fixtures/pr-diff.diff +14 -0
- metadata +44 -36
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 9ada934a0418e182a4f33db8040b2ac2686b51062d9298bcafeec2641333c794
|
|
4
|
+
data.tar.gz: f083ac782badad37b3013f29326723662c6e30fa87d1f553e9049edb0d4308b0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9ad11c214c69b8705766e879b6bd37c436b9ab5f5c812a5f0defedcbdd14c8d1cc012f16b16461a1426eedbd5659bd6c89aa85c4b3dcb2162984831e369ddaaa
|
|
7
|
+
data.tar.gz: cca847253edd672cd61da0142cabdb6fb768315cf5fa44a824b0471f9f335df47700452f0b8deabe5a4fee80cec109bbfe4f8d193b695f56f8e30bedcd259460
|
data/.github/CODEOWNERS
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @barbosa
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.3.5
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
# 0.0.9
|
|
2
|
+
- Add `filtering_lines` parameter, to show lint issues only on modified lines ([@ShivamPokhriyal](https://github.com/ShivamPokhriyal))
|
|
3
|
+
|
|
4
|
+
# 0.0.8
|
|
5
|
+
- Fix security issues ([@barbosa](https://github.com/barbosa))
|
|
6
|
+
- Expose report message ([@adamstrange])(https://github.com/adamstrange))
|
|
7
|
+
- Skip gradle task ([@mathroule])(https://github.com/mathroule))
|
|
8
|
+
|
|
9
|
+
# 0.0.7
|
|
10
|
+
- Fix security issues ([@barbosa](https://github.com/barbosa))
|
|
11
|
+
|
|
12
|
+
# 0.0.6
|
|
13
|
+
- Bump yarn and rubocop versions due to security issues ([@barbosa](https://github.com/barbosa))
|
|
14
|
+
|
|
15
|
+
# 0.0.5
|
|
16
|
+
- Fix count number for issues ([@jettbow](https://github.com/jettbow))
|
|
17
|
+
- Add option for skipping gradle task ([@litmon](https://github.com/litmon))
|
|
18
|
+
|
|
1
19
|
# 0.0.4
|
|
2
20
|
- Add `filtering` parameter, default to false, to run lint only on modified files ([@leonhartX](https://github.com/leonhartX))
|
|
3
21
|
- Add support for GitHub's inline comments ([@leonhartX](https://github.com/leonhartX))
|
data/Gemfile.lock
CHANGED
|
@@ -1,51 +1,65 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
danger-android_lint (0.0.
|
|
4
|
+
danger-android_lint (0.0.9)
|
|
5
5
|
danger-plugin-api (~> 1.0)
|
|
6
6
|
oga
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
addressable (2.
|
|
12
|
-
public_suffix (
|
|
11
|
+
addressable (2.7.0)
|
|
12
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
13
13
|
ansi (1.5.0)
|
|
14
|
-
ast (2.
|
|
15
|
-
claide (1.0.
|
|
14
|
+
ast (2.4.2)
|
|
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.
|
|
21
|
-
|
|
22
|
-
cork (0.
|
|
23
|
-
|
|
24
|
-
danger (
|
|
20
|
+
coderay (1.1.3)
|
|
21
|
+
colored2 (3.1.2)
|
|
22
|
+
cork (0.3.0)
|
|
23
|
+
colored2 (~> 3.1)
|
|
24
|
+
danger (8.2.3)
|
|
25
25
|
claide (~> 1.0)
|
|
26
26
|
claide-plugins (>= 0.9.2)
|
|
27
|
-
|
|
27
|
+
colored2 (~> 3.1)
|
|
28
28
|
cork (~> 0.1)
|
|
29
|
-
faraday (
|
|
30
|
-
faraday-http-cache (~>
|
|
31
|
-
git (~> 1)
|
|
32
|
-
kramdown (~>
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
faraday (>= 0.9.0, < 2.0)
|
|
30
|
+
faraday-http-cache (~> 2.0)
|
|
31
|
+
git (~> 1.7)
|
|
32
|
+
kramdown (~> 2.3)
|
|
33
|
+
kramdown-parser-gfm (~> 1.0)
|
|
34
|
+
no_proxy_fix
|
|
35
|
+
octokit (~> 4.7)
|
|
36
|
+
terminal-table (>= 1, < 4)
|
|
35
37
|
danger-plugin-api (1.0.0)
|
|
36
38
|
danger (> 2.0)
|
|
37
|
-
diff-lcs (1.
|
|
38
|
-
faraday (
|
|
39
|
+
diff-lcs (1.4.4)
|
|
40
|
+
faraday (1.4.2)
|
|
41
|
+
faraday-em_http (~> 1.0)
|
|
42
|
+
faraday-em_synchrony (~> 1.0)
|
|
43
|
+
faraday-excon (~> 1.1)
|
|
44
|
+
faraday-net_http (~> 1.0)
|
|
45
|
+
faraday-net_http_persistent (~> 1.1)
|
|
39
46
|
multipart-post (>= 1.2, < 3)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
47
|
+
ruby2_keywords (>= 0.0.4)
|
|
48
|
+
faraday-em_http (1.0.0)
|
|
49
|
+
faraday-em_synchrony (1.0.0)
|
|
50
|
+
faraday-excon (1.1.0)
|
|
51
|
+
faraday-http-cache (2.2.0)
|
|
52
|
+
faraday (>= 0.8)
|
|
53
|
+
faraday-net_http (1.0.1)
|
|
54
|
+
faraday-net_http_persistent (1.1.0)
|
|
55
|
+
ffi (1.15.3)
|
|
56
|
+
formatador (0.3.0)
|
|
57
|
+
git (1.8.1)
|
|
58
|
+
rchardet (~> 1.8)
|
|
59
|
+
guard (2.17.0)
|
|
46
60
|
formatador (>= 0.2.4)
|
|
47
61
|
listen (>= 2.7, < 4.0)
|
|
48
|
-
lumberjack (
|
|
62
|
+
lumberjack (>= 1.0.12, < 2.0)
|
|
49
63
|
nenv (~> 0.1)
|
|
50
64
|
notiffany (~> 0.0)
|
|
51
65
|
pry (>= 0.9.12)
|
|
@@ -56,52 +70,61 @@ GEM
|
|
|
56
70
|
guard (~> 2.1)
|
|
57
71
|
guard-compat (~> 1.1)
|
|
58
72
|
rspec (>= 2.99.0, < 4.0)
|
|
59
|
-
kramdown (
|
|
73
|
+
kramdown (2.3.1)
|
|
74
|
+
rexml
|
|
75
|
+
kramdown-parser-gfm (1.1.0)
|
|
76
|
+
kramdown (~> 2.0)
|
|
60
77
|
listen (3.0.7)
|
|
61
78
|
rb-fsevent (>= 0.9.3)
|
|
62
79
|
rb-inotify (>= 0.9.7)
|
|
63
|
-
lumberjack (1.
|
|
64
|
-
method_source (0.
|
|
65
|
-
multipart-post (2.
|
|
80
|
+
lumberjack (1.2.8)
|
|
81
|
+
method_source (1.0.0)
|
|
82
|
+
multipart-post (2.1.1)
|
|
66
83
|
nap (1.1.0)
|
|
67
84
|
nenv (0.3.0)
|
|
68
|
-
|
|
85
|
+
no_proxy_fix (0.1.2)
|
|
86
|
+
notiffany (0.1.3)
|
|
69
87
|
nenv (~> 0.1)
|
|
70
88
|
shellany (~> 0.0)
|
|
71
|
-
octokit (4.
|
|
89
|
+
octokit (4.21.0)
|
|
90
|
+
faraday (>= 0.9)
|
|
72
91
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
73
|
-
oga (
|
|
92
|
+
oga (3.3)
|
|
74
93
|
ast
|
|
75
94
|
ruby-ll (~> 2.1)
|
|
76
95
|
open4 (1.3.4)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
public_suffix (
|
|
85
|
-
rainbow (2.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
rb-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
rspec-
|
|
96
|
-
|
|
96
|
+
parallel (1.20.1)
|
|
97
|
+
parser (2.7.2.0)
|
|
98
|
+
ast (~> 2.4.1)
|
|
99
|
+
powerpack (0.1.3)
|
|
100
|
+
pry (0.14.1)
|
|
101
|
+
coderay (~> 1.1)
|
|
102
|
+
method_source (~> 1.0)
|
|
103
|
+
public_suffix (4.0.6)
|
|
104
|
+
rainbow (2.2.2)
|
|
105
|
+
rake
|
|
106
|
+
rake (13.0.3)
|
|
107
|
+
rb-fsevent (0.11.0)
|
|
108
|
+
rb-inotify (0.10.1)
|
|
109
|
+
ffi (~> 1.0)
|
|
110
|
+
rchardet (1.8.0)
|
|
111
|
+
rexml (3.2.5)
|
|
112
|
+
rspec (3.10.0)
|
|
113
|
+
rspec-core (~> 3.10.0)
|
|
114
|
+
rspec-expectations (~> 3.10.0)
|
|
115
|
+
rspec-mocks (~> 3.10.0)
|
|
116
|
+
rspec-core (3.10.1)
|
|
117
|
+
rspec-support (~> 3.10.0)
|
|
118
|
+
rspec-expectations (3.10.1)
|
|
97
119
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
98
|
-
rspec-support (~> 3.
|
|
99
|
-
rspec-mocks (3.
|
|
120
|
+
rspec-support (~> 3.10.0)
|
|
121
|
+
rspec-mocks (3.10.2)
|
|
100
122
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
101
|
-
rspec-support (~> 3.
|
|
102
|
-
rspec-support (3.
|
|
103
|
-
rubocop (0.
|
|
104
|
-
|
|
123
|
+
rspec-support (~> 3.10.0)
|
|
124
|
+
rspec-support (3.10.2)
|
|
125
|
+
rubocop (0.49.1)
|
|
126
|
+
parallel (~> 1.10)
|
|
127
|
+
parser (>= 2.3.3.1, < 3.0)
|
|
105
128
|
powerpack (~> 0.1)
|
|
106
129
|
rainbow (>= 1.99.1, < 3.0)
|
|
107
130
|
ruby-progressbar (~> 1.7)
|
|
@@ -109,32 +132,32 @@ GEM
|
|
|
109
132
|
ruby-ll (2.1.2)
|
|
110
133
|
ansi
|
|
111
134
|
ast
|
|
112
|
-
ruby-progressbar (1.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
135
|
+
ruby-progressbar (1.11.0)
|
|
136
|
+
ruby2_keywords (0.0.4)
|
|
137
|
+
sawyer (0.8.2)
|
|
138
|
+
addressable (>= 2.3.5)
|
|
139
|
+
faraday (> 0.8, < 2.0)
|
|
116
140
|
shellany (0.0.1)
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
yard (0.9.5)
|
|
141
|
+
terminal-table (3.0.1)
|
|
142
|
+
unicode-display_width (>= 1.1.1, < 3)
|
|
143
|
+
thor (1.1.0)
|
|
144
|
+
unicode-display_width (1.7.0)
|
|
145
|
+
yard (0.9.26)
|
|
123
146
|
|
|
124
147
|
PLATFORMS
|
|
125
|
-
|
|
148
|
+
universal-darwin-20
|
|
126
149
|
|
|
127
150
|
DEPENDENCIES
|
|
128
|
-
bundler (
|
|
151
|
+
bundler (>= 2.2.10)
|
|
129
152
|
danger-android_lint!
|
|
130
153
|
guard (~> 2.14)
|
|
131
154
|
guard-rspec (~> 4.7)
|
|
132
155
|
listen (= 3.0.7)
|
|
133
156
|
pry
|
|
134
|
-
rake (~>
|
|
157
|
+
rake (~> 13.0)
|
|
135
158
|
rspec (~> 3.4)
|
|
136
|
-
rubocop (~> 0.
|
|
137
|
-
yard (~> 0.
|
|
159
|
+
rubocop (~> 0.49.0)
|
|
160
|
+
yard (~> 0.9.11)
|
|
138
161
|
|
|
139
162
|
BUNDLED WITH
|
|
140
|
-
|
|
163
|
+
2.2.10
|
data/README.md
CHANGED
|
@@ -49,6 +49,24 @@ android_lint.gradle_task = "lintMyFlavorDebug"
|
|
|
49
49
|
android_lint.lint
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
#### Skip gradle task execution
|
|
53
|
+
|
|
54
|
+
If you want to skip the gradle task execution. You can achieve that by simply changing the value of `skip_gradle_task`. Default is `false`.
|
|
55
|
+
|
|
56
|
+
```rb
|
|
57
|
+
android_lint.skip_gradle_task = true
|
|
58
|
+
android_lint.lint
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### Changing report's file path
|
|
62
|
+
|
|
63
|
+
If you're using a path to output your report file other than the default one, you can specify it by setting a new value to `report_file`:
|
|
64
|
+
|
|
65
|
+
```rb
|
|
66
|
+
android_lint.report_file = "your/report/file.xml"
|
|
67
|
+
android_lint.lint
|
|
68
|
+
```
|
|
69
|
+
|
|
52
70
|
#### Changing report's severity level
|
|
53
71
|
|
|
54
72
|
If you want to filter lint issues based on their severity level, you can do that by setting a value to `severity`. Bear in mind that you are filtering issues by the severity level you've set **and up**. Possible values are `Warning`, `Error` and `Fatal`. Default is `Warning` (which is everything).
|
data/Rakefile
CHANGED
data/atlantis.yaml
ADDED
data/danger-android_lint.gemspec
CHANGED
|
@@ -23,15 +23,15 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
|
|
24
24
|
|
|
25
25
|
# General ruby development
|
|
26
|
-
spec.add_development_dependency 'bundler', '
|
|
27
|
-
spec.add_development_dependency 'rake', '~>
|
|
26
|
+
spec.add_development_dependency 'bundler', '>= 2.2.10'
|
|
27
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
|
28
28
|
|
|
29
29
|
# Testing support
|
|
30
30
|
spec.add_development_dependency 'rspec', '~> 3.4'
|
|
31
31
|
|
|
32
32
|
# Linting code and docs
|
|
33
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
|
34
|
-
spec.add_development_dependency "yard", "~> 0.
|
|
33
|
+
spec.add_development_dependency "rubocop", "~> 0.49.0"
|
|
34
|
+
spec.add_development_dependency "yard", "~> 0.9.11"
|
|
35
35
|
|
|
36
36
|
# Makes testing easy via `bundle exec guard`
|
|
37
37
|
spec.add_development_dependency 'guard', '~> 2.14'
|
data/lib/android_lint/plugin.rb
CHANGED
|
@@ -13,6 +13,11 @@ module Danger
|
|
|
13
13
|
# android_lint.gradle_task = "lintMyFlavorDebug"
|
|
14
14
|
# android_lint.lint
|
|
15
15
|
#
|
|
16
|
+
# @example Running AndroidLint without running a Gradle task
|
|
17
|
+
#
|
|
18
|
+
# android_lint.skip_gradle_task = true
|
|
19
|
+
# android_lint.lint
|
|
20
|
+
#
|
|
16
21
|
# @example Running AndroidLint for a specific severity level and up
|
|
17
22
|
#
|
|
18
23
|
# # options are ["Warning", "Error", "Fatal"]
|
|
@@ -31,6 +36,7 @@ module Danger
|
|
|
31
36
|
# Defaults to "app/build/reports/lint/lint-result.xml".
|
|
32
37
|
# @return [String]
|
|
33
38
|
attr_accessor :report_file
|
|
39
|
+
|
|
34
40
|
# A getter for `report_file`.
|
|
35
41
|
# @return [String]
|
|
36
42
|
def report_file
|
|
@@ -43,6 +49,24 @@ module Danger
|
|
|
43
49
|
# @return [String]
|
|
44
50
|
attr_accessor :gradle_task
|
|
45
51
|
|
|
52
|
+
# A getter for `gradle_task`, returning "lint" if value is nil.
|
|
53
|
+
# @return [String]
|
|
54
|
+
def gradle_task
|
|
55
|
+
@gradle_task ||= "lint"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Skip Gradle task.
|
|
59
|
+
# This is useful when Gradle task has been already executed.
|
|
60
|
+
# Defaults to `false`.
|
|
61
|
+
# @return [Bool]
|
|
62
|
+
attr_writer :skip_gradle_task
|
|
63
|
+
|
|
64
|
+
# A getter for `skip_gradle_task`, returning `false` if value is nil.
|
|
65
|
+
# @return [Boolean]
|
|
66
|
+
def skip_gradle_task
|
|
67
|
+
@skip_gradle_task ||= false
|
|
68
|
+
end
|
|
69
|
+
|
|
46
70
|
# Defines the severity level of the execution.
|
|
47
71
|
# Selected levels are the chosen one and up.
|
|
48
72
|
# Possible values are "Warning", "Error" or "Fatal".
|
|
@@ -50,10 +74,19 @@ module Danger
|
|
|
50
74
|
# @return [String]
|
|
51
75
|
attr_writer :severity
|
|
52
76
|
|
|
77
|
+
# A getter for `severity`, returning "Warning" if value is nil.
|
|
78
|
+
# @return [String]
|
|
79
|
+
def severity
|
|
80
|
+
@severity || SEVERITY_LEVELS.first
|
|
81
|
+
end
|
|
82
|
+
|
|
53
83
|
# Enable filtering
|
|
54
84
|
# Only show messages within changed files.
|
|
55
85
|
attr_accessor :filtering
|
|
56
86
|
|
|
87
|
+
# Only shows messages for the modified lines.
|
|
88
|
+
attr_accessor :filtering_lines
|
|
89
|
+
|
|
57
90
|
# Calls lint task of your gradle project.
|
|
58
91
|
# It fails if `gradlew` cannot be found inside current directory.
|
|
59
92
|
# It fails if `severity` level is not a valid option.
|
|
@@ -61,9 +94,8 @@ module Danger
|
|
|
61
94
|
# @return [void]
|
|
62
95
|
#
|
|
63
96
|
def lint(inline_mode: false)
|
|
64
|
-
unless
|
|
65
|
-
fail("Could not find `gradlew` inside current directory")
|
|
66
|
-
return
|
|
97
|
+
unless skip_gradle_task
|
|
98
|
+
return fail("Could not find `gradlew` inside current directory") unless gradlew_exists?
|
|
67
99
|
end
|
|
68
100
|
|
|
69
101
|
unless SEVERITY_LEVELS.include?(severity)
|
|
@@ -71,7 +103,9 @@ module Danger
|
|
|
71
103
|
return
|
|
72
104
|
end
|
|
73
105
|
|
|
74
|
-
|
|
106
|
+
unless skip_gradle_task
|
|
107
|
+
system "./gradlew #{gradle_task}"
|
|
108
|
+
end
|
|
75
109
|
|
|
76
110
|
unless File.exists?(report_file)
|
|
77
111
|
fail("Lint report not found at `#{report_file}`. "\
|
|
@@ -81,19 +115,17 @@ module Danger
|
|
|
81
115
|
issues = read_issues_from_report
|
|
82
116
|
filtered_issues = filter_issues_by_severity(issues)
|
|
83
117
|
|
|
118
|
+
message = ""
|
|
119
|
+
|
|
84
120
|
if inline_mode
|
|
85
121
|
# Report with inline comment
|
|
86
122
|
send_inline_comment(filtered_issues)
|
|
87
123
|
else
|
|
88
124
|
message = message_for_issues(filtered_issues)
|
|
89
|
-
markdown(message) unless
|
|
125
|
+
markdown("### AndroidLint found issues\n\n" + message) unless message.to_s.empty?
|
|
90
126
|
end
|
|
91
|
-
end
|
|
92
127
|
|
|
93
|
-
|
|
94
|
-
# @return [String]
|
|
95
|
-
def severity
|
|
96
|
-
@severity || SEVERITY_LEVELS.first
|
|
128
|
+
message
|
|
97
129
|
end
|
|
98
130
|
|
|
99
131
|
private
|
|
@@ -118,7 +150,7 @@ module Danger
|
|
|
118
150
|
end
|
|
119
151
|
|
|
120
152
|
def message_for_issues(issues)
|
|
121
|
-
message = "
|
|
153
|
+
message = ""
|
|
122
154
|
|
|
123
155
|
SEVERITY_LEVELS.reverse.each do |level|
|
|
124
156
|
filtered = issues.select{|issue| issue.get("severity") == level}
|
|
@@ -131,10 +163,8 @@ module Danger
|
|
|
131
163
|
def parse_results(results, heading)
|
|
132
164
|
target_files = (git.modified_files - git.deleted_files) + git.added_files
|
|
133
165
|
dir = "#{Dir.pwd}/"
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
message << "| File | Line | Reason |\n"
|
|
137
|
-
message << "| ---- | ---- | ------ |\n"
|
|
166
|
+
count = 0;
|
|
167
|
+
message = ""
|
|
138
168
|
|
|
139
169
|
results.each do |r|
|
|
140
170
|
location = r.xpath('location').first
|
|
@@ -142,9 +172,15 @@ module Danger
|
|
|
142
172
|
next unless !filtering || (target_files.include? filename)
|
|
143
173
|
line = location.get('line') || 'N/A'
|
|
144
174
|
reason = r.get('message')
|
|
145
|
-
|
|
175
|
+
count = count + 1
|
|
146
176
|
message << "`#{filename}` | #{line} | #{reason} \n"
|
|
147
177
|
end
|
|
178
|
+
if count != 0
|
|
179
|
+
header = "#### #{heading} (#{count})\n\n"
|
|
180
|
+
header << "| File | Line | Reason |\n"
|
|
181
|
+
header << "| ---- | ---- | ------ |\n"
|
|
182
|
+
message = header + message
|
|
183
|
+
end
|
|
148
184
|
|
|
149
185
|
message
|
|
150
186
|
end
|
|
@@ -162,13 +198,42 @@ module Danger
|
|
|
162
198
|
filtered.each do |r|
|
|
163
199
|
location = r.xpath('location').first
|
|
164
200
|
filename = location.get('file').gsub(dir, "")
|
|
165
|
-
next unless !filtering || (target_files.include? filename)
|
|
201
|
+
next unless (!filtering && !filtering_lines) || (target_files.include? filename)
|
|
166
202
|
line = (location.get('line') || "0").to_i
|
|
203
|
+
if filtering_lines
|
|
204
|
+
added_lines = parseDiff(git.diff[filename].patch)
|
|
205
|
+
next unless added_lines.include? line
|
|
206
|
+
end
|
|
167
207
|
send(level === "Warning" ? "warn" : "fail", r.get('message'), file: filename, line: line)
|
|
168
208
|
end
|
|
169
209
|
end
|
|
170
210
|
end
|
|
171
211
|
|
|
212
|
+
# parses git diff of a file and retuns an array of added line numbers.
|
|
213
|
+
def parseDiff(diff)
|
|
214
|
+
current_line_number = nil
|
|
215
|
+
added_lines = []
|
|
216
|
+
diff_lines = diff.strip.split("\n")
|
|
217
|
+
diff_lines.each_with_index do |line, index|
|
|
218
|
+
if m = /\+(\d+)(?:,\d+)? @@/.match(line)
|
|
219
|
+
# (e.g. @@ -32,10 +32,7 @@)
|
|
220
|
+
current_line_number = Integer(m[1])
|
|
221
|
+
else
|
|
222
|
+
if !current_line_number.nil?
|
|
223
|
+
if line.start_with?('+')
|
|
224
|
+
# added line
|
|
225
|
+
added_lines.push current_line_number
|
|
226
|
+
current_line_number += 1
|
|
227
|
+
elsif !line.start_with?('-')
|
|
228
|
+
# unmodified line
|
|
229
|
+
current_line_number += 1
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
added_lines
|
|
235
|
+
end
|
|
236
|
+
|
|
172
237
|
def gradlew_exists?
|
|
173
238
|
`ls gradlew`.strip.empty? == false
|
|
174
239
|
end
|
data/spec/android_lint_spec.rb
CHANGED
|
@@ -25,6 +25,26 @@ module Danger
|
|
|
25
25
|
expect(@android_lint.status_report[:errors]).to eq(["Could not find `gradlew` inside current directory"])
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
+
it "Set custom Gradle task" do
|
|
29
|
+
custom_task = "lintRelease"
|
|
30
|
+
@android_lint.gradle_task = custom_task
|
|
31
|
+
expect(@android_lint.gradle_task).to eq(custom_task)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "Check default Gradle task" do
|
|
35
|
+
expect(@android_lint.gradle_task).to eq("lint")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "Skip Gradle task" do
|
|
39
|
+
skip_gradle_task = true
|
|
40
|
+
@android_lint.skip_gradle_task = skip_gradle_task
|
|
41
|
+
expect(@android_lint.skip_gradle_task).to eq(skip_gradle_task)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "Check default skip Gradle task" do
|
|
45
|
+
expect(@android_lint.skip_gradle_task).to eq(false)
|
|
46
|
+
end
|
|
47
|
+
|
|
28
48
|
it "Fails if severity is an unknown value" do
|
|
29
49
|
allow(@android_lint).to receive(:`).with("ls gradlew").and_return("gradlew")
|
|
30
50
|
allow(File).to receive(:exists?).with(@android_lint.report_file()).and_return(true)
|
|
@@ -49,7 +69,7 @@ module Danger
|
|
|
49
69
|
it "Sets the report file to a default location if no param is provided" do
|
|
50
70
|
allow(@android_lint).to receive(:`).with("ls gradlew").and_return("gradlew")
|
|
51
71
|
allow(File).to receive(:exists?).with(@android_lint.report_file).and_return(true)
|
|
52
|
-
|
|
72
|
+
|
|
53
73
|
fake_result = File.open("spec/fixtures/lint-result-with-everything.xml")
|
|
54
74
|
allow(File).to receive(:open).with(@android_lint.report_file).and_return(fake_result)
|
|
55
75
|
|
|
@@ -65,7 +85,7 @@ module Danger
|
|
|
65
85
|
fake_result = File.open("spec/fixtures/lint-result-with-everything.xml")
|
|
66
86
|
allow(File).to receive(:open).with(@android_lint.report_file).and_return(fake_result)
|
|
67
87
|
allow(File).to receive(:exists?).with(@android_lint.report_file).and_return(true)
|
|
68
|
-
|
|
88
|
+
|
|
69
89
|
@android_lint.lint
|
|
70
90
|
|
|
71
91
|
expect(@android_lint.report_file).to eq('some/other/location/lint-result.xml')
|
|
@@ -91,6 +111,19 @@ module Danger
|
|
|
91
111
|
end
|
|
92
112
|
|
|
93
113
|
it 'Prints markdown if issues were found' do
|
|
114
|
+
fake_result = File.open("spec/fixtures/lint-result-with-special-chars.xml")
|
|
115
|
+
allow(File).to receive(:open).with(@android_lint.report_file).and_return(fake_result)
|
|
116
|
+
|
|
117
|
+
@android_lint.lint
|
|
118
|
+
|
|
119
|
+
markdown = @android_lint.status_report[:markdowns].first.message
|
|
120
|
+
expect(markdown).to include("AndroidLint found issues")
|
|
121
|
+
|
|
122
|
+
expect(markdown).to include("Warning (1)")
|
|
123
|
+
expect(markdown).to include("`app/src/main/res/values/strings.xml` | 105 | The resource `R.string.authentication_invalid_auth_token_type` appears to be unused")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it 'Prints markdown if issues were found even if there is a special char' do
|
|
94
127
|
fake_result = File.open("spec/fixtures/lint-result-with-everything.xml")
|
|
95
128
|
allow(File).to receive(:open).with(@android_lint.report_file).and_return(fake_result)
|
|
96
129
|
|
|
@@ -101,12 +134,6 @@ module Danger
|
|
|
101
134
|
|
|
102
135
|
expect(markdown).to include("Fatal (1)")
|
|
103
136
|
expect(markdown).to include("`/Users/gustavo/Developer/app-android/app/src/main/java/com/loadsmart/common/views/AvatarView.java` | 60 | Implicitly using the default locale is a common source of bugs: Use `toUpperCase(Locale)` instead")
|
|
104
|
-
|
|
105
|
-
expect(markdown).to include("Error (1)")
|
|
106
|
-
expect(markdown).to include("`/Users/gustavo/Developer/app-android/app/src/main/java/com/loadsmart/analytics/Events.java` | 21 | Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead")
|
|
107
|
-
|
|
108
|
-
expect(markdown).to include("Warning (1)")
|
|
109
|
-
expect(markdown).to include("`/Users/gustavo/Developer/app-android/app/src/main/java/com/loadsmart/analytics/Events.java` | 24 | Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead")
|
|
110
137
|
end
|
|
111
138
|
|
|
112
139
|
it 'Doesn`t print anything if no errors were found' do
|
|
@@ -161,8 +188,50 @@ module Danger
|
|
|
161
188
|
expect(warn).not_to include("Implicitly using the default locale is a common source of bugs: Use `String.format(Locale, ...)` instead")
|
|
162
189
|
end
|
|
163
190
|
|
|
164
|
-
|
|
191
|
+
describe "for a modified file" do
|
|
192
|
+
before do
|
|
193
|
+
allow(Dir).to receive(:pwd).and_return("/Users/shivampokhriyal/Documents/projects/Commcare/commcare-android")
|
|
194
|
+
|
|
195
|
+
allow(@android_lint.git).to receive(:modified_files).and_return([
|
|
196
|
+
"app/build.gradle",
|
|
197
|
+
])
|
|
198
|
+
|
|
199
|
+
fake_patch = File.read("spec/fixtures/pr-diff.diff")
|
|
200
|
+
diff = [OpenStruct.new(type: "modified", path: "app/build.gradle")]
|
|
201
|
+
allow(@android_lint.git).to receive(:diff).and_return(diff)
|
|
202
|
+
diff_for_file = OpenStruct.new(insertions: 3)
|
|
203
|
+
allow(diff).to receive(:[]).with("app/build.gradle").and_return(diff_for_file)
|
|
204
|
+
allow(diff_for_file).to receive(:patch).and_return(fake_patch)
|
|
165
205
|
|
|
206
|
+
fake_result = File.open("spec/fixtures/lint-result-for-pr.xml")
|
|
207
|
+
allow(File).to receive(:open).with(@android_lint.report_file).and_return(fake_result)
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
it 'with filtering_lines, only show issues in modified lines' do
|
|
211
|
+
@android_lint.filtering_lines = true
|
|
212
|
+
@android_lint.lint inline_mode: true
|
|
213
|
+
|
|
214
|
+
error = @android_lint.status_report[:errors]
|
|
215
|
+
expect(error).to include("fake message three")
|
|
216
|
+
|
|
217
|
+
expect(error).not_to include("fake message one")
|
|
218
|
+
expect(error).not_to include("fake message two")
|
|
219
|
+
expect(error).not_to include("fake message in unmodified file")
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it 'with filtering, show all issues in modified files' do
|
|
223
|
+
@android_lint.filtering = true
|
|
224
|
+
@android_lint.lint inline_mode: true
|
|
225
|
+
|
|
226
|
+
error = @android_lint.status_report[:errors]
|
|
227
|
+
expect(error).to include("fake message one")
|
|
228
|
+
expect(error).to include("fake message two")
|
|
229
|
+
expect(error).to include("fake message three")
|
|
230
|
+
|
|
231
|
+
expect(error).not_to include("fake message in unmodified file")
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|
|
166
235
|
end
|
|
167
236
|
end
|
|
168
237
|
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<issues format="5" by="lint 4.0.0">
|
|
3
|
+
<issue
|
|
4
|
+
id="DuplicatePlatformClasses"
|
|
5
|
+
severity="Error"
|
|
6
|
+
message="fake message one"
|
|
7
|
+
category="Correctness"
|
|
8
|
+
priority="8"
|
|
9
|
+
summary="Duplicate Platform Classes"
|
|
10
|
+
explanation="There are a number of libraries that duplicate not just functionality of the Android platform but using the exact same class names as the ones provided in Android -- for example the apache http classes. This can lead to unexpected crashes.

To solve this, you need to either find a newer version of the library which no longer has this problem, or to repackage the library (and all of its dependencies) using something like the `jarjar` tool, or finally, rewriting the code to use different APIs (for example, for http code, consider using `HttpUrlConnection` or a library like `okhttp`).">
|
|
11
|
+
<location
|
|
12
|
+
file="/Users/shivampokhriyal/Documents/projects/Commcare/commcare-android/app/build.gradle"/>
|
|
13
|
+
</issue>
|
|
14
|
+
|
|
15
|
+
<issue
|
|
16
|
+
id="DuplicatePlatformClasses"
|
|
17
|
+
severity="Error"
|
|
18
|
+
message="fake message two"
|
|
19
|
+
category="Correctness"
|
|
20
|
+
priority="8"
|
|
21
|
+
summary="Duplicate Platform Classes"
|
|
22
|
+
explanation="There are a number of libraries that duplicate not just functionality of the Android platform but using the exact same class names as the ones provided in Android -- for example the apache http classes. This can lead to unexpected crashes.

To solve this, you need to either find a newer version of the library which no longer has this problem, or to repackage the library (and all of its dependencies) using something like the `jarjar` tool, or finally, rewriting the code to use different APIs (for example, for http code, consider using `HttpUrlConnection` or a library like `okhttp`)."
|
|
23
|
+
errorLine1=" testImplementation 'org.json:json:20140107'"
|
|
24
|
+
errorLine2=" ~~~~~~~~~~~~~">
|
|
25
|
+
<location
|
|
26
|
+
file="/Users/shivampokhriyal/Documents/projects/Commcare/commcare-android/app/build.gradle"
|
|
27
|
+
line="52"
|
|
28
|
+
column="25"/>
|
|
29
|
+
</issue>
|
|
30
|
+
|
|
31
|
+
<issue
|
|
32
|
+
id="FakeId"
|
|
33
|
+
severity="Error"
|
|
34
|
+
message="fake message three"
|
|
35
|
+
category="Correctness"
|
|
36
|
+
priority="8"
|
|
37
|
+
summary="Fake summary"
|
|
38
|
+
explanation="Fake explanation."
|
|
39
|
+
errorLine1="// debugImplementation because LeakCanary should only run in debug builds."
|
|
40
|
+
errorLine2=" ~~~~~~~~~~~~~">
|
|
41
|
+
<location
|
|
42
|
+
file="/Users/shivampokhriyal/Documents/projects/Commcare/commcare-android/app/build.gradle"
|
|
43
|
+
line="36"
|
|
44
|
+
column="10"/>
|
|
45
|
+
</issue>
|
|
46
|
+
|
|
47
|
+
<issue
|
|
48
|
+
id="2"
|
|
49
|
+
severity="Error"
|
|
50
|
+
message="fake message in unmodified file"
|
|
51
|
+
category="Correctness"
|
|
52
|
+
priority="8"
|
|
53
|
+
summary="Fake summary"
|
|
54
|
+
explanation="Fake explanation."
|
|
55
|
+
errorLine1="// debugImplementation because LeakCanary should only run in debug builds."
|
|
56
|
+
errorLine2=" ~~~~~~~~~~~~~">
|
|
57
|
+
<location
|
|
58
|
+
file="/Users/shivampokhriyal/Documents/projects/Commcare/commcare-android/app/AndroidManifest.xml"
|
|
59
|
+
line="36"
|
|
60
|
+
column="10"/>
|
|
61
|
+
</issue>
|
|
62
|
+
</issues>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<issues format="4" by="lint 25.2.2">
|
|
3
|
+
<issue
|
|
4
|
+
id="UnusedResources"
|
|
5
|
+
severity="Warning"
|
|
6
|
+
message="The resource `R.string.authentication_invalid_auth_token_type` appears to be unused"
|
|
7
|
+
category="Performance"
|
|
8
|
+
priority="3"
|
|
9
|
+
summary="Unused resources"
|
|
10
|
+
explanation="Unused resources make applications larger and slow down builds."
|
|
11
|
+
errorLine1=" <string name="authentication_invalid_auth_token_type">Autenticação inválida.</string>"
|
|
12
|
+
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
13
|
+
quickfix="studio">
|
|
14
|
+
<location
|
|
15
|
+
file="app/src/main/res/values/strings.xml"
|
|
16
|
+
line="105"
|
|
17
|
+
column="13"/>
|
|
18
|
+
</issue>
|
|
19
|
+
</issues>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
diff --git a/app/build.gradle b/app/build.gradle
|
|
2
|
+
index 6dcc647b8..a1365bd75 100644
|
|
3
|
+
--- a/app/build.gradle
|
|
4
|
+
+++ b/app/build.gradle
|
|
5
|
+
@@ -33,6 +33,9 @@ configurations {
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
dependencies {
|
|
9
|
+
+ // debugImplementation because LeakCanary should only run in debug builds.
|
|
10
|
+
+ debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
|
|
11
|
+
+
|
|
12
|
+
testImplementation 'junit:junit:4.12'
|
|
13
|
+
testImplementation('org.robolectric:robolectric:4.3.1') {
|
|
14
|
+
exclude(group: 'org.bouncycastle', module: 'bcprov-jdk15on')
|
metadata
CHANGED
|
@@ -1,139 +1,139 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: danger-android_lint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gustavo Barbosa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-06-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: oga
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: danger-plugin-api
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - ~>
|
|
31
|
+
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '1.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - ~>
|
|
38
|
+
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '1.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: bundler
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
47
|
+
version: 2.2.10
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
54
|
+
version: 2.2.10
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rake
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - ~>
|
|
59
|
+
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '13.0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - ~>
|
|
66
|
+
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
68
|
+
version: '13.0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: rspec
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - ~>
|
|
73
|
+
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '3.4'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - ~>
|
|
80
|
+
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '3.4'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: rubocop
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
|
-
- - ~>
|
|
87
|
+
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
89
|
+
version: 0.49.0
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
|
-
- - ~>
|
|
94
|
+
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
96
|
+
version: 0.49.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: yard
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
|
-
- - ~>
|
|
101
|
+
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version:
|
|
103
|
+
version: 0.9.11
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
|
-
- - ~>
|
|
108
|
+
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version:
|
|
110
|
+
version: 0.9.11
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: guard
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- - ~>
|
|
115
|
+
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
117
|
version: '2.14'
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- - ~>
|
|
122
|
+
- - "~>"
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
124
|
version: '2.14'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: guard-rspec
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
|
-
- - ~>
|
|
129
|
+
- - "~>"
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
131
|
version: '4.7'
|
|
132
132
|
type: :development
|
|
133
133
|
prerelease: false
|
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements:
|
|
136
|
-
- - ~>
|
|
136
|
+
- - "~>"
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '4.7'
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
@@ -154,14 +154,14 @@ dependencies:
|
|
|
154
154
|
name: pry
|
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
|
156
156
|
requirements:
|
|
157
|
-
- -
|
|
157
|
+
- - ">="
|
|
158
158
|
- !ruby/object:Gem::Version
|
|
159
159
|
version: '0'
|
|
160
160
|
type: :development
|
|
161
161
|
prerelease: false
|
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
163
|
requirements:
|
|
164
|
-
- -
|
|
164
|
+
- - ">="
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
167
|
description: A Danger plugin for Android Lint
|
|
@@ -171,7 +171,10 @@ executables: []
|
|
|
171
171
|
extensions: []
|
|
172
172
|
extra_rdoc_files: []
|
|
173
173
|
files:
|
|
174
|
-
- .
|
|
174
|
+
- ".circleci/config.yml"
|
|
175
|
+
- ".github/CODEOWNERS"
|
|
176
|
+
- ".gitignore"
|
|
177
|
+
- ".ruby-version"
|
|
175
178
|
- CHANGELOG.md
|
|
176
179
|
- Gemfile
|
|
177
180
|
- Gemfile.lock
|
|
@@ -179,6 +182,7 @@ files:
|
|
|
179
182
|
- LICENSE.txt
|
|
180
183
|
- README.md
|
|
181
184
|
- Rakefile
|
|
185
|
+
- atlantis.yaml
|
|
182
186
|
- danger-android_lint.gemspec
|
|
183
187
|
- lib/android_lint/gem_version.rb
|
|
184
188
|
- lib/android_lint/plugin.rb
|
|
@@ -186,8 +190,11 @@ files:
|
|
|
186
190
|
- lib/danger_plugin.rb
|
|
187
191
|
- spec/android_lint_spec.rb
|
|
188
192
|
- spec/fixtures/lint-result-empty.xml
|
|
193
|
+
- spec/fixtures/lint-result-for-pr.xml
|
|
189
194
|
- spec/fixtures/lint-result-with-everything.xml
|
|
195
|
+
- spec/fixtures/lint-result-with-special-chars.xml
|
|
190
196
|
- spec/fixtures/lint-result-without-fatal.xml
|
|
197
|
+
- spec/fixtures/pr-diff.diff
|
|
191
198
|
- spec/spec_helper.rb
|
|
192
199
|
homepage: https://github.com/loadsmart/danger-android_lint
|
|
193
200
|
licenses:
|
|
@@ -199,17 +206,16 @@ require_paths:
|
|
|
199
206
|
- lib
|
|
200
207
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
201
208
|
requirements:
|
|
202
|
-
- -
|
|
209
|
+
- - ">="
|
|
203
210
|
- !ruby/object:Gem::Version
|
|
204
211
|
version: '0'
|
|
205
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
213
|
requirements:
|
|
207
|
-
- -
|
|
214
|
+
- - ">="
|
|
208
215
|
- !ruby/object:Gem::Version
|
|
209
216
|
version: '0'
|
|
210
217
|
requirements: []
|
|
211
|
-
|
|
212
|
-
rubygems_version: 2.0.3
|
|
218
|
+
rubygems_version: 3.0.3
|
|
213
219
|
signing_key:
|
|
214
220
|
specification_version: 4
|
|
215
221
|
summary: Lint files of a gradle based Android project. This is done using the Android's
|
|
@@ -217,7 +223,9 @@ summary: Lint files of a gradle based Android project. This is done using the An
|
|
|
217
223
|
test_files:
|
|
218
224
|
- spec/android_lint_spec.rb
|
|
219
225
|
- spec/fixtures/lint-result-empty.xml
|
|
226
|
+
- spec/fixtures/lint-result-for-pr.xml
|
|
220
227
|
- spec/fixtures/lint-result-with-everything.xml
|
|
228
|
+
- spec/fixtures/lint-result-with-special-chars.xml
|
|
221
229
|
- spec/fixtures/lint-result-without-fatal.xml
|
|
230
|
+
- spec/fixtures/pr-diff.diff
|
|
222
231
|
- spec/spec_helper.rb
|
|
223
|
-
has_rdoc:
|