goodcheck 1.5.0 → 1.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +2 -2
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/goodcheck/analyzer.rb +11 -22
- data/lib/goodcheck/config_loader.rb +2 -33
- data/lib/goodcheck/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 95c2a7244c21b8436b9b3069df313871905d2544
|
4
|
+
data.tar.gz: e2137ec229279936f5abed87dabff5a8dcd083ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77025fef5bebc19bf8638f3aee6f9777e4bc6cfbb1b41ab0dd0e04b60190c33947d0b6a06ed053e136e80573bb05f71c240e0d036699544c53ab65e323fa5b7e
|
7
|
+
data.tar.gz: 93d155f4a8cbd50ec80412713c80ec7093a00de0635cad25db8451a37970ab20609ffc0b14d851e523d8a7a6480d30f71628873fd152c7968738ed4fc3c75473
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,7 @@ $ gem install goodcheck
|
|
22
22
|
|
23
23
|
Or you can use `bundler`!
|
24
24
|
|
25
|
-
If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-
|
25
|
+
If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-images).
|
26
26
|
|
27
27
|
## Quickstart
|
28
28
|
|
data/lib/goodcheck/analyzer.rb
CHANGED
@@ -12,34 +12,23 @@ module Goodcheck
|
|
12
12
|
if block_given?
|
13
13
|
issues = []
|
14
14
|
|
15
|
-
rule.patterns.
|
16
|
-
|
15
|
+
regexp = Regexp.union(*rule.patterns.map(&:regexp))
|
16
|
+
scanner = StringScanner.new(buffer.content)
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
text = scanner.matched
|
27
|
-
range = (scanner.pos - text.bytesize) .. scanner.pos
|
28
|
-
unless issues.any? {|issue| issue.range == range }
|
29
|
-
issues << Issue.new(buffer: buffer, range: range, rule: rule, text: text)
|
30
|
-
end
|
31
|
-
when scanner.scan(/.\b/m)
|
32
|
-
after_break = true
|
33
|
-
else
|
34
|
-
scanner.scan(/./m)
|
35
|
-
after_break = false
|
36
|
-
end
|
18
|
+
while true
|
19
|
+
case
|
20
|
+
when scanner.scan_until(regexp)
|
21
|
+
text = scanner.matched
|
22
|
+
range = (scanner.pos - text.bytesize) .. scanner.pos
|
23
|
+
issues << Issue.new(buffer: buffer, range: range, rule: rule, text: text)
|
24
|
+
else
|
25
|
+
break
|
37
26
|
end
|
38
27
|
end
|
39
28
|
|
40
29
|
issues.each(&block)
|
41
30
|
else
|
42
|
-
enum_for(:scan
|
31
|
+
enum_for(:scan)
|
43
32
|
end
|
44
33
|
end
|
45
34
|
end
|
@@ -109,41 +109,10 @@ module Goodcheck
|
|
109
109
|
Rule.new(id: id, patterns: patterns, justifications: justifications, globs: globs, message: message, passes: passes, fails: fails)
|
110
110
|
end
|
111
111
|
|
112
|
-
def combine_literal_patterns(patterns, case_sensitive:)
|
113
|
-
return nil if patterns.empty?
|
114
|
-
literals = patterns.map do |pat|
|
115
|
-
str = pat.is_a?(String) ? pat : pat[:literal].to_s
|
116
|
-
Regexp.escape(str)
|
117
|
-
end
|
118
|
-
Pattern.regexp(literals.join('|'),
|
119
|
-
case_sensitive: case_sensitive,
|
120
|
-
multiline: false)
|
121
|
-
end
|
122
|
-
|
123
|
-
def literal_pattern?(pattern)
|
124
|
-
pattern.is_a?(String) || pattern[:literal]
|
125
|
-
end
|
126
|
-
|
127
|
-
def select_literal_pattern(patterns, case_sensitive:)
|
128
|
-
patterns.select do |pat|
|
129
|
-
if case_sensitive
|
130
|
-
literal_pattern?(pat) && case_sensitive?(pat)
|
131
|
-
else
|
132
|
-
literal_pattern?(pat) && !case_sensitive?(pat)
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
112
|
def retrieve_patterns(hash)
|
138
|
-
|
139
|
-
|
140
|
-
patterns = non_literal.map { |pat| load_pattern(pat) }
|
141
|
-
[true, false].each do |boolean|
|
142
|
-
literal = select_literal_pattern(pat_array, case_sensitive: boolean)
|
143
|
-
comb_pat = combine_literal_patterns(literal, case_sensitive: boolean)
|
144
|
-
patterns << comb_pat if comb_pat
|
113
|
+
array(hash[:pattern]).map do |pat|
|
114
|
+
load_pattern(pat)
|
145
115
|
end
|
146
|
-
patterns
|
147
116
|
end
|
148
117
|
|
149
118
|
def load_globs(globs)
|
data/lib/goodcheck/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goodcheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Soutaro Matsumoto
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.6.14.1
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: Regexp based customizable linter
|