-
Notifications
You must be signed in to change notification settings - Fork 409
/
stats.rb
89 lines (70 loc) · 2.03 KB
/
stats.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# frozen_string_literal: true
module Jazzy
# Collect + report metadata about a processed module
class Stats
include Config::Mixin
attr_reader :documented, :acl_skipped, :spi_skipped, :undocumented_decls
def add_documented
@documented += 1
end
def add_acl_skipped
@acl_skipped += 1
end
def add_spi_skipped
@spi_skipped += 1
end
def add_undocumented(decl)
@undocumented_decls << decl
end
def remove_undocumented(decl)
@undocumented_decls.delete(decl)
end
def acl_included
documented + undocumented
end
def undocumented
undocumented_decls.count
end
def initialize
@documented = @acl_skipped = @spi_skipped = 0
@undocumented_decls = []
end
def report
puts "#{doc_coverage}\% documentation coverage " \
"with #{undocumented} undocumented " \
"#{symbol_or_symbols(undocumented)}"
if acl_included > 0
swift_acls = comma_list(config.min_acl.included_levels)
puts "included #{acl_included} " +
(config.objc_mode ? '' : "#{swift_acls} ") +
symbol_or_symbols(acl_included)
end
if !config.objc_mode && acl_skipped > 0
puts "skipped #{acl_skipped} " \
"#{comma_list(config.min_acl.excluded_levels)} " \
"#{symbol_or_symbols(acl_skipped)} " \
'(use `--min-acl` to specify a different minimum ACL)'
end
if spi_skipped > 0
puts "skipped #{spi_skipped} SPI #{symbol_or_symbols(spi_skipped)} " \
'(use `--include-spi-declarations` to include these)'
end
end
def doc_coverage
return 0 if acl_included == 0
(100 * documented) / acl_included
end
private
def comma_list(items)
case items.count
when 0 then ''
when 1 then items[0]
when 2 then "#{items[0]} or #{items[1]}"
else "#{items[0..-2].join(', ')}, or #{items[-1]}"
end
end
def symbol_or_symbols(count)
count == 1 ? 'symbol' : 'symbols'
end
end
end