Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix an error for Style/ClassMethodsDefinitions #9560

Conversation

@koic
Copy link
Member

@koic koic commented Mar 6, 2021

This PR fixes the following error for Lint/ClassMethodsDefinitions when defining class methods with class << self with comment only body.

% cat /tmp/example.rb
class Foo
  class << self
    def do_something
      # TODO
    end
  end
end

% rubocop /tmp/example.rb --only Style/ClassMethodsDefinitions -d
For /private/tmp: Default configuration from
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/config/default.yml
Inspecting 1 file
Scanning /private/tmp/example.rb
An error occurred while Style/ClassMethodsDefinitions cop was inspecting
/private/tmp/example.rb:2:2.
undefined method `gsub' for nil:NilClass
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:147:in `extract_def_from_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:120:in `block in autocorrect_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:117:in `each'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:117:in `autocorrect_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:77:in `block in on_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/base.rb:340:in `correct'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/base.rb:127:in `add_offense'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/class_methods_definitions.rb:76:in `on_sclass'
(snip)

1 file inspected, no offenses detected

1 error occurred:
An error occurred while Style/ClassMethodsDefinitions cop was inspecting
/private/tmp/example.rb:2:2.
Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/rubocop/rubocop/issues

Mention the following information in the issue report:
1.11.0 (using Parser 3.0.0.0, rubocop-ast 1.4.1, running on ruby 3.0.0 x86_64-darwin19)
Finished in 0.07133800000883639 seconds

Before submitting the PR make sure the following are checked:

  • The PR relates to only one subject with a clear title and description in grammatically correct, complete sentences.
  • Wrote good commit messages.
  • Commit message starts with [Fix #issue-number] (if the related issue exists).
  • Feature branch is up-to-date with master (if not - rebase it).
  • Squashed related commits together.
  • Added tests.
  • Ran bundle exec rake default. It executes all tests and runs RuboCop on its own code.
  • Added an entry (file) to the changelog folder named {change_type}_{change_description}.md if the new code introduces user-observable changes. See changelog entry format for details.
This PR fixes the following error for `Lint/ClassMethodsDefinitions`
when defining class methods with `class << self` with comment only body.

```console
% cat /tmp/example.rb
class Foo
  class << self
    def do_something
      # TODO
    end
  end
end

% rubocop /tmp/example.rb --only Style/ClassMethodsDefinitions -d
For /private/tmp: Default configuration from
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/config/default.yml
Inspecting 1 file
Scanning /private/tmp/example.rb
An error occurred while Style/ClassMethodsDefinitions cop was inspecting
/private/tmp/example.rb:2:2.
undefined method `gsub' for nil:NilClass
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:147:in `extract_def_from_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:120:in `block in autocorrect_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:117:in `each'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:117:in `autocorrect_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:77:in `block in on_sclass'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/base.rb:340:in
`correct'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/base.rb:127:in
`add_offense'
/Users/koic/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/rubocop-1.11.0/lib/rubocop/cop/style/
class_methods_definitions.rb:76:in `on_sclass'
(snip)

1 file inspected, no offenses detected

1 error occurred:
An error occurred while Style/ClassMethodsDefinitions cop was inspecting
/private/tmp/example.rb:2:2.
Errors are usually caused by RuboCop bugs.
Please, report your problems to RuboCop's issue tracker.
https://github.com/rubocop/rubocop/issues

Mention the following information in the issue report:
1.11.0 (using Parser 3.0.0.0, rubocop-ast 1.4.1, running on ruby 3.0.0 x86_64-darwin19)
Finished in 0.07133800000883639 seconds
```
@koic koic force-pushed the koic:fix_an_error_for_style_class_methods_definitions branch from b4983a9 to 59e078f Mar 6, 2021
@bbatsov bbatsov merged commit f42d298 into rubocop:master Mar 7, 2021
31 checks passed
31 checks passed
@github-actions
windows 2.4
Details
@github-actions
windows 2.5
Details
@github-actions
windows 2.6
Details
@github-actions
windows 2.7
Details
@github-actions
windows 3.0
Details
@github-actions
windows mingw
Details
@mergify
Summary 2 potential rules
Details
ci/circleci: cc-setup Your tests passed on CircleCI!
Details
ci/circleci: cc-upload-coverage Your tests passed on CircleCI!
Details
ci/circleci: documentation-checks Your tests passed on CircleCI!
Details
ci/circleci: jruby-9.2-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: jruby-9.2-rubocop Your tests passed on CircleCI!
Details
ci/circleci: jruby-9.2-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.4-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.4-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.4-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.5-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.5-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.5-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.6-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.6-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.6-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.7-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.7-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-2.7-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-3.0-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-3.0-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-3.0-spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-head-ascii_spec Your tests passed on CircleCI!
Details
ci/circleci: ruby-head-rubocop Your tests passed on CircleCI!
Details
ci/circleci: ruby-head-spec Your tests passed on CircleCI!
Details
@bbatsov
Copy link
Collaborator

@bbatsov bbatsov commented Mar 7, 2021

Looks good!

@koic koic deleted the koic:fix_an_error_for_style_class_methods_definitions branch Mar 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

2 participants