Skip to content

Overhaul coverage report#1663

Draft
st0012 wants to merge 1 commit intomasterfrom
file-centric-coverage
Draft

Overhaul coverage report#1663
st0012 wants to merge 1 commit intomasterfrom
file-centric-coverage

Conversation

@st0012
Copy link
Copy Markdown
Member

@st0012 st0012 commented Mar 28, 2026

Summary

  • Make the coverage result more concise and useful
  • Make the output less confusing for C source files
  • Simplify implementation by decoupling it from RDoc's markup elements

Before (Ruby pseudo-code format)

class RDoc::Generator::Darkfish # is documented

    # in file lib/rdoc/generator/darkfish.rb:744
    def generate_ancestor_list(ancestors, klass); end

    # in file lib/rdoc/generator/darkfish.rb:762
    def generate_class_link(klass, rel_prefix); end

end


class RDoc::Markup::ToAnsi # is documented

    # in file lib/rdoc/markup/to_ansi.rb:29
    ANSI_STYLE_CODES_OFF = nil

    # in file lib/rdoc/markup/to_ansi.rb:59
    def add_text(text); end

    # in file lib/rdoc/markup/to_ansi.rb:131
    def calculate_text_width(text); end

end

After (file-centric format)

lib/rdoc/generator/darkfish.rb:
  Method:
    RDoc::Generator::Darkfish#generate_ancestor_list                 lib/rdoc/generator/darkfish.rb:744
    RDoc::Generator::Darkfish#generate_class_link                    lib/rdoc/generator/darkfish.rb:762

lib/rdoc/markup/to_ansi.rb:
  Constant:
    RDoc::Markup::ToAnsi::ANSI_STYLE_CODES_OFF lib/rdoc/markup/to_ansi.rb:29
  Method:
    RDoc::Markup::ToAnsi#add_text             lib/rdoc/markup/to_ansi.rb:59
    RDoc::Markup::ToAnsi#calculate_text_width lib/rdoc/markup/to_ansi.rb:131

C source file output (Ruby's object.c)

object.c:
  Class:
    Refinement

No more class Refinement ... end pseudo-code that makes it look like the C file is being treated as a Ruby script.

Accuracy verification

Coverage metrics are unchanged for projects other than RDoc itself:

Project Branch Master
IRB 117 items, 40 undoc (65.81%) 117 items, 40 undoc (65.81%)
Ruby 12110 items, 1472 undoc (87.84%) 12110 items, 1472 undoc (87.84%)

The `rdoc -C` coverage report previously displayed undocumented items
using Ruby syntax (`class ... end`, `def ...; end`). For C source files
like Ruby's object.c, this made the output appear as if the C file was
being treated as a Ruby script.

Replace with a file-centric listing that groups undocumented items by
source file and type:

    object.c:
      Class:
        Refinement
      Method:
        Module#name object.c:135
          Undocumented params: mod.name->stringornil

- Group items by source file, sorted alphabetically
- Within each file, group by type (Class, Module, Constant, Attribute, Method)
- Sort items by line number within each type group
- Use ClassName#method / ClassName.method notation
- Show clickable file:line references, column-aligned
- Return plain strings from report/summary instead of Markup objects
@matzbot
Copy link
Copy Markdown
Collaborator

matzbot commented Mar 28, 2026

🚀 Preview deployment available at: https://8ac7ce2e.rdoc-6cd.pages.dev (commit: 793635c)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants