Class: YARD::CLI::Stats
- Inherits:
- Yardoc show all
- 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]
Constants inherited from Yardoc
Instance Attribute Summary (collapse)
-
- (Boolean) parse
Whether to parse and load registry.
Attributes included from Templates::Helpers::BaseHelper
Attributes inherited from Yardoc
assets, excluded, files, generate, has_markup, hidden_tags, list, options, options_file, save_yardoc, statistics, use_cache, use_document_file, use_yardopts_file, visibilities
Instance Method Summary (collapse)
-
- (Array<CodeObjects::Base>) all_objects
All the parsed objects in the registry, removing any objects that are not visible (private, protected) depending on the arguments passed to the command.
- - (Object) description
-
- (Stats) initialize(parse = true)
constructor
A new instance of Stats.
-
- (void) output(name, data, undoc = nil)
Prints a statistic to standard out.
-
- (Object) print_statistics
Prints statistics for different object types.
-
- (Object) print_undocumented_objects
Prints list of undocumented objects.
-
- (void) run(*args)
Runs the commandline utility, parsing arguments and generating output if set.
-
- (Object) stats_for_classes
Statistics for classes.
-
- (Object) stats_for_constants
Statistics for constants.
-
- (Object) stats_for_files
Statistics for files.
-
- (Object) stats_for_methods
Statistics for methods.
-
- (Object) stats_for_modules
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
Methods inherited from Yardoc
Methods inherited from Command
#common_options, #load_script, #parse_options, run
Constructor Details
- (Stats) initialize(parse = true)
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
- (Boolean) parse
Whether to parse and load registry
14 15 16 |
# File 'lib/yard/cli/stats.rb', line 14 def parse @parse end |
Instance Method Details
- (Array<CodeObjects::Base>) all_objects
All the parsed objects in the registry, removing any objects that are not visible (private, protected) depending on the arguments passed to the command.
96 97 98 |
# File 'lib/yard/cli/stats.rb', line 96 def all_objects @all_objects ||= run_verifier Registry.all end |
- (Object) description
24 25 26 |
# File 'lib/yard/cli/stats.rb', line 24 def description "Prints documentation statistics on a set of files" end |
- (void) output(name, data, undoc = nil)
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.
140 141 142 143 144 145 146 147 148 149 |
# File 'lib/yard/cli/stats.rb', line 140 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 puts("%-12s %s" % [name + ":", data]) end |
- (Object) print_statistics
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.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/yard/cli/stats.rb', line 53 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) } total = (@total - @undocumented).to_f / @total.to_f * 100 puts("% 3.2f%% documented" % total) end |
- (Object) print_undocumented_objects
Prints list of undocumented objects
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/yard/cli/stats.rb', line 69 def print_undocumented_objects return if !@undoc_list || @undoc_list.empty? puts puts "Undocumented Objects:" objects = @undoc_list.sort_by {|o| o.file } max = objects.sort_by {|o| o.path.length }.last.path.length if @compact objects.each do |object| puts("%-#{max}s (%s)" % [object.path, object.file]) end else last_file = nil objects.each do |object| if object.file != last_file puts puts "(in file: #{object.file})" end puts object.path last_file = object.file end end end |
- (void) run(*args)
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 46 47 |
# File 'lib/yard/cli/stats.rb', line 33 def run(*args) parse_arguments(*args) if parse if use_cache Registry.load! checksums = Registry.checksums.dup end YARD.parse(files, excluded) Registry.save(use_cache) if save_yardoc end print_statistics print_undocumented_objects end |
- (Object) stats_for_classes
Statistics for classes
113 114 115 |
# File 'lib/yard/cli/stats.rb', line 113 def stats_for_classes output "Classes", *type_statistics(:class) end |
- (Object) stats_for_constants
Statistics for constants
118 119 120 |
# File 'lib/yard/cli/stats.rb', line 118 def stats_for_constants output "Constants", *type_statistics(:constant) end |
- (Object) stats_for_files
Statistics for files
101 102 103 104 105 |
# File 'lib/yard/cli/stats.rb', line 101 def stats_for_files files = [] all_objects.each {|o| files |= [o.file] } output "Files", files.size end |
- (Object) stats_for_methods
Statistics for methods
123 124 125 126 127 128 129 |
# File 'lib/yard/cli/stats.rb', line 123 def stats_for_methods objs = all_objects.select {|m| m.type == :method } objs.reject! {|m| m.is_alias? || !m.is_explicit? } undoc = objs.select {|m| m.docstring.blank? && !m.overridden_method } @undoc_list |= undoc if @undoc_list output "Methods", objs.size, undoc.size end |
- (Object) stats_for_modules
Statistics for modules
108 109 110 |
# File 'lib/yard/cli/stats.rb', line 108 def stats_for_modules output "Modules", *type_statistics(:module) end |