Class: RuboCop::Cop::Bundler::GemComment
- Inherits:
-
RuboCop::Cop::Base
- Object
- RuboCop::Cop::Base
- RuboCop::Cop::Bundler::GemComment
- Includes:
- DefNode, GemDeclaration
- Defined in:
- lib/rubocop/cop/bundler/gem_comment.rb
Overview
Each gem in the Gemfile should have a comment explaining its purpose in the project, or the reason for its version or source.
The optional “OnlyFor” configuration array can be used to only register offenses when the gems use certain options or have version specifiers.
When “version_specifiers” is included, a comment will be enforced if the gem has any version specifier.
When “restrictive_version_specifiers” is included, a comment will be enforced if the gem has a version specifier that holds back the version of the gem.
For any other value in the array, a comment will be enforced for a gem if an option by the same name is present. A useful use case is to enforce a comment when using options that change the source of a gem:
-
‘bitbucket`
-
‘gist`
-
‘git`
-
‘github`
-
‘source`
For a full list of options supported by bundler, see bundler.io/man/gemfile.5.html .
Constant Summary collapse
- MSG =
'Missing gem description comment.'
- CHECKED_OPTIONS_CONFIG =
'OnlyFor'
- VERSION_SPECIFIERS_OPTION =
'version_specifiers'
- RESTRICTIVE_VERSION_SPECIFIERS_OPTION =
'restrictive_version_specifiers'
- RESTRICTIVE_VERSION_PATTERN =
/\A\s*(?:<|~>|\d|=)/.freeze
- RESTRICT_ON_SEND =
%i[gem].freeze
Constants included from VisibilityHelp
VisibilityHelp::VISIBILITY_SCOPES
Instance Attribute Summary
Attributes inherited from RuboCop::Cop::Base
Instance Method Summary collapse
Methods included from GemDeclaration
Methods inherited from RuboCop::Cop::Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_send(node) ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/rubocop/cop/bundler/gem_comment.rb', line 94 def on_send(node) return unless gem_declaration?(node) return if ignored_gem?(node) return if commented_any_descendant?(node) return if cop_config[CHECKED_OPTIONS_CONFIG].any? && !(node) add_offense(node) end |