Class: Gitlab::Styles::Rubocop::Cop::ProjectPathHelper
- Inherits:
-
RuboCop::Cop::Cop
- Object
- RuboCop::Cop::Cop
- Gitlab::Styles::Rubocop::Cop::ProjectPathHelper
- Defined in:
- lib/gitlab/styles/rubocop/cop/project_path_helper.rb
Constant Summary collapse
- MSG =
'Use short project path helpers without explicitly passing the namespace: ' \ '`foo_project_bar_path(project, bar)` instead of ' \ '`foo_namespace_project_bar_path(project.namespace, project, bar)`.'.freeze
- METHOD_NAME_PATTERN =
/\A([a-z_]+_)?namespace_project(?:_[a-z_]+)?_(?:url|path)\z/
Instance Method Summary collapse
Instance Method Details
#autocorrect(node) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/gitlab/styles/rubocop/cop/project_path_helper.rb', line 25 def autocorrect(node) helper_name = method_name(node).to_s.sub('namespace_project', 'project') arguments = arguments(node) arguments.shift # Remove namespace argument replacement = "#{helper_name}(#{arguments.map(&:source).join(', ')})" lambda do |corrector| corrector.replace(node.source_range, replacement) end end |
#on_send(node) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/gitlab/styles/rubocop/cop/project_path_helper.rb', line 12 def on_send(node) return unless method_name(node).to_s =~ METHOD_NAME_PATTERN namespace_expr, project_expr = arguments(node) return unless namespace_expr && project_expr return unless namespace_expr.type == :send return unless method_name(namespace_expr) == :namespace return unless receiver(namespace_expr) == project_expr add_offense(node, :selector) end |