pronto-rubocop 0.9.1 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6213d26b3332b2dfebd43d4ee54afd1f8bd06de03ee73526216ba50ca75fcaf1
4
- data.tar.gz: a3426fcfdc4265953fcae3008489dbcd1d619ccc8e0471f566117ddad3c2e7cd
3
+ metadata.gz: '061479d3c9326adbd73af0ee8e79c5a1f46ed3aa8f8ea8dfa7b7946a899e4aff'
4
+ data.tar.gz: 22ab34372429508f391103d663cb462650fac8c08110771ff897400a22662a42
5
5
  SHA512:
6
- metadata.gz: eae06e126fb1c8b181a2e0e87d21ff25a65f89dc06d84d4b2d405a6ade8f557d16c8fbe642457cea5dd2093d4e7617f42c24f2839725744357f8ba76fd11e09f
7
- data.tar.gz: b901eb7b9ad51b67bee5606bc5b7e5943c11b22686ba06a4fbf5d4a45ea3850e100e26ba2705962bc0880e94190d571cb5f9f9770218dd1830d3e13a8d51859a
6
+ metadata.gz: c921d367340e6b725fd6f5c057c0d7ba3fbdab8b03f1ea5a56a559a6336ca646fca67f0f4f6467822db4c300779a015565fb48cf099bf22a38a549f6af8f846e
7
+ data.tar.gz: f1711fd2fb7c1bdd9c2374307879eb91e3af059928668a92864def3fea788f3f884075c08b9416623e770aa6309b13a6088d0308a4451047ee5ef529dea55647
data/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # Pronto runner for Rubocop
2
2
 
3
- [![Code Climate](https://codeclimate.com/github/mmozuras/pronto-rubocop.png)](https://codeclimate.com/github/mmozuras/pronto-rubocop)
4
- [![Build Status](https://travis-ci.org/mmozuras/pronto-rubocop.png)](https://travis-ci.org/mmozuras/pronto-rubocop)
3
+ [![Code Climate](https://codeclimate.com/github/prontolabs/pronto-rubocop.png)](https://codeclimate.com/github/prontolabs/pronto-rubocop)
4
+ [![Build Status](https://travis-ci.org/prontolabs/pronto-rubocop.svg?branch=master)](https://travis-ci.org/prontolabs/pronto-rubocop)
5
5
  [![Gem Version](https://badge.fury.io/rb/pronto-rubocop.png)](http://badge.fury.io/rb/pronto-rubocop)
6
- [![Dependency Status](https://gemnasium.com/mmozuras/pronto-rubocop.png)](https://gemnasium.com/mmozuras/pronto-rubocop)
7
6
 
8
- Pronto runner for [Rubocop](https://github.com/bbatsov/rubocop), ruby code analyzer. [What is Pronto?](https://github.com/mmozuras/pronto)
7
+ Pronto runner for [Rubocop](https://github.com/bbatsov/rubocop), ruby code analyzer. [What is Pronto?](https://github.com/prontolabs/pronto)
9
8
 
10
9
  ## Configuration
11
10
 
@@ -1,71 +1,14 @@
1
1
  require 'pronto'
2
2
  require 'rubocop'
3
+ require 'pronto/rubocop/patch_cop'
3
4
 
4
5
  module Pronto
5
6
  class Rubocop < Runner
6
- def initialize(_, _ = nil)
7
- super
8
-
9
- @config_store = ::RuboCop::ConfigStore.new
10
- @config_store.options_config = ENV['RUBOCOP_CONFIG'] if ENV['RUBOCOP_CONFIG']
11
- @inspector = ::RuboCop::Runner.new({}, @config_store)
12
- end
13
-
14
7
  def run
15
- return [] unless @patches
16
-
17
- @patches.select { |patch| valid_patch?(patch) }
18
- .map { |patch| inspect(patch) }
19
- .flatten.compact
20
- end
21
-
22
- def valid_patch?(patch)
23
- return false if patch.additions < 1
24
-
25
- config_store = config_store_for(patch)
26
- path = patch.new_file_full_path
27
-
28
- return false if config_store.file_to_exclude?(path.to_s)
29
- return true if config_store.file_to_include?(path.to_s)
30
-
31
- ruby_file?(path)
32
- end
33
-
34
- def inspect(patch)
35
- processed_source = processed_source_for(patch)
36
- offences = @inspector.send(:inspect_file, processed_source).first
37
-
38
- offences.sort.reject(&:disabled?).map do |offence|
39
- patch.added_lines
40
- .select { |line| line.new_lineno == offence.line }
41
- .map { |line| new_message(offence, line) }
42
- end
43
- end
44
-
45
- def new_message(offence, line)
46
- path = line.patch.delta.new_file[:path]
47
- level = level(offence.severity.name)
48
-
49
- Message.new(path, line, level, offence.message, nil, self.class)
50
- end
51
-
52
- def config_store_for(patch)
53
- path = patch.new_file_full_path.to_s
54
- @config_store.for(path)
55
- end
56
-
57
- def processed_source_for(patch)
58
- path = patch.new_file_full_path.to_s
59
- ::RuboCop::ProcessedSource.from_file(path, RUBY_VERSION[0..2].to_f)
60
- end
61
-
62
- def level(severity)
63
- case severity
64
- when :refactor, :convention
65
- :warning
66
- when :warning, :error, :fatal
67
- severity
68
- end
8
+ ruby_patches
9
+ .select { |patch| patch.additions > 0 }
10
+ .map { |patch| PatchCop.new(patch, self).messages }
11
+ .flatten
69
12
  end
70
13
  end
71
14
  end
@@ -0,0 +1,79 @@
1
+ module Pronto
2
+ class Rubocop < Runner
3
+ class PatchCop
4
+ def initialize(patch, runner)
5
+ @patch = patch
6
+ @runner = runner
7
+ end
8
+
9
+ def messages
10
+ return [] unless valid?
11
+
12
+ offences.map do |offence|
13
+ patch
14
+ .added_lines
15
+ .select { |line| line.new_lineno == offence.line }
16
+ .map { |line| new_message(offence, line) }
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :patch, :runner
23
+
24
+ def valid?
25
+ return false if config.file_to_exclude?(path)
26
+ return true if config.file_to_include?(path)
27
+ true
28
+ end
29
+
30
+ def path
31
+ @path ||= patch.new_file_full_path.to_s
32
+ end
33
+
34
+ def config
35
+ @config ||= begin
36
+ store = ::RuboCop::ConfigStore.new
37
+ store.options_config = ENV['RUBOCOP_CONFIG'] if ENV['RUBOCOP_CONFIG']
38
+ store.for(path)
39
+ end
40
+ end
41
+
42
+ def offences
43
+ team
44
+ .inspect_file(processed_source)
45
+ .sort
46
+ .reject(&:disabled?)
47
+ end
48
+
49
+ def team
50
+ @team ||= ::RuboCop::Cop::Team.new(registry, config)
51
+ end
52
+
53
+ def registry
54
+ @registry ||= ::RuboCop::Cop::Registry.new(RuboCop::Cop::Cop.all)
55
+ end
56
+
57
+ def processed_source
58
+ @processed_source ||=
59
+ ::RuboCop::ProcessedSource.from_file(path, config.target_ruby_version)
60
+ end
61
+
62
+ def new_message(offence, line)
63
+ path = line.patch.delta.new_file[:path]
64
+ level = level(offence.severity.name)
65
+
66
+ Message.new(path, line, level, offence.message, nil, runner.class)
67
+ end
68
+
69
+ def level(severity)
70
+ case severity
71
+ when :refactor, :convention
72
+ :warning
73
+ when :warning, :error, :fatal
74
+ severity
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -1,5 +1,5 @@
1
1
  module Pronto
2
2
  module RubocopVersion
3
- VERSION = '0.9.1'.freeze
3
+ VERSION = '0.10.0'.freeze
4
4
  end
5
5
  end
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.summary = 'Pronto runner for Rubocop, ruby code analyzer'
15
15
 
16
16
  s.licenses = ['MIT']
17
- s.required_ruby_version = '>= 2.0.0'
17
+ s.required_ruby_version = '>= 2.3.0'
18
18
  s.rubygems_version = '1.8.23'
19
19
 
20
20
  s.files = `git ls-files`.split($RS).reject do |file|
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.require_paths = ['lib']
34
34
 
35
35
  s.add_runtime_dependency('rubocop', '~> 0.50', '>= 0.49.1')
36
- s.add_runtime_dependency('pronto', '~> 0.9.0')
36
+ s.add_runtime_dependency('pronto', '~> 0.10.0')
37
37
  s.add_development_dependency('rake', '~> 12.0')
38
38
  s.add_development_dependency('rspec', '~> 3.4')
39
39
  s.add_development_dependency('rspec-its', '~> 1.2')
metadata CHANGED
@@ -1,49 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pronto-rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindaugas Mozūras
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-15 00:00:00.000000000 Z
11
+ date: 2019-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.50'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 0.49.1
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '0.50'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '0.50'
30
27
  - - ">="
31
28
  - !ruby/object:Gem::Version
32
29
  version: 0.49.1
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '0.50'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: pronto
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 0.9.0
39
+ version: 0.10.0
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 0.9.0
46
+ version: 0.10.0
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -97,6 +97,7 @@ files:
97
97
  - LICENSE
98
98
  - README.md
99
99
  - lib/pronto/rubocop.rb
100
+ - lib/pronto/rubocop/patch_cop.rb
100
101
  - lib/pronto/rubocop/version.rb
101
102
  - pronto-rubocop.gemspec
102
103
  homepage: http://github.com/mmozuras/pronto-rubocop
@@ -111,15 +112,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
111
112
  requirements:
112
113
  - - ">="
113
114
  - !ruby/object:Gem::Version
114
- version: 2.0.0
115
+ version: 2.3.0
115
116
  required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  requirements:
117
118
  - - ">="
118
119
  - !ruby/object:Gem::Version
119
120
  version: '0'
120
121
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.7.6
122
+ rubygems_version: 3.0.1
123
123
  signing_key:
124
124
  specification_version: 4
125
125
  summary: Pronto runner for Rubocop, ruby code analyzer