Sha256: b312a64f46c443cc13b6007ef679e9295bf94bfb00d187f75b88516a3c8b4541

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require "rubocop"
require "rubocop-committee"
require "rubocop/cops_documentation_generator"
require "yard"

YARD::Rake::YardocTask.new(:yard_for_generate_documentation) do |task|
  task.files = ["lib/rubocop/cop/**/*.rb"]
  task.options = ["--no-output"]
end

desc "Generate docs of all cops departments"
task generate_cops_documentation: :yard_for_generate_documentation do
  generator = CopsDocumentationGenerator.new(
    departments: %w[Committee]
  )
  generator.call
end

desc "Syntax check for the documentation comments"
task documentation_syntax_check: :yard_for_generate_documentation do
  require "parser/ruby25"

  ok = true
  YARD::Registry.load!
  cops = RuboCop::Cop::Registry.global
  cops.each do |cop|
    examples = YARD::Registry.all(:class).find do |code_object|
      next unless RuboCop::Cop::Badge.for(code_object.to_s) == cop.badge

      break code_object.tags("example")
    end

    examples.to_a.each do |example|
      buffer = Parser::Source::Buffer.new("<code>", 1)
      buffer.source = example.text
      parser = Parser::Ruby25.new(RuboCop::AST::Builder.new)
      parser.diagnostics.all_errors_are_fatal = true
      parser.parse(buffer)
    rescue Parser::SyntaxError => e
      path = example.object.file
      puts "#{path}: Syntax Error in an example. #{e}"
      ok = false
    end
  end
  abort unless ok
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rubocop-committee-0.1.1 tasks/cops_documentation.rake
rubocop-committee-0.1.0 tasks/cops_documentation.rake