rubocop_challenger 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '069b4741c020bd27b620bcf7e5cac220bd9f80de03735751598e148d7c622a0a'
4
- data.tar.gz: 0a9eedf4aed6d0154be1cd70f53ac4a573fcdc349b0be4611b60e8f3463f2c6f
3
+ metadata.gz: d5a129ffbdfa720d2d61386e268ccfbff06005cd0f59f04ff5e4fbc843a82b0c
4
+ data.tar.gz: 7a6a2de90d5077852ab9c8ae16a9cb409b4319136a776bf1f82fc614c44b1011
5
5
  SHA512:
6
- metadata.gz: 4b87dea0df5bbb1e54e9296d71752be6d5af85dc57374da52c34431175e831e103f2c45d565e22e0b6e6c5bc4e6bdca95761a849489984699f4aa4721c306f84
7
- data.tar.gz: 54357ce576a82ea8c950fc2d0ed1c21b956e04fc971659b05b3e62d43696850fb59394943ba30f761674f07462474037fdfb6ffb87780f2e5d33f588da37ea8a
6
+ metadata.gz: 046a667891ec84c62ae768b3ba3ef28ab906c2e4e4df94bbb74950ab6db66c0157290975d223a0d1fe1d49d1d026ab88a8870195a1d0c6c09d866aaa80f1cd55
7
+ data.tar.gz: cc60705e93e82bd5d482ddc7a7b493f636e60286cf83527cf6dbddc1538a47dac18d7f014ea0935c9c5ec3725faff9f15154275330ac570fbe0b84df85140dbd
data/.circleci/config.yml CHANGED
@@ -96,6 +96,7 @@ commands:
96
96
  - verify_rubocop_challenge
97
97
  - verify_rubocop_challenge
98
98
  - verify_rubocop_challenge
99
+ - rubocop
99
100
  rubocop_challenge:
100
101
  steps:
101
102
  - run:
data/CHANGELOG.md CHANGED
@@ -1,15 +1,25 @@
1
1
  # Change log
2
2
 
3
+ ## v2.9.0 (Jun 02, 2022)
4
+
5
+ ### Feature
6
+
7
+ - [#628](https://github.com/ryz310/rubocop_challenger/pull/628) Change `auto-correct` to `autocorrect` ([@ryz310](https://github.com/ryz310))
8
+
9
+ ### Dependabot
10
+
11
+ - [#629](https://github.com/ryz310/rubocop_challenger/pull/629) Bump yard from 0.9.27 to 0.9.28 ([@ryz310](https://github.com/ryz310))
12
+
3
13
  ## v2.8.0 (May 30, 2022)
4
14
 
5
15
  ### Feature
6
16
 
7
17
  - [#616](https://github.com/ryz310/rubocop_challenger/pull/616) Support `--no-offense-counts` option ([@ryz310](https://github.com/ryz310))
18
+ - [#625](https://github.com/ryz310/rubocop_challenger/pull/625) Use `--conservative` option on `bundle update` ([@ryz310](https://github.com/ryz310))
8
19
 
9
20
  ### Bugfix
10
21
 
11
22
  - [#612](https://github.com/ryz310/rubocop_challenger/pull/612) Fix wrong usage of `Array#reject!`: this might return nil ([@r7kamura](https://github.com/r7kamura))
12
- - [#625](https://github.com/ryz310/rubocop_challenger/pull/625) Use `--conservative` option on `bundle update` ([@ryz310](https://github.com/ryz310))
13
23
 
14
24
  ### Breaking Change
15
25
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop_challenger (2.8.0)
4
+ rubocop_challenger (2.9.0)
5
5
  pr_comet (>= 0.5.1, < 0.7.0)
6
6
  rainbow
7
7
  rubocop (>= 0.87)
@@ -113,7 +113,7 @@ GEM
113
113
  concurrent-ruby (~> 1.0)
114
114
  unicode-display_width (2.1.0)
115
115
  webrick (1.7.0)
116
- yard (0.9.27)
116
+ yard (0.9.28)
117
117
  webrick (~> 1.7.0)
118
118
 
119
119
  PLATFORMS
data/README.md CHANGED
@@ -3,14 +3,14 @@
3
3
  [![CircleCI](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master.svg?style=svg&circle-token=cdf0ffce5b4c0c7804b50dde00ca5ef09cbadb67)](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master) [![Gem Version](https://badge.fury.io/rb/rubocop_challenger.svg)](https://badge.fury.io/rb/rubocop_challenger) [![Maintainability](https://api.codeclimate.com/v1/badges/a18c1c17fc534bb32473/maintainability)](https://codeclimate.com/github/ryz310/rubocop_challenger/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/a18c1c17fc534bb32473/test_coverage)](https://codeclimate.com/github/ryz310/rubocop_challenger/test_coverage)
4
4
 
5
5
  If you introduce [`rubocop`](https://github.com/rubocop-hq/rubocop) to an existing Rails project later, you will use [`$ rubocop --auto-gen-config`](https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md#automatically-generated-configuration). But it will make a huge `.rubocop_todo.yml` and make you despair.
6
- On the other hand, `rubocop` has [`--auto-correct`](https://github.com/rubocop-hq/rubocop/blob/master/manual/basic_usage.md#other-useful-command-line-flags) option, it is possible to automatically repair the writing which does not conform to the rule. But since it occasionally destroys your code, it is quite dangerous to apply all at once.
6
+ On the other hand, `rubocop` has [`--autocorrect`](https://github.com/rubocop-hq/rubocop/blob/master/manual/basic_usage.md#other-useful-command-line-flags) option, it is possible to automatically repair the writing which does not conform to the rule. But since it occasionally destroys your code, it is quite dangerous to apply all at once.
7
7
  It is ideal that to remove a disabled rule from `.rubocop_todo.yml` every day, to check whether it passes test, and can be obtained consent from the team. But it requires strong persistence and time.
8
8
  I call such work _Rubocop Challenge_. And the _RubocopChallenger_ is a gem to support this challenge!
9
9
 
10
10
  ## The history of RubocopChallenger with decrease of offense codes
11
11
 
12
- The following chart shows the history of RubocopChallenger and decrease of offense codes at a `.rubocop_todo.yml`. The project was released at 5 years ago, and then it was introduced the RuboCop gem for huge source code including a lots of offense codes. Before using the RubocopChallenger, it was not maintain to reduce offense codes. One day, I felt a crisis and started maintain with manual. I made a lots of Pull Requests to reduce them but it's a load for me and reviewers. So I created a script for automation the flow, which is the predecessor of Rubocop Challenger gem. It brought reducing the offense codes continuously. After 8 months, finally it has done. There is no auto-correctable offense codes.
13
- But there are many offenses which is un-auto-correctable yet. I will try to reduce it with the RubocopChallenger. The RubocopChallenger will
12
+ The following chart shows the history of RubocopChallenger and decrease of offense codes at a `.rubocop_todo.yml`. The project was released at 5 years ago, and then it was introduced the RuboCop gem for huge source code including a lots of offense codes. Before using the RubocopChallenger, it was not maintain to reduce offense codes. One day, I felt a crisis and started maintain with manual. I made a lots of Pull Requests to reduce them but it's a load for me and reviewers. So I created a script for automation the flow, which is the predecessor of Rubocop Challenger gem. It brought reducing the offense codes continuously. After 8 months, finally it has done. There is no autocorrectable offense codes.
13
+ But there are many offenses which is un-autocorrectable yet. I will try to reduce it with the RubocopChallenger. The RubocopChallenger will
14
14
  be continued to evolve.
15
15
 
16
16
  ![Decrease of offense codes](images/decrease_of_offense_codes.png)
@@ -18,7 +18,7 @@ be continued to evolve.
18
18
  ## Rubocop Challenge Flow
19
19
 
20
20
  1. Run _RubocopChallenger_ periodically from CI tool etc.
21
- 1. When _RubocopChallenger_ starts, delete a disabled rule from `.rubocop_todo.yml` existing in your project, execute `$ rubocop --auto-correct` and create a PR which include modified results
21
+ 1. When _RubocopChallenger_ starts, delete a disabled rule from `.rubocop_todo.yml` existing in your project, execute `$ rubocop --autocorrect` and create a PR which include modified results
22
22
  1. You confirm the PR passes testing and then merge it if there is no problem
23
23
 
24
24
  [![Rubocop Challenge](images/rubocop_challenge.png)](https://github.com/ryz310/rubocop_challenger/pull/97)
@@ -88,7 +88,7 @@ See: [RuboCop Challenger を GitHub Actions で動かす](https://zenn.dev/yamat
88
88
  $ rubocop_challenger help
89
89
 
90
90
  Commands:
91
- rubocop_challenger go --email=EMAIL --name=NAME # Run `$ rubocop --auto-correct` and create a PR to GitHub repo
91
+ rubocop_challenger go --email=EMAIL --name=NAME # Run `$ rubocop --autocorrect` and create a PR to GitHub repo
92
92
  rubocop_challenger help [COMMAND] # Describe available commands or one specific command
93
93
  rubocop_challenger version # Show current version
94
94
  ```
@@ -122,10 +122,10 @@ Options:
122
122
  # Default: true
123
123
  [--offense-counts], [--no-offense-counts] # Include offense counts in .rubocop_todo.yml
124
124
  # Default: true
125
- [--only-safe-auto-correct], [--no-only-safe-auto-correct] # If given `true`, it executes `rubocop --auto-correct`,it means to correct safe cops only.
125
+ [--only-safe-autocorrect], [--no-only-safe-autocorrect] # If given `true`, it executes `rubocop --autocorrect`,it means to correct safe cops only.
126
126
  [--verbose], [--no-verbose] # Displays executing command.
127
127
 
128
- Run `$ rubocop --auto-correct` and create a PR to GitHub repo
128
+ Run `$ rubocop --autocorrect` and create a PR to GitHub repo
129
129
  ```
130
130
 
131
131
  ## Requirement
@@ -5,7 +5,7 @@ require 'thor'
5
5
  module RubocopChallenger
6
6
  # To define CLI commands
7
7
  class CLI < Thor
8
- desc 'go', 'Run `$ rubocop --auto-correct` and create a PR to GitHub repo'
8
+ desc 'go', 'Run `$ rubocop --autocorrect` and create a PR to GitHub repo'
9
9
  option :email,
10
10
  required: true,
11
11
  type: :string,
@@ -65,10 +65,10 @@ module RubocopChallenger
65
65
  type: :boolean,
66
66
  default: true,
67
67
  desc: 'Include offense counts in .rubocop_todo.yml'
68
- option :only_safe_auto_correct,
68
+ option :only_safe_autocorrect,
69
69
  type: :boolean,
70
70
  default: false,
71
- desc: 'If given `true`, it executes `rubocop --auto-correct`,' \
71
+ desc: 'If given `true`, it executes `rubocop --autocorrect`,' \
72
72
  'it means to correct safe cops only.'
73
73
  option :verbose,
74
74
  type: :boolean,
@@ -2,10 +2,10 @@
2
2
 
3
3
  module RubocopChallenger
4
4
  module Errors
5
- # Raise if no auto-correctable rule in the `.rubocop_todo.yml`.
5
+ # Raise if no autocorrectable rule in the `.rubocop_todo.yml`.
6
6
  class NoAutoCorrectableRule < StandardError
7
7
  def initialize
8
- super 'There is no auto-correctable rule'
8
+ super 'There is no autocorrectable rule'
9
9
  end
10
10
  end
11
11
  end
@@ -11,8 +11,8 @@ module RubocopChallenger
11
11
  # Include the date and time in .rubocop_todo.yml
12
12
  # @option offense_counts [Boolean]
13
13
  # Include offense counts in .rubocop_todo.yml'
14
- # @option only-safe-auto-correct [Boolean]
15
- # If given `true`, it executes `rubocop --auto-correct`,
14
+ # @option only-safe-autocorrect [Boolean]
15
+ # If given `true`, it executes `rubocop --autocorrect`,
16
16
  # it means to correct safe cops only.
17
17
  # @option name [String]
18
18
  # The author name which use at the git commit
@@ -131,7 +131,7 @@ module RubocopChallenger
131
131
  end
132
132
 
133
133
  DESCRIPTION_THAT_CHALLENGE_IS_INCOMPLETE = <<~MSG
134
- Rubocop Challenger has executed auto-correcting but it is incomplete.
134
+ Rubocop Challenger has executed autocorrecting but it is incomplete.
135
135
  Therefore the rule add to ignore list.
136
136
  MSG
137
137
 
@@ -141,7 +141,7 @@ module RubocopChallenger
141
141
  #
142
142
  # @param rule [Rubocop::Rule] The corrected rule
143
143
  def add_to_ignore_list_if_challenge_is_incomplete(rule)
144
- return unless auto_correct_incomplete?(rule)
144
+ return unless autocorrect_incomplete?(rule)
145
145
 
146
146
  pull_request.commit! ':police_car: add the rule to the ignore list' do
147
147
  config_editor = Rubocop::ConfigEditor.new
@@ -156,7 +156,7 @@ module RubocopChallenger
156
156
  #
157
157
  # @param rule [Rubocop::Rule] The corrected rule
158
158
  # @return [Boolean] Return true if the challenge successed
159
- def auto_correct_incomplete?(rule)
159
+ def autocorrect_incomplete?(rule)
160
160
  todo_reader = Rubocop::TodoReader.new(options[:file_path])
161
161
  todo_reader.all_rules.include?(rule)
162
162
  end
@@ -165,7 +165,7 @@ module RubocopChallenger
165
165
  {
166
166
  file_path: options[:file_path],
167
167
  mode: mode,
168
- only_safe_auto_correct: options[:only_safe_auto_correct]
168
+ only_safe_autocorrect: options[:only_safe_autocorrect]
169
169
  }
170
170
  end
171
171
 
@@ -4,17 +4,17 @@ module RubocopChallenger
4
4
  module Rubocop
5
5
  # To execute Rubocop Challenge flow
6
6
  class Challenge
7
- def self.exec(file_path:, mode:, only_safe_auto_correct:)
8
- new(file_path, mode, only_safe_auto_correct).send(:exec)
7
+ def self.exec(file_path:, mode:, only_safe_autocorrect:)
8
+ new(file_path, mode, only_safe_autocorrect).send(:exec)
9
9
  end
10
10
 
11
11
  private
12
12
 
13
- attr_reader :mode, :only_safe_auto_correct, :command, :todo_reader, :todo_writer
13
+ attr_reader :mode, :only_safe_autocorrect, :command, :todo_reader, :todo_writer
14
14
 
15
- def initialize(file_path, mode, only_safe_auto_correct)
15
+ def initialize(file_path, mode, only_safe_autocorrect)
16
16
  @mode = mode
17
- @only_safe_auto_correct = only_safe_auto_correct
17
+ @only_safe_autocorrect = only_safe_autocorrect
18
18
  @command = Rubocop::Command.new
19
19
  @todo_reader = Rubocop::TodoReader.new(file_path)
20
20
  @todo_writer = Rubocop::TodoWriter.new(file_path)
@@ -24,7 +24,7 @@ module RubocopChallenger
24
24
  def exec
25
25
  verify_target_rule
26
26
  todo_writer.delete_rule(target_rule)
27
- command.auto_correct(only_safe_auto_correct: only_safe_auto_correct)
27
+ command.autocorrect(only_safe_autocorrect: only_safe_autocorrect)
28
28
  target_rule
29
29
  end
30
30
 
@@ -7,11 +7,11 @@ module RubocopChallenger
7
7
  include PrComet::CommandLine
8
8
 
9
9
  # Executes auto correction
10
- def auto_correct(only_safe_auto_correct:)
11
- if only_safe_auto_correct
12
- run('--auto-correct')
10
+ def autocorrect(only_safe_autocorrect:)
11
+ if only_safe_autocorrect
12
+ run('-a') # --autocorrect Autocorrect offenses (only when it's safe).
13
13
  else
14
- run('--auto-correct-all')
14
+ run('-A') # --autocorrect-all Autocorrect offenses (safe and unsafe).
15
15
  end
16
16
  end
17
17
 
@@ -26,9 +26,10 @@ module RubocopChallenger
26
26
  offense_count <=> other.offense_count
27
27
  end
28
28
 
29
- def auto_correctable?
30
- contents.include?('# Cop supports --auto-correct') || # for rubocop < v1.26.0
31
- contents.match?(/# This cop supports (un)?safe auto-correction/) # for rubocop >= v1.26.0
29
+ def autocorrectable?
30
+ contents.match?('# This cop supports (un)?safe autocorrection') || # for rubocop >= v1.30.0
31
+ contents.match?(/# This cop supports (un)?safe auto-correction/) || # for rubocop >= v1.26.0
32
+ contents.include?('# Cop supports --auto-correct') # for rubocop < v1.26.0
32
33
  end
33
34
 
34
35
  def rubydoc_url
@@ -29,23 +29,23 @@ module RubocopChallenger
29
29
  end
30
30
 
31
31
  # @return [Array<Rule>]
32
- def auto_correctable_rules
33
- all_rules.select(&:auto_correctable?)
32
+ def autocorrectable_rules
33
+ all_rules.select(&:autocorrectable?)
34
34
  end
35
35
 
36
36
  # @return [Rule]
37
37
  def least_occurrence_rule
38
- auto_correctable_rules.first
38
+ autocorrectable_rules.first
39
39
  end
40
40
 
41
41
  # @return [Rule]
42
42
  def most_occurrence_rule
43
- auto_correctable_rules.last
43
+ autocorrectable_rules.last
44
44
  end
45
45
 
46
46
  # @return [Rule]
47
47
  def any_rule
48
- auto_correctable_rules.sample
48
+ autocorrectable_rules.sample
49
49
  end
50
50
 
51
51
  private
@@ -18,8 +18,8 @@ module RubocopChallenger
18
18
  yardoc.tags('example').map { |tag| [tag.name, tag.text] }
19
19
  end
20
20
 
21
- # Indicates whether the auto-correct a cop does is safe (equivalent) by design.
22
- # If a cop is unsafe its auto-correct automatically becomes unsafe as well.
21
+ # Indicates whether the autocorrect a cop does is safe (equivalent) by design.
22
+ # If a cop is unsafe its autocorrect automatically becomes unsafe as well.
23
23
  #
24
24
  # @return [Boolean]
25
25
  def safe_autocorrect?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubocopChallenger
4
- VERSION = '2.8.0'
4
+ VERSION = '2.9.0'
5
5
  end
@@ -4,10 +4,10 @@
4
4
 
5
5
  <% if safe_autocorrect? -%>
6
6
  **Safe autocorrect: Yes**
7
- :white_check_mark: The auto-correct a cop does is safe (equivalent) by design.
7
+ :white_check_mark: The autocorrect a cop does is safe (equivalent) by design.
8
8
  <% else -%>
9
9
  **Safe autocorrect: No**
10
- :warning: The auto-correct a cop can yield false positives by design.
10
+ :warning: The autocorrect a cop can yield false positives by design.
11
11
  <% end -%>
12
12
 
13
13
  ## Description
@@ -4,10 +4,10 @@
4
4
 
5
5
  <% if safe_autocorrect? -%>
6
6
  **Safe autocorrect: Yes**
7
- :white_check_mark: The auto-correct a cop does is safe (equivalent) by design.
7
+ :white_check_mark: The autocorrect a cop does is safe (equivalent) by design.
8
8
  <% else -%>
9
9
  **Safe autocorrect: No**
10
- :warning: The auto-correct a cop can yield false positives by design.
10
+ :warning: The autocorrect a cop can yield false positives by design.
11
11
  <% end -%>
12
12
 
13
13
  ## Description
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop_challenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryosuke_sato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-30 00:00:00.000000000 Z
11
+ date: 2022-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pr_comet