Class: YARD::CLI::Stats
- Inherits:
-
Yardoc
- Object
- Command
- YardoptsCommand
- Yardoc
- YARD::CLI::Stats
- Includes:
- Templates::Helpers::BaseHelper
- Defined in:
- lib/yard/cli/stats.rb
Overview
Constant Summary
- STATS_ORDER =
Maintains the order in which
stats_for_
statistics methods should be printed. [:files, :modules, :classes, :constants, :methods]
Instance Attribute Summary collapse
-
#apis ⇒ Array<String>
inherited
from Yardoc
Keep track of which APIs are to be shown.
-
#assets ⇒ Array<String>
inherited
from Yardoc
A list of assets to copy after generation.
-
#excluded ⇒ Array<String>
inherited
from Yardoc
List of excluded paths (regexp matches).
-
#files ⇒ Array<String>
inherited
from Yardoc
List of Ruby source files to process.
-
#generate ⇒ Boolean
inherited
from Yardoc
Whether to generate output.
-
#has_markup ⇒ Boolean
inherited
from Yardoc
Whether markup option was specified.
-
#hidden_apis ⇒ Array<String>
inherited
from Yardoc
Keep track of which APIs are to be hidden.
-
#hidden_tags ⇒ Array<Symbol>
inherited
from Yardoc
A list of tags to hide from templates.
-
#list ⇒ Boolean
inherited
from Yardoc
Whether to print a list of objects.
-
#options ⇒ Hash
inherited
from Yardoc
readonly
The hash of options passed to the template.
-
#options_file ⇒ String
inherited
from YardoptsCommand
The options file name (defaults to YardoptsCommand::DEFAULT_YARDOPTS_FILE).
-
#parse ⇒ Boolean
Whether to parse and load registry.
-
#save_yardoc ⇒ Boolean
inherited
from Yardoc
Whether objects should be serialized to .yardoc db.
-
#statistics ⇒ Boolean
inherited
from Yardoc
Whether to print statistics after parsing.
-
#use_cache ⇒ Boolean
inherited
from Yardoc
Whether to use the existing yardoc db if the .yardoc already exists.
-
#use_document_file ⇒ Boolean
inherited
from YardoptsCommand
Whether to parse options from .document.
-
#use_yardopts_file ⇒ Boolean
inherited
from YardoptsCommand
Whether to parse options from .yardopts.
-
#visibilities ⇒ Array<Symbol>
inherited
from Yardoc
Keep track of which visibilities are to be shown.
Attributes included from Templates::Helpers::BaseHelper
Instance Method Summary collapse
-
#all_objects ⇒ Array<CodeObjects::Base>
All the parsed objects in the registry, removing any objects that are not visible (private, protected) depending on the arguments passed to the command.
- #description ⇒ Object
-
#initialize(parse = true) ⇒ Stats
constructor
A new instance of Stats.
-
#output(name, data, undoc = nil) ⇒ void
Prints a statistic to standard out.
-
#print_statistics ⇒ Object
Prints statistics for different object types.
-
#print_undocumented_objects ⇒ Object
Prints list of undocumented objects.
-
#run(*args) ⇒ void
Runs the commandline utility, parsing arguments and generating output if set.
-
#stats_for_classes ⇒ Object
Statistics for classes.
-
#stats_for_constants ⇒ Object
Statistics for constants.
-
#stats_for_files ⇒ Object
Statistics for files.
-
#stats_for_methods ⇒ Object
Statistics for methods.
-
#stats_for_modules ⇒ Object
Statistics for modules.
Methods included from Templates::Helpers::BaseHelper
#format_object_title, #format_object_type, #format_source, #format_types, #globals, #h, #link_file, #link_include_file, #link_include_object, #link_object, #link_url, #linkify, #run_verifier
Constructor Details
#initialize(parse = true) ⇒ Stats
Returns a new instance of Stats
17 18 19 20 21 22 |
# File 'lib/yard/cli/stats.rb', line 17 def initialize(parse = true) super() @parse = parse @undoc_list = nil @compact = false end |
Instance Attribute Details
#assets ⇒ Array<String> Originally defined in class Yardoc
Returns a list of assets to copy after generation
#excluded ⇒ Array<String> Originally defined in class Yardoc
Returns list of excluded paths (regexp matches)
#files ⇒ Array<String> Originally defined in class Yardoc
Returns list of Ruby source files to process
#generate ⇒ Boolean Originally defined in class Yardoc
Returns whether to generate output
#has_markup ⇒ Boolean Originally defined in class Yardoc
Returns whether markup option was specified
#hidden_apis ⇒ Array<String> Originally defined in class Yardoc
Keep track of which APIs are to be hidden
#hidden_tags ⇒ Array<Symbol> Originally defined in class Yardoc
Returns a list of tags to hide from templates
#list ⇒ Boolean Originally defined in class Yardoc
Returns whether to print a list of objects
#options ⇒ Hash (readonly) Originally defined in class Yardoc
Returns the hash of options passed to the template.
#options_file ⇒ String Originally defined in class YardoptsCommand
The options file name (defaults to DEFAULT_YARDOPTS_FILE)
#parse ⇒ Boolean
Returns whether to parse and load registry
14 15 16 |
# File 'lib/yard/cli/stats.rb', line 14 def parse @parse end |
#save_yardoc ⇒ Boolean Originally defined in class Yardoc
Returns whether objects should be serialized to .yardoc db
#statistics ⇒ Boolean Originally defined in class Yardoc
Returns whether to print statistics after parsing
#use_cache ⇒ Boolean Originally defined in class Yardoc
Returns whether to use the existing yardoc db if the .yardoc already exists. Also makes use of file checksums to parse only changed files.
#use_document_file ⇒ Boolean Originally defined in class YardoptsCommand
Returns whether to parse options from .document
#use_yardopts_file ⇒ Boolean Originally defined in class YardoptsCommand
Returns whether to parse options from .yardopts
Instance Method Details
#all_objects ⇒ Array<CodeObjects::Base>
Returns all the parsed objects in the registry, removing any objects that are not visible (private, protected) depending on the arguments passed to the command.
102 103 104 |
# File 'lib/yard/cli/stats.rb', line 102 def all_objects @all_objects ||= run_verifier Registry.all end |
#description ⇒ Object
24 25 26 |
# File 'lib/yard/cli/stats.rb', line 24 def description "Prints documentation statistics on a set of files" end |
#output(name, data, undoc = nil) ⇒ void
This method returns an undefined value.
Prints a statistic to standard out. This method is optimized for getting Integer values, though it allows any data to be printed.
146 147 148 149 150 151 152 153 154 155 |
# File 'lib/yard/cli/stats.rb', line 146 def output(name, data, undoc = nil) @total += data if data.is_a?(Integer) && undoc @undocumented += undoc if undoc.is_a?(Integer) if undoc data = ("%5s (% 5d undocumented)" % [data, undoc]) else data = "%5s" % data end log.puts("%-12s %s" % [name + ":", data]) end |
#print_statistics ⇒ Object
Prints statistics for different object types
To add statistics for a specific type, add a method
#stats_for_TYPE
to this class that calls #output.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/yard/cli/stats.rb', line 51 def print_statistics @total, @undocumented = 0, 0 meths = methods.map {|m| m.to_s }.grep(/^stats_for_/) STATS_ORDER.each do |meth| mname = "stats_for_#{meth}" if meths.include?(mname) send(mname) meths.delete(mname) end end meths.each {|m| send(m) } if @undocumented == 0 total = 100 elsif @total == 0 total = 0 else total = (@total - @undocumented).to_f / @total.to_f * 100 end log.puts("% 3.2f%% documented" % total) end |
#print_undocumented_objects ⇒ Object
Prints list of undocumented objects
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/yard/cli/stats.rb', line 74 def print_undocumented_objects return if !@undoc_list || @undoc_list.empty? log.puts log.puts "Undocumented Objects:" objects = @undoc_list.sort_by {|o| o.file.to_s } max = objects.sort_by {|o| o.path.length }.last.path.length if @compact objects.each do |object| log.puts("%-#{max}s (%s)" % [object.path, [object.file || "-unknown-", object.line].compact.join(":")]) end else last_file = nil objects.each do |object| if object.file != last_file log.puts log.puts "(in file: #{object.file || "-unknown-"})" end log.puts object.path last_file = object.file end end end |
#run(*args) ⇒ void
This method returns an undefined value.
Runs the commandline utility, parsing arguments and generating output if set.
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/yard/cli/stats.rb', line 33 def run(*args) parse_arguments(*args) if use_cache Registry.load! elsif parse YARD.parse(files, excluded) Registry.save(use_cache) if save_yardoc end print_statistics print_undocumented_objects end |
#stats_for_classes ⇒ Object
Statistics for classes
119 120 121 |
# File 'lib/yard/cli/stats.rb', line 119 def stats_for_classes output "Classes", *type_statistics(:class) end |
#stats_for_constants ⇒ Object
Statistics for constants
124 125 126 |
# File 'lib/yard/cli/stats.rb', line 124 def stats_for_constants output "Constants", *type_statistics(:constant) end |
#stats_for_files ⇒ Object
Statistics for files
107 108 109 110 111 |
# File 'lib/yard/cli/stats.rb', line 107 def stats_for_files files = [] all_objects.each {|o| files |= [o.file] } output "Files", files.size end |
#stats_for_methods ⇒ Object
Statistics for methods
129 130 131 132 133 134 135 |
# File 'lib/yard/cli/stats.rb', line 129 def stats_for_methods objs = all_objects.select {|m| m.type == :method } objs.reject! {|m| m.is_alias? } undoc = objs.select {|m| m.docstring.blank? } @undoc_list |= undoc if @undoc_list output "Methods", objs.size, undoc.size end |
#stats_for_modules ⇒ Object
Statistics for modules
114 115 116 |
# File 'lib/yard/cli/stats.rb', line 114 def stats_for_modules output "Modules", *type_statistics(:module) end |