rubocop_challenger 2.7.0 → 2.8.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: a55a6ab06c5737848ead37e6fe9d3cd0b021fc4fcefea47c1582b7b799306401
4
- data.tar.gz: 51b0f37c626115f654c16ef3452562e36c2a548f09f3e8875f0abe0a159a2868
3
+ metadata.gz: '069b4741c020bd27b620bcf7e5cac220bd9f80de03735751598e148d7c622a0a'
4
+ data.tar.gz: 0a9eedf4aed6d0154be1cd70f53ac4a573fcdc349b0be4611b60e8f3463f2c6f
5
5
  SHA512:
6
- metadata.gz: cad61624df3c1fcc152dba29035a4f5117b4c64fcacbe20112fd329665f208682e1ba15e20a1ede6c843065fecfada1ad359a5ebd99c21642833ccf29f57a24e
7
- data.tar.gz: 5e816517ffc0d353b08b176b4036bb56804583b42dc458cc56eee90ba4b5d0229530725ee9b4efb080e951c171c76837adde81abbd847ae8ae170579b951bd4b
6
+ metadata.gz: 4b87dea0df5bbb1e54e9296d71752be6d5af85dc57374da52c34431175e831e103f2c45d565e22e0b6e6c5bc4e6bdca95761a849489984699f4aa4721c306f84
7
+ data.tar.gz: 54357ce576a82ea8c950fc2d0ed1c21b956e04fc971659b05b3e62d43696850fb59394943ba30f761674f07462474037fdfb6ffb87780f2e5d33f588da37ea8a
data/.circleci/config.yml CHANGED
@@ -12,7 +12,7 @@ references:
12
12
  - &ruby_version
13
13
  ruby_version:
14
14
  type: enum
15
- enum: ["2.6", "2.7", "3.0", "3.1"]
15
+ enum: ["2.7", "3.0", "3.1"]
16
16
  default: "3.1"
17
17
 
18
18
  executors:
@@ -77,7 +77,7 @@ commands:
77
77
  bundle exec exe/rubocop_challenger go \
78
78
  --email=ryz310@gmail.com \
79
79
  --name=ryz310 \
80
- --mode=random \
80
+ --no-offense-counts \
81
81
  --no-create-pr
82
82
  integration_testing:
83
83
  description: Integration testing for RuboCop Challenge
@@ -159,7 +159,7 @@ jobs:
159
159
  - code-climate/install
160
160
  - code-climate/sum-coverage:
161
161
  input: codeclimate.*.json
162
- parts: 4
162
+ parts: 3
163
163
  - code-climate/upload-coverage
164
164
  rubocop:
165
165
  executor: default
@@ -192,9 +192,6 @@ workflows:
192
192
 
193
193
  commit:
194
194
  jobs:
195
- - build:
196
- name: build_on_ruby_2.6
197
- ruby_version: "2.6"
198
195
  - build:
199
196
  name: build_on_ruby_2.7
200
197
  ruby_version: "2.7"
@@ -209,14 +206,12 @@ workflows:
209
206
  - integration_testing
210
207
  - upload-coverage:
211
208
  requires:
212
- - build_on_ruby_2.6
213
209
  - build_on_ruby_2.7
214
210
  - build_on_ruby_3.0
215
211
  - build_on_ruby_3.1
216
212
  - release:
217
213
  context: RubyGems API Key
218
214
  requires:
219
- - build_on_ruby_2.6
220
215
  - build_on_ruby_2.7
221
216
  - build_on_ruby_3.0
222
217
  - build_on_ruby_3.1
data/.rubocop.yml CHANGED
@@ -7,13 +7,13 @@ require:
7
7
  inherit_from: .rubocop_todo.yml
8
8
 
9
9
  AllCops:
10
- TargetRubyVersion: 2.6
10
+ TargetRubyVersion: 2.7
11
11
  NewCops: enable
12
12
 
13
13
  Metrics/BlockLength:
14
14
  Exclude:
15
- - 'challenger.gemspec'
16
- - 'spec/**/*'
15
+ - "challenger.gemspec"
16
+ - "spec/**/*"
17
17
 
18
18
  Naming/VariableNumber:
19
19
  EnforcedStyle: snake_case
@@ -21,7 +21,7 @@ Naming/VariableNumber:
21
21
  # For integration testing
22
22
  RSpec/MultipleExpectations:
23
23
  Exclude:
24
- - 'spec/lib/rubocop_challenger/cli_spec.rb'
24
+ - "spec/lib/rubocop_challenger/cli_spec.rb"
25
25
 
26
26
  RSpec/MultipleMemoizedHelpers:
27
27
  Max: 10
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config --exclude-limit 30 --no-auto-gen-timestamp`
3
- # using RuboCop version 1.27.0.
3
+ # using RuboCop version 1.30.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Change log
2
2
 
3
+ ## v2.8.0 (May 30, 2022)
4
+
5
+ ### Feature
6
+
7
+ - [#616](https://github.com/ryz310/rubocop_challenger/pull/616) Support `--no-offense-counts` option ([@ryz310](https://github.com/ryz310))
8
+
9
+ ### Bugfix
10
+
11
+ - [#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
+
14
+ ### Breaking Change
15
+
16
+ - [#615](https://github.com/ryz310/rubocop_challenger/pull/615) The end of ruby 2.6 support ([@ryz310](https://github.com/ryz310))
17
+
18
+ ### Rubocop Challenge
19
+
20
+ - [#624](https://github.com/ryz310/rubocop_challenger/pull/624) Re-generate .rubocop_todo.yml with RuboCop v1.30.0 ([@ryz310](https://github.com/ryz310))
21
+
22
+ ### Dependabot
23
+
24
+ - [#608](https://github.com/ryz310/rubocop_challenger/pull/608) Update pr_comet requirement from ~> 0.5.1 to >= 0.5.1, < 0.7.0 ([@ryz310](https://github.com/ryz310))
25
+ - [#610](https://github.com/ryz310/rubocop_challenger/pull/610) Bump activesupport from 6.1.5.1 to 6.1.6 ([@ryz310](https://github.com/ryz310))
26
+
27
+ ### Misc
28
+
29
+ - [#614](https://github.com/ryz310/rubocop_challenger/pull/614) Tweak some words improved representation ([@ydah](https://github.com/ydah))
30
+ - [#619](https://github.com/ryz310/rubocop_challenger/pull/619) git mv ./images/decrease_of_offen{c,s}e_codes.png ([@r7kamura](https://github.com/r7kamura))
31
+
3
32
  ## v2.7.0 (May 08, 2022)
4
33
 
5
34
  ### Feature
data/Gemfile CHANGED
@@ -4,7 +4,5 @@ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
- gem 'activesupport', '~> 6.1' # TODO: Remove this line at the end of Ruby 2.6 support
8
-
9
7
  # Specify your gem's dependencies in rubocop_challenger.gemspec
10
8
  gemspec
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop_challenger (2.7.0)
5
- pr_comet (~> 0.5.1)
4
+ rubocop_challenger (2.8.0)
5
+ pr_comet (>= 0.5.1, < 0.7.0)
6
6
  rainbow
7
7
  rubocop (>= 0.87)
8
8
  rubocop-performance
@@ -16,12 +16,11 @@ PATH
16
16
  GEM
17
17
  remote: https://rubygems.org/
18
18
  specs:
19
- activesupport (6.1.5.1)
19
+ activesupport (7.0.3)
20
20
  concurrent-ruby (~> 1.0, >= 1.0.2)
21
21
  i18n (>= 1.6, < 2)
22
22
  minitest (>= 5.1)
23
23
  tzinfo (~> 2.0)
24
- zeitwerk (~> 2.3)
25
24
  addressable (2.8.0)
26
25
  public_suffix (>= 2.0.2, < 5.0)
27
26
  ast (2.4.2)
@@ -30,41 +29,21 @@ GEM
30
29
  concurrent-ruby (1.1.10)
31
30
  diff-lcs (1.5.0)
32
31
  docile (1.4.0)
33
- faraday (1.10.0)
34
- faraday-em_http (~> 1.0)
35
- faraday-em_synchrony (~> 1.0)
36
- faraday-excon (~> 1.1)
37
- faraday-httpclient (~> 1.0)
38
- faraday-multipart (~> 1.0)
39
- faraday-net_http (~> 1.0)
40
- faraday-net_http_persistent (~> 1.0)
41
- faraday-patron (~> 1.0)
42
- faraday-rack (~> 1.0)
43
- faraday-retry (~> 1.0)
32
+ faraday (2.3.0)
33
+ faraday-net_http (~> 2.0)
44
34
  ruby2_keywords (>= 0.0.4)
45
- faraday-em_http (1.0.0)
46
- faraday-em_synchrony (1.0.0)
47
- faraday-excon (1.1.0)
48
- faraday-httpclient (1.0.1)
49
- faraday-multipart (1.0.3)
50
- multipart-post (>= 1.2, < 3)
51
- faraday-net_http (1.0.1)
52
- faraday-net_http_persistent (1.2.0)
53
- faraday-patron (1.0.0)
54
- faraday-rack (1.0.0)
55
- faraday-retry (1.0.3)
35
+ faraday-net_http (2.0.3)
56
36
  i18n (1.10.0)
57
37
  concurrent-ruby (~> 1.0)
58
38
  method_source (1.0.0)
59
39
  minitest (5.15.0)
60
- multipart-post (2.1.1)
61
- octokit (4.22.0)
62
- faraday (>= 0.9)
63
- sawyer (~> 0.8.0, >= 0.5.3)
40
+ octokit (4.23.0)
41
+ faraday (>= 1, < 3)
42
+ sawyer (~> 0.9)
64
43
  parallel (1.22.1)
65
44
  parser (3.1.2.0)
66
45
  ast (~> 2.4.1)
67
- pr_comet (0.5.1)
46
+ pr_comet (0.6.0)
68
47
  octokit
69
48
  rainbow
70
49
  pry (0.13.1)
@@ -74,10 +53,10 @@ GEM
74
53
  byebug (~> 11.0)
75
54
  pry (~> 0.13.0)
76
55
  public_suffix (4.0.7)
77
- rack (2.2.3)
56
+ rack (2.2.3.1)
78
57
  rainbow (3.1.1)
79
58
  rake (13.0.6)
80
- regexp_parser (2.3.1)
59
+ regexp_parser (2.5.0)
81
60
  rexml (3.2.5)
82
61
  rspec (3.11.0)
83
62
  rspec-core (~> 3.11.0)
@@ -94,18 +73,18 @@ GEM
94
73
  rspec-support (3.11.0)
95
74
  rspec_junit_formatter (0.5.1)
96
75
  rspec-core (>= 2, < 4, != 2.12.0)
97
- rubocop (1.29.0)
76
+ rubocop (1.30.0)
98
77
  parallel (~> 1.10)
99
78
  parser (>= 3.1.0.0)
100
79
  rainbow (>= 2.2.2, < 4.0)
101
80
  regexp_parser (>= 1.8, < 3.0)
102
81
  rexml (>= 3.2.5, < 4.0)
103
- rubocop-ast (>= 1.17.0, < 2.0)
82
+ rubocop-ast (>= 1.18.0, < 2.0)
104
83
  ruby-progressbar (~> 1.7)
105
84
  unicode-display_width (>= 1.4.0, < 3.0)
106
- rubocop-ast (1.17.0)
85
+ rubocop-ast (1.18.0)
107
86
  parser (>= 3.1.1.0)
108
- rubocop-performance (1.13.3)
87
+ rubocop-performance (1.14.0)
109
88
  rubocop (>= 1.7.0, < 2.0)
110
89
  rubocop-ast (>= 0.4.0)
111
90
  rubocop-rails (2.14.2)
@@ -114,15 +93,15 @@ GEM
114
93
  rubocop (>= 1.7.0, < 2.0)
115
94
  rubocop-rake (0.6.0)
116
95
  rubocop (~> 1.0)
117
- rubocop-rspec (2.10.0)
96
+ rubocop-rspec (2.11.1)
118
97
  rubocop (~> 1.19)
119
98
  rubocop-thread_safety (0.4.4)
120
99
  rubocop (>= 0.53.0)
121
100
  ruby-progressbar (1.11.0)
122
101
  ruby2_keywords (0.0.5)
123
- sawyer (0.8.2)
102
+ sawyer (0.9.1)
124
103
  addressable (>= 2.3.5)
125
- faraday (> 0.8, < 2.0)
104
+ faraday (>= 0.17.3, < 3)
126
105
  simplecov (0.21.2)
127
106
  docile (~> 1.1)
128
107
  simplecov-html (~> 0.11)
@@ -136,13 +115,11 @@ GEM
136
115
  webrick (1.7.0)
137
116
  yard (0.9.27)
138
117
  webrick (~> 1.7.0)
139
- zeitwerk (2.5.4)
140
118
 
141
119
  PLATFORMS
142
120
  ruby
143
121
 
144
122
  DEPENDENCIES
145
- activesupport (~> 6.1)
146
123
  bundler (>= 2.0)
147
124
  pry-byebug
148
125
  rake (~> 13.0)
data/README.md CHANGED
@@ -5,20 +5,20 @@
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
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.
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
- I call such work *Rubocop Challenge*. And the *RubocopChallenger* is a gem to support this challenge!
8
+ I call such work _Rubocop Challenge_. And the _RubocopChallenger_ is a gem to support this challenge!
9
9
 
10
- ## The history of RubocopChallenger with decrease of offence codes
10
+ ## The history of RubocopChallenger with decrease of offense codes
11
11
 
12
- The following chart shows the history of RubocopChallenger and decrease of offence 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 offence codes. Before using the RubocopChallenger, it was not maintain to reduce offence 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 offence codes continuously. After 8 months, finally it has done. There is no auto-correctable offence codes.
13
- But there are many offences 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 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
14
14
  be continued to evolve.
15
15
 
16
- ![Decrease of offence codes](images/decrease_of_offence_codes.png)
16
+ ![Decrease of offense codes](images/decrease_of_offense_codes.png)
17
17
 
18
18
  ## Rubocop Challenge Flow
19
19
 
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
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
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)
@@ -54,7 +54,7 @@ workflows:
54
54
  nightly:
55
55
  triggers:
56
56
  - schedule:
57
- cron: "30 23 * * 1,2,3" # 8:30am every Tuesday, Wednsday and Thursday (JST)
57
+ cron: "30 23 * * 1,2,3" # 8:30am every Tuesday, Wednesday and Thursday (JST)
58
58
  filters:
59
59
  branches:
60
60
  only:
@@ -71,16 +71,16 @@ I have seen cases where errors occur due to compatibility issues with other gems
71
71
  GitHub personal access token is required for sending pull requests to your repository.
72
72
 
73
73
  1. Go to [your account's settings page](https://github.com/settings/tokens) and [generate a new token](https://github.com/settings/tokens/new) with "repo" scope
74
- ![generate token](images/generate_token.png)
74
+ ![generate token](images/generate_token.png)
75
75
  1. On [CircleCI](https://circleci.com) dashboard, go to your application's "Project Settings" -> "Environment Variables"
76
76
  1. Add an environment variable `GITHUB_ACCESS_TOKEN` with your GitHub personal access token
77
- ![circleci environment variables](images/circleci_environment_variables.png)
77
+ ![circleci environment variables](images/circleci_environment_variables.png)
78
78
 
79
79
  ### Want to use on GitHub Actions?
80
80
 
81
81
  It's introduced in the following blog. Thank you Mr. Takuya Yamaguchi!
82
82
 
83
- See: [RuboCop ChallengerをGitHub Actionsで動かす](https://zenn.dev/yamat47/articles/219e14ebcf31a1d13ff4)
83
+ See: [RuboCop Challenger GitHub Actions で動かす](https://zenn.dev/yamat47/articles/219e14ebcf31a1d13ff4)
84
84
 
85
85
  ## CLI command references
86
86
 
@@ -107,7 +107,7 @@ Options:
107
107
  f, [--file-path=FILE_PATH] # Set your ".rubocop_todo.yml" path
108
108
  # Default: .rubocop_todo.yml
109
109
  t, [--template=TEMPLATE] # A Pull Request template `erb` file path.You can use variable that `title`, `rubydoc_url`, `description` and `examples` into the erb file.
110
- [--mode=MODE] # Mode to select deletion target. You can choice "most_occurrence", "least_occurrence", or "random"
110
+ [--mode=MODE] # Mode to select deletion target. You can choice "most_occurrence", "least_occurrence", or "random". If you set --no-offense-counts, the mode to be forced to "random".
111
111
  # Default: most_occurrence
112
112
  b, [--base-branch=BASE_BRANCH] # The Branch to merge into
113
113
  # Default: master
@@ -115,9 +115,12 @@ Options:
115
115
  # Default: ["rubocop challenge"]
116
116
  [--project-column-name=PROJECT_COLUMN_NAME] # A project column name. You can add the created PR to the GitHub project
117
117
  [--project-id=N] # A target project ID. If does not supplied, this method will find a project which associated the repository. When the repository has multiple projects, you should supply this.
118
- [--no-create-pr] # No create a pull request (for testing)
119
- [--exclude-limit=N] # For how many exclude properties when creating the .rubocop_todo.yml
120
- [--auto-gen-timestamp], [--no-auto-gen-timestamp] # Include the date and time when creating the .rubocop_todo.yml
118
+ [--create-pr], [--no-create-pr] # If you set --no-create-pr, no create a pull request (for testing)
119
+ # Default: true
120
+ [--exclude-limit=N] # For how many exclude properties on create .rubocop_todo.yml
121
+ [--auto-gen-timestamp], [--no-auto-gen-timestamp] # Include the date and time in .rubocop_todo.yml
122
+ # Default: true
123
+ [--offense-counts], [--no-offense-counts] # Include offense counts in .rubocop_todo.yml
121
124
  # Default: true
122
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.
123
126
  [--verbose], [--no-verbose] # Displays executing command.
@@ -127,7 +130,7 @@ Run `$ rubocop --auto-correct` and create a PR to GitHub repo
127
130
 
128
131
  ## Requirement
129
132
 
130
- * Ruby 2.6 or higher
133
+ - Ruby 2.7 or higher
131
134
 
132
135
  ## Development
133
136
 
data/challenger.gemspec CHANGED
@@ -22,9 +22,9 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.required_ruby_version = '>= 2.6'
25
+ spec.required_ruby_version = '>= 2.7'
26
26
 
27
- spec.add_runtime_dependency 'pr_comet', '~> 0.5.1'
27
+ spec.add_runtime_dependency 'pr_comet', '>= 0.5.1', '< 0.7.0'
28
28
  spec.add_runtime_dependency 'rainbow'
29
29
  spec.add_runtime_dependency 'rubocop', '>= 0.87'
30
30
  spec.add_runtime_dependency 'rubocop-performance'
@@ -14,7 +14,7 @@ module RubocopChallenger
14
14
  #
15
15
  # @param gem_names [Array<String>] The target gem names
16
16
  def update(*gem_names)
17
- run('update', *gem_names.select { |gem_name| installed?(gem_name) })
17
+ run('update', *gem_names.select { |gem_name| installed?(gem_name) }, '--conservative')
18
18
  end
19
19
 
20
20
  # Checks the gem is installed
@@ -29,7 +29,8 @@ module RubocopChallenger
29
29
  type: :string,
30
30
  default: 'most_occurrence',
31
31
  desc: 'Mode to select deletion target. You can choice ' \
32
- '"most_occurrence", "least_occurrence", or "random"'
32
+ '"most_occurrence", "least_occurrence", or "random". ' \
33
+ 'If you set --no-offense-counts, the mode to be forced to "random".'
33
34
  option :base_branch,
34
35
  type: :string,
35
36
  default: 'master',
@@ -49,19 +50,22 @@ module RubocopChallenger
49
50
  desc: 'A target project ID. If does not supplied, this method ' \
50
51
  'will find a project which associated the repository. When ' \
51
52
  'the repository has multiple projects, you should supply this.'
52
- option :'no-create-pr',
53
+ option :create_pr,
53
54
  type: :boolean,
54
- default: false,
55
- desc: 'No create a pull request (for testing)'
56
- option :'exclude-limit',
55
+ default: true,
56
+ desc: 'If you set --no-create-pr, no create a pull request (for testing)'
57
+ option :exclude_limit,
57
58
  type: :numeric,
58
- desc: 'For how many exclude properties when creating the ' \
59
- '.rubocop_todo.yml'
60
- option :'auto-gen-timestamp',
59
+ desc: 'For how many exclude properties on create .rubocop_todo.yml'
60
+ option :auto_gen_timestamp,
61
+ type: :boolean,
62
+ default: true,
63
+ desc: 'Include the date and time in .rubocop_todo.yml'
64
+ option :offense_counts,
61
65
  type: :boolean,
62
66
  default: true,
63
- desc: 'Include the date and time when creating the .rubocop_todo.yml'
64
- option :'only-safe-auto-correct',
67
+ desc: 'Include offense counts in .rubocop_todo.yml'
68
+ option :only_safe_auto_correct,
65
69
  type: :boolean,
66
70
  default: false,
67
71
  desc: 'If given `true`, it executes `rubocop --auto-correct`,' \
@@ -6,9 +6,11 @@ module RubocopChallenger
6
6
  # @param options [Hash]
7
7
  # Options for the rubocop challenge
8
8
  # @option exclude-limit [Integer]
9
- # For how many exclude properties when creating the ".rubocop_todo.yml"
9
+ # For how many exclude properties on create .rubocop_todo.yml
10
10
  # @option auto-gen-timestamp [Boolean]
11
- # Include the date and time when creating the ".rubocop_todo.yml"
11
+ # Include the date and time in .rubocop_todo.yml
12
+ # @option offense_counts [Boolean]
13
+ # Include offense counts in .rubocop_todo.yml'
12
14
  # @option only-safe-auto-correct [Boolean]
13
15
  # If given `true`, it executes `rubocop --auto-correct`,
14
16
  # it means to correct safe cops only.
@@ -162,8 +164,8 @@ module RubocopChallenger
162
164
  def rubocop_challenge_options
163
165
  {
164
166
  file_path: options[:file_path],
165
- mode: options[:mode],
166
- only_safe_auto_correct: options[:'only-safe-auto-correct']
167
+ mode: mode,
168
+ only_safe_auto_correct: options[:only_safe_auto_correct]
167
169
  }
168
170
  end
169
171
 
@@ -173,7 +175,7 @@ module RubocopChallenger
173
175
  user_email: options[:email],
174
176
  base_branch: options[:base_branch],
175
177
  labels: options[:labels],
176
- dry_run: options[:'no-create-pr'],
178
+ dry_run: !options[:create_pr],
177
179
  project_column_name: options[:project_column_name],
178
180
  project_id: options[:project_id],
179
181
  verbose: options[:verbose]
@@ -182,9 +184,20 @@ module RubocopChallenger
182
184
 
183
185
  def auto_gen_config_options
184
186
  {
185
- exclude_limit: options[:'exclude-limit'],
186
- auto_gen_timestamp: options[:'auto-gen-timestamp']
187
+ exclude_limit: options[:exclude_limit],
188
+ auto_gen_timestamp: options[:auto_gen_timestamp],
189
+ offense_counts: options[:offense_counts]
187
190
  }
188
191
  end
192
+
193
+ # Mode to select deletion target.
194
+ # If you set --no-offense-counts, the mode to be forced to "random".
195
+ #
196
+ # @return [String] "most_occurrence", "least_occurrence", or "random"
197
+ def mode
198
+ return 'random' unless options[:offense_counts]
199
+
200
+ options[:mode]
201
+ end
189
202
  end
190
203
  end
@@ -19,10 +19,12 @@ module RubocopChallenger
19
19
  #
20
20
  # @param exclude_limit [Integer] default: nil
21
21
  # @param auto_gen_timestamp [Boolean] default: true
22
- def auto_gen_config(exclude_limit: nil, auto_gen_timestamp: true)
22
+ # @param offense_counts [Boolean] default: true
23
+ def auto_gen_config(exclude_limit: nil, auto_gen_timestamp: true, offense_counts: true)
23
24
  commands = ['--auto-gen-config']
24
25
  commands << "--exclude-limit #{exclude_limit}" if exclude_limit
25
26
  commands << '--no-auto-gen-timestamp' unless auto_gen_timestamp
27
+ commands << '--no-offense-counts' unless offense_counts
26
28
  run(*commands)
27
29
  end
28
30
 
@@ -22,9 +22,10 @@ module RubocopChallenger
22
22
  @all_rules ||=
23
23
  file_contents
24
24
  .split(/\n{2,}/)
25
- .map! { |content| Rule.new(content) }
26
- .reject! { |rule| invalid?(rule) }
27
- .sort!
25
+ .drop(1) # remove header contents
26
+ .map { |content| Rule.new(content) }
27
+ .reject { |rule| ignored?(rule) }
28
+ .sort
28
29
  end
29
30
 
30
31
  # @return [Array<Rule>]
@@ -58,8 +59,8 @@ module RubocopChallenger
58
59
 
59
60
  # @param rule [Rule] the target rule
60
61
  # @return [Boolean]
61
- def invalid?(rule)
62
- rule.offense_count.zero? || ignored_rules.include?(rule.title)
62
+ def ignored?(rule)
63
+ ignored_rules.include?(rule.title)
63
64
  end
64
65
 
65
66
  # @return [Array<String>] Ignored rule titles
@@ -66,15 +66,7 @@ module RubocopChallenger
66
66
  end
67
67
 
68
68
  def source_file_path
69
- if Object.respond_to?(:const_source_location)
70
- Object.const_source_location(cop_class.name).first
71
- else
72
- instance_methods
73
- .map { |m| cop_class.instance_method(m).source_location }
74
- .compact
75
- .map(&:first)
76
- .first
77
- end
69
+ Object.const_source_location(cop_class.name).first
78
70
  end
79
71
  end
80
72
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubocopChallenger
4
- VERSION = '2.7.0'
4
+ VERSION = '2.8.0'
5
5
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop_challenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.8.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-08 00:00:00.000000000 Z
11
+ date: 2022-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pr_comet
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.5.1
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 0.7.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 0.5.1
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 0.7.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rainbow
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -265,7 +271,7 @@ files:
265
271
  - challenger.gemspec
266
272
  - exe/rubocop_challenger
267
273
  - images/circleci_environment_variables.png
268
- - images/decrease_of_offence_codes.png
274
+ - images/decrease_of_offense_codes.png
269
275
  - images/generate_token.png
270
276
  - images/rubocop_challenge.png
271
277
  - lib/rubocop_challenger.rb
@@ -300,7 +306,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
300
306
  requirements:
301
307
  - - ">="
302
308
  - !ruby/object:Gem::Version
303
- version: '2.6'
309
+ version: '2.7'
304
310
  required_rubygems_version: !ruby/object:Gem::Requirement
305
311
  requirements:
306
312
  - - ">="