goodcheck 2.4.5 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,31 @@ module Goodcheck
3
3
  attr_reader :path
4
4
  attr_reader :content
5
5
 
6
+ DISABLE_LINE_PATTERNS = [
7
+ /\/\/ goodcheck-disable-line$/, #JS, Java, C, ...
8
+ /# goodcheck-disable-line$/, # Ruby, Python, PHP, ...
9
+ /-- goodcheck-disable-line$/, # Haskel, SQL, ...
10
+ /<!-- goodcheck-disable-line -->$/, # HTML, Markdown, ...
11
+ /\/* goodcheck-disable-line *\/$/, # CSS, SCSS,
12
+ /<%# goodcheck-disable-line %>$/, # ERB, ...
13
+ /' goodcheck-disable-line$/, # VB
14
+ ].freeze
15
+
16
+ DISABLE_NEXT_LINE_PATTERNS = [
17
+ /\/\/ goodcheck-disable-next-line$/, #JS, Java, C, ...
18
+ /# goodcheck-disable-next-line$/, # Ruby, Python, PHP, ...
19
+ /-- goodcheck-disable-next-line$/, # Haskel, SQL, ...
20
+ /<!-- goodcheck-disable-next-line -->$/, # HTML, Markdown, ...
21
+ /\/* goodcheck-disable-next-line *\/$/, # CSS, SCSS,
22
+ /<%# goodcheck-disable-next-line %>$/, # ERB, ...
23
+ /' goodcheck-disable-next-line$/, # VB
24
+ ].freeze
25
+
26
+ class << self
27
+ attr_accessor :DISABLE_LINE_PATTERNS
28
+ attr_accessor :DISABLE_NEXT_LINE_PATTERNS
29
+ end
30
+
6
31
  def initialize(path:, content:)
7
32
  @path = path
8
33
  @content = content
@@ -24,6 +49,18 @@ module Goodcheck
24
49
 
25
50
  @line_ranges
26
51
  end
52
+
53
+ def line_disabled?(line_number)
54
+ if line_number > 1
55
+ return true if DISABLE_NEXT_LINE_PATTERNS.any? { |pattern| line(line_number - 1).match?(pattern) }
56
+ end
57
+
58
+ if line_number <= lines.length
59
+ return DISABLE_LINE_PATTERNS.any? { |pattern| line(line_number).match?(pattern) }
60
+ end
61
+
62
+ return false
63
+ end
27
64
 
28
65
  def location_for_position(position)
29
66
  line_index = line_ranges.bsearch_index do |range|
@@ -35,8 +72,12 @@ module Goodcheck
35
72
  end
36
73
  end
37
74
 
75
+ def lines
76
+ @lines ||= content.lines
77
+ end
78
+
38
79
  def line(line_number)
39
- content.lines[line_number-1]
80
+ lines[line_number-1]
40
81
  end
41
82
 
42
83
  def position_for_location(line, column)
@@ -36,6 +36,7 @@ module Goodcheck
36
36
  reporter.rule(rule) do
37
37
  analyzer = Analyzer.new(rule: rule, buffer: buffer, trigger: trigger)
38
38
  analyzer.scan do |issue|
39
+ next if issue.location && buffer.line_disabled?(issue.location.start_line)
39
40
  if reported_issues.add?(issue)
40
41
  issue_reported = true
41
42
  reporter.issue(issue)
@@ -1,3 +1,3 @@
1
1
  module Goodcheck
2
- VERSION = "2.4.5"
2
+ VERSION = "2.5.0"
3
3
  end
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: 2.4.5
4
+ version: 2.5.0
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-12-13 00:00:00.000000000 Z
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -162,15 +162,16 @@ executables:
162
162
  extensions: []
163
163
  extra_rdoc_files: []
164
164
  files:
165
+ - ".github/workflows/test.yml"
165
166
  - ".gitignore"
166
167
  - ".rubocop.yml"
167
- - ".travis.yml"
168
168
  - CHANGELOG.md
169
169
  - Dockerfile
170
170
  - Gemfile
171
171
  - LICENSE
172
172
  - README.md
173
173
  - Rakefile
174
+ - benchmark/gc.c
174
175
  - bin/console
175
176
  - bin/setup
176
177
  - cheatsheet.pdf
@@ -259,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
260
  - !ruby/object:Gem::Version
260
261
  version: '0'
261
262
  requirements: []
262
- rubygems_version: 3.0.6
263
+ rubygems_version: 3.1.2
263
264
  signing_key:
264
265
  specification_version: 4
265
266
  summary: Regexp based customizable linter
@@ -1,11 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.9
4
- - 2.5.7
5
- - 2.6.5
6
- script:
7
- - bundle exec rake
8
- - bundle exec rake docs:build
9
- branches:
10
- only:
11
- - master