rubocop_todo_corrector 0.7.0 → 0.9.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 +4 -4
- data/CHANGELOG.md +18 -0
- data/Gemfile.lock +2 -2
- data/README.md +6 -70
- data/lib/rubocop_todo_corrector/cli.rb +8 -0
- data/lib/rubocop_todo_corrector/commands/clean.rb +35 -0
- data/lib/rubocop_todo_corrector/commands/pick.rb +25 -5
- data/lib/rubocop_todo_corrector/commands.rb +1 -0
- data/lib/rubocop_todo_corrector/cop_document_parser.rb +1 -0
- data/lib/rubocop_todo_corrector/ignore_file.rb +35 -0
- data/lib/rubocop_todo_corrector/version.rb +1 -1
- data/lib/rubocop_todo_corrector.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61752242b12ed25751b22323c3c0d177acefa0d89a23146607c126c3382921e7
|
4
|
+
data.tar.gz: be9d3d0f9c9428bdf7e2967a293dffe199539ea8a071545b0cbb4d914e1854c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15a1cb26be0f48eca2430c827985be3eb9426684c9123a23d8f1d7f2c379cd56fda991edf58e6e25b58f65fd769919c20cad8ac9292b9c3a7576d272bc0b29e4
|
7
|
+
data.tar.gz: 3506ce4ca3b8fc368c79bd90ab6b18eb6cdabb35d6364891fc928917a5f232904cd020885915d0b2245fd720fe116f57ea7746759a9ca30b84051cc2a89e0cb3
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,24 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## 0.9.0 - 2022-07-27
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- Add `.rubocop_todo_corrector_ignore` file support.
|
10
|
+
|
11
|
+
## 0.8.0 - 2022-07-23
|
12
|
+
|
13
|
+
### Added
|
14
|
+
|
15
|
+
- Add `clean` command.
|
16
|
+
|
17
|
+
## 0.7.1 - 2022-05-28
|
18
|
+
|
19
|
+
### Fixed
|
20
|
+
|
21
|
+
- Fix YARD unknown tag warning.
|
22
|
+
|
5
23
|
## 0.7.0 - 2022-05-27
|
6
24
|
|
7
25
|
### Added
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubocop_todo_corrector (0.
|
4
|
+
rubocop_todo_corrector (0.9.0)
|
5
5
|
bundler
|
6
6
|
thor
|
7
7
|
yard
|
@@ -50,7 +50,7 @@ GEM
|
|
50
50
|
thor (1.2.1)
|
51
51
|
unicode-display_width (2.1.0)
|
52
52
|
webrick (1.7.0)
|
53
|
-
yard (0.9.
|
53
|
+
yard (0.9.28)
|
54
54
|
webrick (~> 1.7.0)
|
55
55
|
|
56
56
|
PLATFORMS
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ gem install rubocop_todo_corrector
|
|
25
25
|
$ rubocop_todo_corrector
|
26
26
|
Commands:
|
27
27
|
rubocop_todo_corrector bundle # Run `bundle install` to install RuboCop related gems.
|
28
|
+
rubocop_todo_corrector clean # Remove temporary files.
|
28
29
|
rubocop_todo_corrector correct # Run `rubocop --auto-correct-all`.
|
29
30
|
rubocop_todo_corrector describe --cop-name=COP_NAME # Output Markdown description for specified cop.
|
30
31
|
rubocop_todo_corrector generate # Run `rubocop --auto-gen-config` to generate .rubocop_todo.yml.
|
@@ -33,78 +34,13 @@ Commands:
|
|
33
34
|
rubocop_todo_corrector remove --cop-name=COP_NAME # Remove section with specified cop name from .rubocop_todo.yml.
|
34
35
|
```
|
35
36
|
|
36
|
-
###
|
37
|
+
### .rubocop_todo_corrector_ignore
|
37
38
|
|
38
|
-
|
39
|
-
$ rubocop_todo_corrector help bundle
|
40
|
-
Usage:
|
41
|
-
rubocop_todo_corrector bundle
|
42
|
-
|
43
|
-
Run `bundle install` to install RuboCop related gems.
|
44
|
-
```
|
45
|
-
|
46
|
-
### correct
|
47
|
-
|
48
|
-
```console
|
49
|
-
Usage:
|
50
|
-
rubocop_todo_corrector correct
|
51
|
-
|
52
|
-
Options:
|
53
|
-
[--only-safe], [--no-only-safe]
|
54
|
-
# Default: true
|
55
|
-
|
56
|
-
Run `rubocop --auto-correct(-all)`.
|
57
|
-
```
|
58
|
-
|
59
|
-
### describe
|
60
|
-
|
61
|
-
```console
|
62
|
-
$ rubocop_todo_corrector help describe
|
63
|
-
Usage:
|
64
|
-
rubocop_todo_corrector describe --cop-name=COP_NAME
|
65
|
-
|
66
|
-
Options:
|
67
|
-
--cop-name=COP_NAME
|
68
|
-
|
69
|
-
Output Markdown description for specified cop.
|
70
|
-
```
|
71
|
-
|
72
|
-
### generate
|
73
|
-
|
74
|
-
```console
|
75
|
-
$ rubocop_todo_corrector help generate
|
76
|
-
Usage:
|
77
|
-
rubocop_todo_corrector generate
|
39
|
+
By specifying cop names in `.rubocop_todo_corrector_ignore`, you can exclude them from the selection.
|
78
40
|
|
79
|
-
Run `rubocop --auto-gen-config` to generate .rubocop_todo.yml.
|
80
41
|
```
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
```console
|
85
|
-
$ rubocop_todo_corrector help pick
|
86
|
-
Usage:
|
87
|
-
rubocop_todo_corrector pick
|
88
|
-
|
89
|
-
Options:
|
90
|
-
[--mode=MODE]
|
91
|
-
# Default: random
|
92
|
-
# Possible values: first, last, least_occurred, most_occurred, random
|
93
|
-
[--only-safe], [--no-only-safe]
|
94
|
-
# Default: true
|
95
|
-
|
96
|
-
Output an auto-correctable Cop from .rubocop_todo.yml.
|
42
|
+
Style/StringConcatenation
|
43
|
+
Style/StringLiterals
|
97
44
|
```
|
98
45
|
|
99
|
-
|
100
|
-
|
101
|
-
```console
|
102
|
-
$ rubocop_todo_corrector help remove
|
103
|
-
Usage:
|
104
|
-
rubocop_todo_corrector remove --cop-name=COP_NAME
|
105
|
-
|
106
|
-
Options:
|
107
|
-
--cop-name=COP_NAME
|
108
|
-
|
109
|
-
Remove section with specified cop name from .rubocop_todo.yml.
|
110
|
-
```
|
46
|
+
This is useful, for example, when you find a cop that cannot be autocorrected.
|
@@ -14,6 +14,13 @@ module RubocopTodoCorrector
|
|
14
14
|
)
|
15
15
|
end
|
16
16
|
|
17
|
+
desc 'clean', 'Remove temporary files.'
|
18
|
+
def clean
|
19
|
+
Commands::Clean.call(
|
20
|
+
temporary_gemfile_path: 'tmp/Gemfile_rubocop_todo_corrector.rb'
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
17
24
|
desc 'correct', 'Run `rubocop --auto-correct(-all)`.'
|
18
25
|
option(
|
19
26
|
:only_safe,
|
@@ -68,6 +75,7 @@ module RubocopTodoCorrector
|
|
68
75
|
)
|
69
76
|
def pick
|
70
77
|
Commands::Pick.call(
|
78
|
+
ignore_file_path: '.rubocop_todo_corrector_ignore',
|
71
79
|
mode: options[:mode],
|
72
80
|
only_safe: options[:only_safe],
|
73
81
|
rubocop_todo_path: '.rubocop_todo.yml'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
module RubocopTodoCorrector
|
6
|
+
module Commands
|
7
|
+
class Clean
|
8
|
+
class << self
|
9
|
+
# @param [String] temporary_gemfile_path
|
10
|
+
def call(
|
11
|
+
temporary_gemfile_path:
|
12
|
+
)
|
13
|
+
new(
|
14
|
+
temporary_gemfile_path:
|
15
|
+
).call
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(
|
20
|
+
temporary_gemfile_path:
|
21
|
+
)
|
22
|
+
@temporary_gemfile_path = temporary_gemfile_path
|
23
|
+
end
|
24
|
+
|
25
|
+
def call
|
26
|
+
::FileUtils.rm_f(
|
27
|
+
[
|
28
|
+
@temporary_gemfile_path,
|
29
|
+
"#{@temporary_gemfile_path}.lock"
|
30
|
+
]
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,20 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'pathname'
|
4
|
+
require 'set'
|
4
5
|
|
5
6
|
module RubocopTodoCorrector
|
6
7
|
module Commands
|
7
8
|
class Pick
|
8
9
|
class << self
|
10
|
+
# @param [String] ignore_file_path
|
9
11
|
# @param [String] mode
|
10
12
|
# @param [Boolean] only_safe
|
11
13
|
# @param [String] rubocop_todo_path
|
12
14
|
def call(
|
15
|
+
ignore_file_path:,
|
13
16
|
mode:,
|
14
17
|
only_safe:,
|
15
18
|
rubocop_todo_path:
|
16
19
|
)
|
17
20
|
new(
|
21
|
+
ignore_file_path:,
|
18
22
|
mode:,
|
19
23
|
only_safe:,
|
20
24
|
rubocop_todo_path:
|
@@ -23,10 +27,12 @@ module RubocopTodoCorrector
|
|
23
27
|
end
|
24
28
|
|
25
29
|
def initialize(
|
30
|
+
ignore_file_path:,
|
26
31
|
mode:,
|
27
32
|
only_safe:,
|
28
33
|
rubocop_todo_path:
|
29
34
|
)
|
35
|
+
@ignore_file_path = ignore_file_path
|
30
36
|
@mode = mode
|
31
37
|
@only_safe = only_safe
|
32
38
|
@rubocop_todo_path = rubocop_todo_path
|
@@ -59,23 +65,37 @@ module RubocopTodoCorrector
|
|
59
65
|
raise "#{rubocop_todo_pathname.to_s.inspect} does not exist." unless rubocop_todo_pathname.exist?
|
60
66
|
end
|
61
67
|
|
68
|
+
# @return [Set<String>]
|
69
|
+
def ignored_cop_names
|
70
|
+
@ignored_cop_names ||= IgnoreFile.new(
|
71
|
+
path: @ignore_file_path
|
72
|
+
).ignored_cop_names.to_set
|
73
|
+
end
|
74
|
+
|
75
|
+
# @return [Array<Hash>]
|
76
|
+
def pickable_cops
|
77
|
+
auto_correctable_cops.reject do |cop|
|
78
|
+
ignored_cop_names.include?(cop[:name])
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
62
82
|
# @return [Hash, nil]
|
63
83
|
def picked_cop
|
64
84
|
case @mode
|
65
85
|
when 'first'
|
66
|
-
|
86
|
+
pickable_cops.first
|
67
87
|
when 'last'
|
68
|
-
|
88
|
+
pickable_cops.last
|
69
89
|
when 'least_occurred'
|
70
|
-
|
90
|
+
pickable_cops.min_by do |cop|
|
71
91
|
cop[:offenses_count]
|
72
92
|
end
|
73
93
|
when 'most_occurred'
|
74
|
-
|
94
|
+
pickable_cops.max_by do |cop|
|
75
95
|
cop[:offenses_count]
|
76
96
|
end
|
77
97
|
else
|
78
|
-
|
98
|
+
pickable_cops.sample
|
79
99
|
end
|
80
100
|
end
|
81
101
|
|
@@ -3,6 +3,7 @@
|
|
3
3
|
module RubocopTodoCorrector
|
4
4
|
module Commands
|
5
5
|
autoload :Bundle, 'rubocop_todo_corrector/commands/bundle'
|
6
|
+
autoload :Clean, 'rubocop_todo_corrector/commands/clean'
|
6
7
|
autoload :Correct, 'rubocop_todo_corrector/commands/correct'
|
7
8
|
autoload :Describe, 'rubocop_todo_corrector/commands/describe'
|
8
9
|
autoload :Generate, 'rubocop_todo_corrector/commands/generate'
|
@@ -42,6 +42,7 @@ module RubocopTodoCorrector
|
|
42
42
|
# @return [YARD::CodeObjects::ClassObject]
|
43
43
|
def yard_class_object
|
44
44
|
@yard_class_object ||= begin
|
45
|
+
::YARD::Tags::Library.define_tag('Cop Safety Information', :safety)
|
45
46
|
::YARD.parse(@source_path)
|
46
47
|
yardoc = ::YARD::Registry.all(:class).first
|
47
48
|
::YARD::Registry.clear
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pathname'
|
4
|
+
|
5
|
+
module RubocopTodoCorrector
|
6
|
+
class IgnoreFile
|
7
|
+
# @param [String] path
|
8
|
+
def initialize(path:)
|
9
|
+
@path = path
|
10
|
+
end
|
11
|
+
|
12
|
+
# @return [Array<String>]
|
13
|
+
def ignored_cop_names
|
14
|
+
content.split("\n").map do |line|
|
15
|
+
line.sub(/#.+/, '').strip
|
16
|
+
end.reject(&:empty?)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# @return [String]
|
22
|
+
def content
|
23
|
+
if pathname.exist?
|
24
|
+
pathname.read
|
25
|
+
else
|
26
|
+
''
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Pathname]
|
31
|
+
def pathname
|
32
|
+
@pathname ||= ::Pathname.new(@path)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -11,6 +11,7 @@ module RubocopTodoCorrector
|
|
11
11
|
autoload :DescriptionRenderer, 'rubocop_todo_corrector/description_renderer'
|
12
12
|
autoload :GemNamesDetector, 'rubocop_todo_corrector/gem_names_detector'
|
13
13
|
autoload :GemVersionDetector, 'rubocop_todo_corrector/gem_version_detector'
|
14
|
+
autoload :IgnoreFile, 'rubocop_todo_corrector/ignore_file'
|
14
15
|
autoload :RubocopTodoParser, 'rubocop_todo_corrector/rubocop_todo_parser'
|
15
16
|
autoload :RubocopTodoSectionParser, 'rubocop_todo_corrector/rubocop_todo_section_parser'
|
16
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop_todo_corrector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,6 +75,7 @@ files:
|
|
75
75
|
- lib/rubocop_todo_corrector/cli.rb
|
76
76
|
- lib/rubocop_todo_corrector/commands.rb
|
77
77
|
- lib/rubocop_todo_corrector/commands/bundle.rb
|
78
|
+
- lib/rubocop_todo_corrector/commands/clean.rb
|
78
79
|
- lib/rubocop_todo_corrector/commands/correct.rb
|
79
80
|
- lib/rubocop_todo_corrector/commands/describe.rb
|
80
81
|
- lib/rubocop_todo_corrector/commands/generate.rb
|
@@ -85,6 +86,7 @@ files:
|
|
85
86
|
- lib/rubocop_todo_corrector/description_renderer.rb
|
86
87
|
- lib/rubocop_todo_corrector/gem_names_detector.rb
|
87
88
|
- lib/rubocop_todo_corrector/gem_version_detector.rb
|
89
|
+
- lib/rubocop_todo_corrector/ignore_file.rb
|
88
90
|
- lib/rubocop_todo_corrector/rubocop_todo_parser.rb
|
89
91
|
- lib/rubocop_todo_corrector/rubocop_todo_section_parser.rb
|
90
92
|
- lib/rubocop_todo_corrector/version.rb
|