# \[Feature:trunk\] test-coverage measurement

**URL:** <https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774>\
**Category:** Development\
**Created:** [June 30, 2008, 3:08pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774 "2008-06-30T15:08:15Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [June 30, 2008, 3:08pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/1 "2008-06-30T15:08:15Z")

</div>

é è—¤ã§ã™ã€‚

Ruby æœ¬ä½“ã«ã‚«ãƒãƒ¬ãƒƒã‚¸æ¸¬å®šæ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ã®ã¯ã©ã†ã§ã—ã‚‡ã†ã‹ã€‚

å…·ä½“çš„ã«ã¯ã€ã‚½ãƒ¼ã‚¹ã”ã¨ã®å„è¡Œã®å®Ÿè¡Œå›žæ•°ã‚’è¡¨ã™å®šæ•° COVERAGE\_\_ ã‚’  
å°Žå…¥ã—ãŸã„ã§ã™ã€‚SCRIPT\_LINES\_\_ ã®ã‚«ãƒãƒ¬ãƒƒã‚¸ç‰ˆã®ã‚ˆã†ãªã‚¤ãƒ¡ãƒ¼ã‚¸ã§ã™ã€‚

1. ãƒ¦ãƒ¼ã‚¶ãŒ COVERAGE\_\_ ã« {} ã‚’è¨­å®šã™ã‚‹
2. ãƒ¦ãƒ¼ã‚¶ãŒã‚½ãƒ¼ã‚¹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ require ã‚„ load ã™ã‚‹
3. COVERAGE\_\_[ãƒ•ã‚¡ã‚¤ãƒ«å] ãŒå„è¡Œã®å®Ÿè¡Œå›žæ•°ã‚’è¡¨ã™é…åˆ—ã‚’è¿”ã™ã‚ˆã†ã«ãªã‚‹  
(ã“ã®é…åˆ—ã¯å®Ÿè¡Œã«å¾“ã£ã¦å‹æ‰‹ã«æ›´æ–°ã•ã‚Œã‚‹)

â€» COVERAGE\_\_ ãŒè¨­å®šã•ã‚Œãªã‘ã‚Œã°ä½•ã‚‚ã—ã¾ã›ã‚“ã€‚  
â€» ç©ºè¡Œãªã©å®Ÿè¡Œã•ã‚Œã‚‹å¯èƒ½æ€§ãŒãªã„è¡Œã¯ nil ã«ãªã‚Šã¾ã™ã€‚  
â€» eval ã¯æ¸¬å®šå¯¾è±¡ã«ã—ã¾ã›ã‚“ã€‚

å‹•ä½œã®å…·ä½“ä¾‹ã§ã™ã€‚

$ cat foo.rb  
s = 0  
10.times do |x|  
s += x  
end

if s == 45  
p :ok  
else  
p :ng  
end

$ ./ruby -e ‘COVERAGE\_\_ = {}; require “foo.rb”; p COVERAGE\_\_’  
:ok  
{"/home/mame/work/ruby19/ruby/foo.rb"=\>[1, 1, 10, nil, nil, 1, 1, nil,  
0, nil]}

ã“ã®é…åˆ—ã¯å„è¡Œã®å®Ÿè¡Œå›žæ•°ã‚’è¡¨ã—ã¦ã„ã¾ã™ã€‚

ä¸Šè¨˜ã®ä»•æ§˜ã‚’å®Ÿè£…ã—ãŸã‚‚ã®ã‚’æ·»ä»˜ã—ã¾ã™ã€‚

ã‚µãƒ³ãƒ—ãƒ«ã¨ã—ã¦ã€lib/coverage.rb ã‚’åŒæ¢±ã—ã¦ã„ã¾ã™ã€‚  
ä»¥ä¸‹ã®ã‚ˆã†ã«ä½¿ãˆã¾ã™ã€‚

$ ./ruby -rcoverage foo.rb

$ cat foo.rb.cov  
1: 0:s = 0  
1: 1:10.times do |x|  
10: 2: s += x  
-: 3:end  
-: 4:  
1: 5:if s == 45  
1: 6: p :ok  
-: 7:else  
#####: 8: p :ng  
-: 9:end

ã¾ãŸã€RUNRUBYOPT="-rcoverage" make test-all ã—ãŸçµæžœã‚’é›†è¨ˆã—ã¦  
ã¿ã¾ã—ãŸã€‚ãƒã‚°ã¨ã‹ã§ä¸æ­£ç¢ºãªçµæžœã«ãªã£ã¦ã‚‹å¯èƒ½æ€§ã¯ã‚ã‚Šã¾ã™ãŒã€  
ã“ã®ãã‚‰ã„ã¯å‹•ãã¨è¨€ã†ã“ã¨ã§ã€‚

$ ./ruby -e ’  
aan = acn = 0  
Dir["{lib,.ext}/\*\*/\*.cov"].each do |f|  
an, cn = File.readlines(f).inject([0, 0]) do |(an, cn), l|  
next [an, cn] if l.start\_with?(" -")  
an += 1  
cn += 1 if !l.start\_with?(" #####")  
[an, cn]  
end  
puts “%s %.2f%% (%d/%d)” % [f, cn.to\_f \* 100 / an, cn, an]  
aan += an  
acn += cn  
end  
puts “(total) %.2f%% (%d/%d)” % [acn.to\_f \* 100 / aan, acn, aan]  
’  
lib/drb/unix.rb.cov 86.11% (62/72)  
lib/drb/drb.rb.cov 81.70% (491/601)  
lib/drb/eq.rb.cov 100.00% (9/9)  
lib/drb/ssl.rb.cov 83.90% (99/118)  
lib/drb/acl.rb.cov 85.71% (66/77)  
lib/drb/extservm.rb.cov 96.23% (51/53)  
lib/drb/invokemethod.rb.cov 27.78% (5/18)  
lib/irb/notifier.rb.cov 75.00% (54/72)  
lib/irb/output-method.rb.cov 52.00% (13/25)  
lib/irb/slex.rb.cov 20.39% (31/152)  
lib/net/https.rb.cov 77.78% (14/18)  
lib/net/http.rb.cov 87.73% (772/880)  
lib/net/imap.rb.cov 35.81% (467/1304)  
lib/net/protocol.rb.cov 59.49% (116/195)  
lib/rss/content/1.0.rb.cov 100.00% (6/6)  
lib/rss/content/2.0.rb.cov 100.00% (7/7)  
lib/rss/1.0.rb.cov 98.08% (204/208)  
lib/rss/image.rb.cov 96.26% (103/107)  
lib/rss/syndication.rb.cov 96.55% (28/29)  
lib/rss/maker/1.0.rb.cov 99.55% (223/224)  
lib/rss/maker/image.rb.cov 100.00% (58/58)  
lib/rss/maker/syndication.rb.cov 100.00% (10/10)  
lib/rss/maker/taxonomy.rb.cov 97.67% (42/43)  
lib/rss/maker/0.9.rb.cov 98.79% (245/248)  
lib/rss/maker/2.0.rb.cov 98.45% (127/129)  
lib/rss/maker/base.rb.cov 98.22% (441/449)  
lib/rss/maker/dublincore.rb.cov 100.00% (42/42)  
lib/rss/maker/entry.rb.cov 97.89% (93/95)  
lib/rss/maker/feed.rb.cov 98.28% (228/232)  
lib/rss/maker/itunes.rb.cov 97.62% (123/126)  
lib/rss/maker/slash.rb.cov 100.00% (18/18)  
lib/rss/maker/atom.rb.cov 98.73% (78/79)  
lib/rss/maker/trackback.rb.cov 100.00% (31/31)  
lib/rss/maker/content.rb.cov 100.00% (12/12)  
lib/rss/taxonomy.rb.cov 98.75% (79/80)  
lib/rss/rexmlparser.rb.cov 82.14% (23/28)  
lib/rss/parser.rb.cov 93.00% (279/300)  
lib/rss/0.9.rb.cov 99.51% (205/206)  
lib/rss/xmlparser.rb.cov 6.67% (3/45)  
lib/rss/utils.rb.cov 98.31% (58/59)  
lib/rss/2.0.rb.cov 100.00% (49/49)  
lib/rss/dublincore.rb.cov 100.00% (39/39)  
lib/rss/xml.rb.cov 89.74% (35/39)  
lib/rss/xml-stylesheet.rb.cov 100.00% (63/63)  
lib/rss/itunes.rb.cov 91.83% (191/208)  
lib/rss/rss.rb.cov 93.23% (592/635)  
lib/rss/slash.rb.cov 100.00% (25/25)  
lib/rss/atom.rb.cov 99.50% (397/399)  
lib/rss/dublincore/1.0.rb.cov 100.00% (9/9)  
lib/rss/dublincore/2.0.rb.cov 100.00% (8/8)  
lib/rss/dublincore/atom.rb.cov 100.00% (10/10)  
lib/rss/maker.rb.cov 96.55% (28/29)  
lib/rss/trackback.rb.cov 100.00% (125/125)  
lib/rss/xmlscanner.rb.cov 1.64% (1/61)  
lib/rss/content.rb.cov 100.00% (19/19)  
lib/rss/converter.rb.cov 30.00% (21/70)  
lib/uri/ftp.rb.cov 82.46% (47/57)  
lib/uri/ldaps.rb.cov 100.00% (5/5)  
lib/uri/https.rb.cov 100.00% (5/5)  
lib/uri/common.rb.cov 95.07% (135/142)  
lib/uri/generic.rb.cov 90.04% (416/462)  
lib/uri/ldap.rb.cov 74.23% (72/97)  
lib/uri/http.rb.cov 93.33% (14/15)  
lib/uri/mailto.rb.cov 81.40% (70/86)  
lib/date/format.rb.cov 35.96% (233/648)  
lib/rdoc/ri/paths.rb.cov 57.50% (23/40)  
lib/rdoc/ri/display.rb.cov 81.89% (104/127)  
lib/rdoc/ri/formatter.rb.cov 69.23% (216/312)  
lib/rdoc/ri/driver.rb.cov 13.45% (30/223)  
lib/rdoc/options.rb.cov 31.82% (70/220)  
lib/rdoc/ri.rb.cov 100.00% (2/2)  
lib/rdoc/rdoc.rb.cov 32.74% (37/113)  
lib/rdoc/dot.rb.cov 47.06% (40/85)  
lib/rdoc/markup.rb.cov 92.86% (117/126)  
lib/rdoc/tokenstream.rb.cov 58.33% (7/12)  
lib/rdoc/markup/lines.rb.cov 95.00% (57/60)  
lib/rdoc/markup/to\_flow.rb.cov 49.44% (44/89)  
lib/rdoc/markup/to\_test.rb.cov 100.00% (23/23)  
lib/rdoc/markup/fragments.rb.cov 95.89% (140/146)  
lib/rdoc/markup/inline.rb.cov 76.60% (36/47)  
lib/rdoc/markup/attribute\_manager.rb.cov 90.08% (118/131)  
lib/rdoc/markup/preprocess.rb.cov 24.14% (7/29)  
lib/rdoc/markup/formatter.rb.cov 83.33% (5/6)  
lib/rdoc/stats.rb.cov 58.33% (7/12)  
lib/rdoc/parsers/parse\_c.rb.cov 49.80% (125/251)  
lib/rdoc/parsers/parse\_rb.rb.cov 13.46% (178/1322)  
lib/rdoc/parsers/parse\_simple.rb.cov 43.75% (7/16)  
lib/rdoc/parsers/parse\_f95.rb.cov 6.02% (53/881)  
lib/rdoc/parsers/parserfactory.rb.cov 41.67% (10/24)  
lib/rdoc/code\_objects.rb.cov 57.22% (218/381)  
lib/rdoc/diagram.rb.cov 10.00% (14/140)  
lib/test/unit/ui/console/testrunner.rb.cov 92.96% (66/71)  
lib/test/unit/ui/testrunnermediator.rb.cov 100.00% (32/32)  
lib/test/unit/ui/testrunnerutilities.rb.cov 66.67% (10/15)  
lib/test/unit/collector/objectspace.rb.cov 100.00% (18/18)  
lib/test/unit/collector/dir.rb.cov 95.89% (70/73)  
lib/test/unit/util/backtracefilter.rb.cov 100.00% (28/28)  
lib/test/unit/util/observable.rb.cov 100.00% (31/31)  
lib/test/unit/util/procwrapper.rb.cov 100.00% (12/12)  
lib/test/unit/failure.rb.cov 95.00% (19/20)  
lib/test/unit/testcase.rb.cov 91.78% (67/73)  
lib/test/unit/testsuite.rb.cov 100.00% (31/31)  
lib/test/unit/collector.rb.cov 100.00% (25/25)  
lib/test/unit/autorunner.rb.cov 66.94% (81/121)  
lib/test/unit/testresult.rb.cov 100.00% (30/30)  
lib/test/unit/error.rb.cov 95.24% (20/21)  
lib/test/unit/assertions.rb.cov 97.01% (227/234)  
lib/test/unit/assertionfailederror.rb.cov 100.00% (3/3)  
lib/test/unit.rb.cov 90.91% (10/11)  
lib/yaml/rubytypes.rb.cov 74.58% (176/236)  
lib/yaml/syck.rb.cov 100.00% (6/6)  
lib/yaml/store.rb.cov 95.83% (23/24)  
lib/yaml/tag.rb.cov 88.89% (16/18)  
lib/yaml/stream.rb.cov 61.11% (11/18)  
lib/yaml/constants.rb.cov 100.00% (15/15)  
lib/yaml/types.rb.cov 49.02% (50/102)  
lib/yaml/ypath.rb.cov 92.59% (25/27)  
lib/yaml/error.rb.cov 100.00% (18/18)  
lib/yaml/basenode.rb.cov 15.38% (16/104)  
lib/tempfile.rb.cov 79.59% (78/98)  
lib/rdoc.rb.cov 100.00% (11/11)  
lib/fileutils.rb.cov 81.93% (544/664)  
lib/rexml/node.rb.cov 44.44% (16/36)  
lib/rexml/rexml.rb.cov 100.00% (7/7)  
lib/rexml/attribute.rb.cov 72.22% (52/72)  
lib/rexml/streamlistener.rb.cov 100.00% (16/16)  
lib/rexml/parseexception.rb.cov 28.57% (8/28)  
lib/rexml/syncenumerator.rb.cov 50.00% (7/14)  
lib/rexml/undefinednamespaceexception.rb.cov 80.00% (4/5)  
lib/rexml/encodings/UTF-8.rb.cov 100.00% (10/10)  
lib/rexml/encodings/ICONV.rb.cov 100.00% (13/13)  
lib/rexml/text.rb.cov 47.13% (74/157)  
lib/rexml/xpath\_parser.rb.cov 33.78% (125/370)  
lib/rexml/functions.rb.cov 27.39% (43/157)  
lib/rexml/encoding.rb.cov 73.33% (33/45)  
lib/rexml/validation/validationexception.rb.cov 80.00% (4/5)  
lib/rexml/source.rb.cov 54.92% (67/122)  
lib/rexml/document.rb.cov 68.75% (55/80)  
lib/rexml/xpath.rb.cov 80.65% (25/31)  
lib/rexml/formatters/pretty.rb.cov 22.22% (16/72)  
lib/rexml/formatters/default.rb.cov 78.43% (40/51)  
lib/rexml/element.rb.cov 45.36% (181/399)  
lib/rexml/doctype.rb.cov 37.60% (47/125)  
lib/rexml/instruction.rb.cov 56.25% (18/32)  
lib/rexml/attlistdecl.rb.cov 60.00% (12/20)  
lib/rexml/entity.rb.cov 52.94% (45/85)  
lib/rexml/parsers/baseparser.rb.cov 61.00% (183/300)  
lib/rexml/parsers/xpathparser.rb.cov 45.59% (181/397)  
lib/rexml/parsers/streamparser.rb.cov 83.33% (20/24)  
lib/rexml/parsers/treeparser.rb.cov 51.72% (30/58)  
lib/rexml/xmldecl.rb.cov 80.88% (55/68)  
lib/rexml/comment.rb.cov 51.85% (14/27)  
lib/rexml/output.rb.cov 61.54% (8/13)  
lib/rexml/cdata.rb.cov 55.00% (11/20)  
lib/rexml/xmltokens.rb.cov 100.00% (9/9)  
lib/rexml/parent.rb.cov 58.67% (44/75)  
lib/rexml/namespace.rb.cov 81.82% (18/22)  
lib/rexml/child.rb.cov 70.00% (21/30)  
lib/rinda/tuplespace.rb.cov 66.67% (152/228)  
lib/rinda/rinda.rb.cov 67.47% (56/83)  
lib/delegate.rb.cov 54.44% (49/90)  
lib/ostruct.rb.cov 58.93% (33/56)  
lib/pathname.rb.cov 83.97% (309/368)  
lib/pp.rb.cov 41.95% (146/348)  
lib/open-uri.rb.cov 18.48% (61/330)  
lib/e2mmap.rb.cov 68.29% (28/41)  
lib/rubygems/source\_index.rb.cov 94.12% (208/221)  
lib/rubygems/ext/rake\_builder.rb.cov 90.91% (10/11)  
lib/rubygems/ext/ext\_conf\_builder.rb.cov 100.00% (8/8)  
lib/rubygems/ext/builder.rb.cov 100.00% (27/27)  
lib/rubygems/ext/configure\_builder.rb.cov 100.00% (8/8)  
lib/rubygems/spec\_fetcher.rb.cov 96.23% (102/106)  
lib/rubygems/dependency\_list.rb.cov 86.76% (59/68)  
lib/rubygems/command\_manager.rb.cov 85.39% (76/89)  
lib/rubygems/package.rb.cov 64.81% (35/54)  
lib/rubygems/server.rb.cov 78.66% (129/164)  
lib/rubygems/exceptions.rb.cov 100.00% (28/28)  
lib/rubygems/command.rb.cov 90.18% (147/163)  
lib/rubygems/source\_info\_cache.rb.cov 93.20% (137/147)  
lib/rubygems/rubygems\_version.rb.cov 100.00% (2/2)  
lib/rubygems/install\_update\_options.rb.cov 94.74% (36/38)  
lib/rubygems/source\_info\_cache\_entry.rb.cov 91.30% (21/23)  
lib/rubygems/security.rb.cov 72.99% (100/137)  
lib/rubygems/version.rb.cov 98.25% (56/57)  
lib/rubygems/remote\_fetcher.rb.cov 90.28% (130/144)  
lib/rubygems/config\_file.rb.cov 94.12% (112/119)  
lib/rubygems/dependency.rb.cov 95.12% (39/41)  
lib/rubygems/local\_remote\_options.rb.cov 97.73% (43/44)  
lib/rubygems/digest/md5.rb.cov 50.00% (4/8)  
lib/rubygems/digest/sha2.rb.cov 66.67% (4/6)  
lib/rubygems/digest/sha1.rb.cov 66.67% (4/6)  
lib/rubygems/commands/mirror\_command.rb.cov 14.55% (8/55)  
lib/rubygems/commands/fetch\_command.rb.cov 85.71% (30/35)  
lib/rubygems/commands/outdated\_command.rb.cov 100.00% (19/19)  
lib/rubygems/commands/pristine\_command.rb.cov 95.00% (38/40)  
lib/rubygems/commands/unpack\_command.rb.cov 89.74% (35/39)  
lib/rubygems/commands/dependency\_command.rb.cov 89.58% (86/96)  
lib/rubygems/commands/server\_command.rb.cov 94.12% (16/17)  
lib/rubygems/commands/cert\_command.rb.cov 100.00% (45/45)  
lib/rubygems/commands/update\_command.rb.cov 64.84% (59/91)  
lib/rubygems/commands/specification\_command.rb.cov 88.10% (37/42)  
lib/rubygems/commands/generate\_index\_command.rb.cov 41.18% (7/17)  
lib/rubygems/commands/stale\_command.rb.cov 93.75% (15/16)  
lib/rubygems/commands/contents\_command.rb.cov 91.89% (34/37)  
lib/rubygems/commands/build\_command.rb.cov 96.55% (28/29)  
lib/rubygems/commands/sources\_command.rb.cov 92.41% (73/79)  
lib/rubygems/commands/query\_command.rb.cov 98.33% (118/120)  
lib/rubygems/commands/install\_command.rb.cov 81.67% (49/60)  
lib/rubygems/commands/check\_command.rb.cov 33.33% (14/42)  
lib/rubygems/commands/uninstall\_command.rb.cov 66.67% (22/33)  
lib/rubygems/commands/environment\_command.rb.cov 95.45% (42/44)  
lib/rubygems/uninstaller.rb.cov 15.46% (15/97)  
lib/rubygems/installer.rb.cov 97.99% (195/199)  
lib/rubygems/indexer.rb.cov 14.88% (25/168)  
lib/rubygems/defaults.rb.cov 80.95% (17/21)  
lib/rubygems/builder.rb.cov 91.67% (33/36)  
lib/rubygems/format.rb.cov 92.59% (25/27)  
lib/rubygems/gem\_runner.rb.cov 51.61% (16/31)  
lib/rubygems/package/tar\_writer.rb.cov 98.89% (89/90)  
lib/rubygems/package/tar\_input.rb.cov 79.81% (83/104)  
lib/rubygems/package/tar\_reader/entry.rb.cov 100.00% (50/50)  
lib/rubygems/package/tar\_header.rb.cov 100.00% (63/63)  
lib/rubygems/package/f\_sync\_dir.rb.cov 85.71% (6/7)  
lib/rubygems/package/tar\_output.rb.cov 86.27% (44/51)  
lib/rubygems/package/tar\_reader.rb.cov 84.62% (33/39)  
lib/rubygems/gem\_openssl.rb.cov 67.86% (19/28)  
lib/rubygems/ext.rb.cov 100.00% (6/6)  
lib/rubygems/user\_interaction.rb.cov 83.19% (99/119)  
lib/rubygems/dependency\_installer.rb.cov 93.75% (105/112)  
lib/rubygems/require\_paths\_builder.rb.cov 40.00% (4/10)  
lib/rubygems/version\_option.rb.cov 100.00% (17/17)  
lib/rubygems/platform.rb.cov 94.57% (87/92)  
lib/rubygems/requirement.rb.cov 100.00% (61/61)  
lib/rubygems/gem\_path\_searcher.rb.cov 100.00% (19/19)  
lib/rubygems/test\_utilities.rb.cov 100.00% (54/54)  
lib/rubygems/doc\_manager.rb.cov 63.16% (48/76)  
lib/rubygems/specification.rb.cov 90.23% (397/440)  
lib/rubygems/validator.rb.cov 35.96% (32/89)  
lib/date.rb.cov 48.27% (307/636)  
lib/singleton.rb.cov 24.44% (33/135)  
lib/prettyprint.rb.cov 39.55% (157/397)  
lib/timeout.rb.cov 70.73% (29/41)  
lib/set.rb.cov 91.18% (186/204)  
lib/rubygems.rb.cov 91.90% (261/284)  
lib/erb.rb.cov 95.47% (274/287)  
lib/webrick.rb.cov 100.00% (17/17)  
lib/tmpdir.rb.cov 60.38% (32/53)  
lib/shellwords.rb.cov 77.78% (28/36)  
lib/monitor.rb.cov 87.65% (71/81)  
lib/rss.rb.cov 100.00% (12/12)  
lib/thread.rb.cov 76.86% (93/121)  
lib/open3.rb.cov 59.26% (16/27)  
lib/pstore.rb.cov 72.47% (129/178)  
lib/find.rb.cov 82.61% (19/23)  
lib/xmlrpc/config.rb.cov 100.00% (10/10)  
lib/xmlrpc/server.rb.cov 48.29% (113/234)  
lib/xmlrpc/create.rb.cov 78.18% (86/110)  
lib/xmlrpc/parser.rb.cov 51.20% (213/416)  
lib/xmlrpc/utils.rb.cov 57.58% (38/66)  
lib/xmlrpc/datetime.rb.cov 100.00% (36/36)  
lib/xmlrpc/marshal.rb.cov 100.00% (29/29)  
lib/xmlrpc/client.rb.cov 57.14% (100/175)  
lib/xmlrpc/base64.rb.cov 80.00% (12/15)  
lib/uri.rb.cov 100.00% (11/11)  
lib/forwardable.rb.cov 75.00% (15/20)  
lib/optparse.rb.cov 77.87% (482/619)  
lib/yaml.rb.cov 72.53% (66/91)  
lib/webrick/config.rb.cov 100.00% (13/13)  
lib/webrick/server.rb.cov 77.31% (92/119)  
lib/webrick/httprequest.rb.cov 90.53% (220/243)  
lib/webrick/utils.rb.cov 90.72% (88/97)  
lib/webrick/compat.rb.cov 100.00% (4/4)  
lib/webrick/httpauth/digestauth.rb.cov 14.78% (30/203)  
lib/webrick/httpauth/basicauth.rb.cov 86.11% (31/36)  
lib/webrick/httpauth/htpasswd.rb.cov 93.33% (42/45)  
lib/webrick/httpauth/htdigest.rb.cov 26.92% (14/52)  
lib/webrick/httpauth/htgroup.rb.cov 27.27% (9/33)  
lib/webrick/httpauth/authenticator.rb.cov 86.96% (40/46)  
lib/webrick/httpauth/userdb.rb.cov 80.00% (8/10)  
lib/webrick/version.rb.cov 100.00% (2/2)  
lib/webrick/log.rb.cov 84.78% (39/46)  
lib/webrick/httpservlet.rb.cov 100.00% (9/9)  
lib/webrick/https.rb.cov 69.70% (23/33)  
lib/webrick/httpproxy.rb.cov 83.77% (129/154)  
lib/webrick/httputils.rb.cov 78.50% (168/214)  
lib/webrick/ssl.rb.cov 60.29% (41/68)  
lib/webrick/htmlutils.rb.cov 100.00% (10/10)  
lib/webrick/httpservlet/filehandler.rb.cov 80.59% (191/237)  
lib/webrick/httpservlet/prochandler.rb.cov 100.00% (11/11)  
lib/webrick/httpservlet/abstract.rb.cov 71.43% (25/35)  
lib/webrick/httpservlet/cgihandler.rb.cov 80.88% (55/68)  
lib/webrick/httpservlet/erbhandler.rb.cov 38.46% (10/26)  
lib/webrick/httpserver.rb.cov 87.68% (121/138)  
lib/webrick/httpversion.rb.cov 90.00% (18/20)  
lib/webrick/httpstatus.rb.cov 88.10% (37/42)  
lib/webrick/httpauth.rb.cov 95.45% (21/22)  
lib/webrick/httpresponse.rb.cov 67.93% (125/184)  
lib/webrick/cookie.rb.cov 92.54% (62/67)  
lib/webrick/accesslog.rb.cov 82.93% (34/41)  
lib/logger.rb.cov 79.69% (153/192)  
lib/cgi.rb.cov 17.86% (115/644)  
lib/scanf.rb.cov 98.43% (188/191)  
lib/ipaddr.rb.cov 78.35% (181/231)  
lib/time.rb.cov 38.83% (160/412)  
lib/English.rb.cov 100.00% (25/25)  
lib/tsort.rb.cov 57.75% (41/71)  
lib/rational.rb.cov 100.00% (10/10)  
.ext/common/io/nonblock.rb.cov 64.29% (9/14)  
.ext/common/json/add/core.rb.cov 97.83% (45/46)  
.ext/common/json/add/rails.rb.cov 42.86% (9/21)  
.ext/common/json/version.rb.cov 100.00% (7/7)  
.ext/common/json/common.rb.cov 64.71% (77/119)  
.ext/common/json/ext.rb.cov 100.00% (8/8)  
.ext/common/openssl.rb.cov 100.00% (6/6)  
.ext/common/ripper.rb.cov 100.00% (4/4)  
.ext/common/digest/hmac.rb.cov 90.24% (37/41)  
.ext/common/digest/sha2.rb.cov 46.43% (13/28)  
.ext/common/ripper/lexer.rb.cov 60.56% (43/71)  
.ext/common/ripper/sexp.rb.cov 90.48% (19/21)  
.ext/common/ripper/filter.rb.cov 41.67% (10/24)  
.ext/common/ripper/core.rb.cov 93.75% (15/16)  
.ext/common/kconv.rb.cov 94.29% (66/70)  
.ext/common/json.rb.cov 77.78% (7/9)  
.ext/common/openssl/x509.rb.cov 83.33% (70/84)  
.ext/common/openssl/ssl.rb.cov 95.65% (88/92)  
.ext/common/openssl/cipher.rb.cov 81.82% (18/22)  
.ext/common/openssl/buffering.rb.cov 83.09% (113/136)  
.ext/common/openssl/bn.rb.cov 83.33% (5/6)  
.ext/common/openssl/digest.rb.cov 95.24% (20/21)  
.ext/common/digest.rb.cov 58.33% (14/24)  
(total) 66.40% (23543/35456)

ã”æ¤œè¨ŽãŠé¡˜ã„ã—ã¾ã™ã€‚

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [June 30, 2008, 4:33pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/2 "2008-06-30T16:33:55Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:35274] [Feature:trunk] test-coverage  
measurement”  
on Mon, 30 Jun 2008 22:02:15 +0900, “Yusuke ENDOH” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|Ruby e$BK\BN$K%+%P%l%C%8B,Dj5!G=$rDs6!$9$k$N$O$I$&$G$7$g$&$+!#e(B

e$B86B’;?@.$G$9!#e(B

|e$B6qBNE\*$K$O!"%=!\<%9$4$H$N3F9T$N\<B9T2s?t$rI=$9Dj?te(B COVERAGE\_\_ e$B$re(B  
|e$BF3F~$7$?$$$G$9!#e(BSCRIPT\_LINES\_\_ e$B$N%+%P%l%C%8HG$N$h$&$J%$%a!\<%8$G$9!#e(B

e$B$G$b!"e(BCOVERAGE\_\_e$B$C$FL\>A0$O$I$&$J$s$G$7$g$&$M$(!#e(B

e$B$“$s$^$j5$$KF~$C$F$J$$e(BSCRIPT\_LINES\_\_e$B$C$F$$$&e(BAPIe$B$NF’=1$J$N$b5$e(B  
e$B$K$J$kE@$G$9!#$,!”%+%P%l%C%8$O$[$7$$$N$G!V$3$l$i$O8x3+e(BAPIe$B$G$Oe(B  
e$B$J$$!W$H8@$$D%$C$F\<h$j9~$s$G$7$^$&$N$G$$$$$+$J$"!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [July 1, 2008, 5:38am UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/3 "2008-07-01T05:38:33Z")

</div>

e$B1sF#$G$9!#e(B

2008/06/30 23:30 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> In message “Re: [ruby-dev:35274] [Feature:trunk] test-coverage measurement”  
> on Mon, 30 Jun 2008 22:02:15 +0900, “Yusuke ENDOH” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:
> 
> |Ruby e$BK\BN$K%+%P%l%C%8B,Dj5!G=$rDs6!$9$k$N$O$I$&$G$7$g$&$+!#e(B
> 
> e$B86B’;?@.$G$9!#e(B

e$B$"$j$,$H$&$4$6$$$^$9!#e(B

> |e$B6qBNE\*$K$O!"%=!\<%9$4$H$N3F9T$N\<B9T2s?t$rI=$9Dj?te(B COVERAGE\_\_ e$B$re(B  
> |e$BF3F~$7$?$$$G$9!#e(BSCRIPT\_LINES\_\_ e$B$N%+%P%l%C%8HG$N$h$&$J%$%a!\<%8$G$9!#e(B
> 
> e$B$G$b!"e(BCOVERAGE\_\_e$B$C$FL\>A0$O$I$&$J$s$G$7$g$&$M$(!#e(B

e$B$I$s$JIw$K0z$C$+$+$k$N$+$h$/$o$+$j$^$;$s$,!“e(BSCRIPT\_COVERAGES\_\_  
e$B$H$+$NJ}$,$$$$$G$7$g$&$+!#e(B  
e$BIaDL$N?M$O;H$o$J$$$b$N$J$N$G!“B\>$H$+$V$i$J$$L\>A0$G$”$l$P!”;d$Ke(B  
e$B$3$@$o$j$O$"$j$^$;$s!#e(B

> e$B$“$s$^$j5$$KF~$C$F$J$$e(BSCRIPT\_LINES\_\_e$B$C$F$$$&e(BAPIe$B$NF’=1$J$N$b5$e(B  
> e$B$K$J$kE@$G$9!#$,!”%+%P%l%C%8$O$[$7$$$N$G!V$3$l$i$O8x3+e(BAPIe$B$G$Oe(B  
> e$B$J$$!W$H8@$$D%$C$F\<h$j9~$s$G$7$^$&$N$G$$$$$+$J$"!#e(B

e$BIaDL$N?M$O;H$o$J$$$b$N$J$N$G!"5$;}$A0-$$$/$i$$$G$A$g$&$I$$$$e(B  
e$B$H;W$$!"e(BSCRIPT\_LINES\_\_ e$B$r$^$M$7$^$7$?!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [July 1, 2008, 6:07am UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/4 "2008-07-01T06:07:46Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:35286] Re: [Feature:trunk] test-coverage  
measurement”  
on Tue, 1 Jul 2008 12:34:55 +0900, “Yusuke ENDOH” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
writes:

|\> |Ruby e$BK\BN$K%+%P%l%C%8B,Dj5!G=$rDs6!$9$k$N$O$I$&$G$7$g$&$+!#e(B  
|\>  
|\> e$B86B’;?@.$G$9!#e(B  
|  
|e$B$"$j$,$H$&$4$6$$$^$9!#e(B

|\> |e$B6qBNE\*$K$O!"%=!\<%9$4$H$N3F9T$N\<B9T2s?t$rI=$9Dj?te(B COVERAGE\_\_ e$B$re(B  
|\> |e$BF3F~$7$?$$$G$9!#e(BSCRIPT\_LINES\_\_ e$B$N%+%P%l%C%8HG$N$h$&$J%$%a!\<%8$G$9!#e(B  
|\>  
|\> e$B$G$b!“e(BCOVERAGE\_\_e$B$C$FL\>A0$O$I$&$J$s$G$7$g$&$M$(!#e(B  
|  
|e$B$I$s$JIw$K0z$C$+$+$k$N$+$h$/$o$+$j$^$;$s$,!“e(BSCRIPT\_COVERAGES\_\_  
|e$B$H$+$NJ}$,$$$$$G$7$g$&$+!#e(B  
|e$BIaDL$N?M$O;H$o$J$$$b$N$J$N$G!“B\>$H$+$V$i$J$$L\>A0$G$”$l$P!”;d$Ke(B  
|e$B$3$@$o$j$O$”$j$^$;$s!#e(B

e$B0lHU9M$($^$7$?$,!"FbIt\<BAu$O$I$&$G$b$h$$$h$&$K;W$($F$-$?$N$G!“e(B  
e$B$=$N$^$^%3%\_%C%H$7$F$/$@$5$$!#%I%-%e%a%s%H$K!VD\>@;H$&$Y$-$Ge(B  
e$B$J$$!W$H$+=q$$$F$”$k$H=u$+$j$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [July 2, 2008, 4:39pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/5 "2008-07-02T16:39:57Z")

</div>

e$B1sF#$G$9!#e(B

2008/07/01 13:04 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B0lHU9M$($^$7$?$,!"FbIt\<BAu$O$I$&$G$b$h$$$h$&$K;W$($F$-$?$N$G!“e(B  
> e$B$=$N$^$^%3%\_%C%H$7$F$/$@$5$$!#%I%-%e%a%s%H$K!VD\>@;H$&$Y$-$Ge(B  
> e$B$J$$!W$H$+=q$$$F$”$k$H=u$+$j$^$9!#e(B

e$B0lC6$=$N$^$^%3%\_%C%H$7$^$7$?!#e(B

e$B$5$5$@$5$s$+$i!Ve(Bcoverage.so e$B$re(B require  
e$B$7$?$iB,Dj3+;O$9$k$h$&$Ke(B  
e$B$7$F$[$7$$!W$H$N0U8+$rD:$-$^$7$?!#e(B  
COVERAGE\_\_ e$B$r$d$a$F!"0J2\<$N$h$&$J;EMM$K$7$h$&$+$H;W$C$F$$$^$9!#e(B

1. e$B%f!\<%6$,e(B coverage.so e$B$re(B require e$B$9$ke(B (Coverage  
e$B%b%8%e!\<%k$,e(B  
e$BDj5A$5$l$ke(B)
2. e$B%f!\<%6$,%=!\<%9%U%!%$%k$re(B require e$B$de(B load e$B$9$ke(B
3. Coverage.result e$B$,5le(B COVERAGE\_\_ e$B$HF1Ey$N%O%C%7%e$rJV$9e(B  
(Coverage.result[e$B%U%!%$%kL\>e(B] e$B$G%+%P%l%C%8$,F@$i$l$ke(B)

e$B$A$J$\_$K!":#$N$H$3$me(B coverage.so  
e$B$O7WB,3+;O$N%U%i%0$rN)$F$k$N$He(B  
e$B7WB,7k2L$rF@$ke(B API  
e$B$rDs6!$9$k$@$1$G!"7WB,\<+BN$O$[$H$s$IK\BN$Ge(B  
e$B9T$o$l$^$9!#e(B

e$B$^$?!“%+%P%l%C%8B,Dj$N30It;EMM$G$”$ke(B lib/coverage.rb  
e$B$O$b$C$He(B  
e$B8!F$$9$k;v9`$,$"$j$^$9!#$3$C$A$K$D$$$F$O$b$&$A$g$C$H9M$($?8e$Ge(B  
e$BJL%9%l%C%I$G0U8+$rJg$j$?$$$H;W$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [July 11, 2008, 4:46pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/6 "2008-07-11T16:46:09Z")

</div>

e$B%A%1%C%He(B #220 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B

## integrated in r17781

[http://redmine.ruby-lang.org/issues/show/220](http://redmine.ruby-lang.org/issues/show/220)

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [July 3, 2008, 2:57pm UTC](https://www.ruby-forum.com/t/feature-trunk-test-coverage-measurement/141774/7 "2008-07-03T14:57:46Z")

</div>

e$B%A%1%C%He(B #217 e$B$,99?7$5$l$^$7$?!#e(B (by Yusuke E.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

## Applied in changeset r17857.

[http://redmine.ruby-lang.org/issues/show/217](http://redmine.ruby-lang.org/issues/show/217)
