class RuboCop::Cop::Rake::Desc
end
task :do_something do
desc ‘Do something’
# good
task :do_something
desc ‘Do something’
# good
end
task :do_something do
# bad
task :do_something
# bad
@example
because the default task is executed with ‘rake` without command.
Note: This cop does not require description for the default task,
task that does not have `desc` by `rake -T`.
It is useful as a documentation of task. And Rake does not display
Rake task definition should have a description with `desc` method.
def can_insert_desc_to?(parent)
def can_insert_desc_to?(parent) .type?(:begin, :block, :kwbegin)
def on_task(node)
def on_task(node) return if task_with_desc?(node) return if Helper::TaskName.task_name(node) == :default requirements = prerequisites(node) return if requirements&.array_type? add_offense(node) end
def parent_and_task(task_node)
def parent_and_task(task_node) = task_node.parent nil, task_node unless parent parent, task_node unless parent.block_type? ent.children.find_index(task_node) == 0 en task {} ent.parent, parent] en something { task } ent, task_node]
def task_with_desc?(node)
def task_with_desc?(node) , task = parent_and_task(node) false unless parent true unless can_insert_desc_to?(parent) parent.children.find_index(task) - 1 andidate = parent.children[idx] false unless desc_candidate andidate.send_type? && desc_candidate.method?(:desc)