rcov
ruby 1.8
1.9はsimple cov
test
requireでエラーで動かない
やり方いろいろありそうだが、
Rakefileの最初に
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
追加したら $ rake 動いた
エラーがいくつかで make: /usr/bin/gcc-4.2: No such file or directory
$ gcc -v
gcc version 4.2.1
$ which gcc
/usr/bin/gcc
$ sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
$ rake
Started
.............................................
Finished in 0.468409 seconds.
45 tests, 449 assertions, 0 failures, 0 errors
できた。やればできる。
editor extensions
bin/rcov
OptionParserを使っている
opts.on("-o", "--output PATH", "Destination directory.") do |dir|
options.destdir = dir
end
みたいな
formatters
$ head -1000 lib/rcov/formatters/* | egrep "\b(module|class) "
module Rcov
class BaseFormatter # :nodoc:
class XRefHelper < Struct.new(:file, :line, :klass, :mid, :count) # :nodoc:
module Rcov
class FailureReport < TextSummary # :nodoc:
module Rcov
class FullTextReport < BaseFormatter # :nodoc:
module Rcov
class HTMLCoverage < BaseFormatter # :nodoc:
class SummaryFileInfo # :nodoc:
class HTMLProfiling < HTMLCoverage # :nodoc:
class RubyAnnotation < BaseFormatter # :nodoc:
module Rcov
module Formatters
class HtmlErbTemplate
module Rcov
module Formatters
class HTMLProfiling < HTMLCoverage
module Rcov
module Formatters
class RubyAnnotation < BaseFormatter
module Rcov
class TextCoverageDiff < BaseFormatter # :nodoc:
module Rcov
class TextReport < TextSummary # :nodoc:
module Rcov
class TextSummary < BaseFormatter # :nodoc:
BaseFormatterなど継承を多く使っている
lib/rcov/formatters.rb
...
require 'rcov/formatters/failure_report'
module Rcov
module Formatters
end
end
おそらく読み込みの都合上から空のmoduleを定義している
file_statistics.rb
計算とかしてて興味深い
def is_code?(lineno)
state = :code
@lines.each_with_index do |line, index|
case state
when :code
if /^=begin\b/ =~ line
state = :comment
pending << index
end
when :comment
思ったよりごりごりコード解析をしている
正規表現を多用
1.9対応までカバーできないのも納得行く
前に見たSexpなんか使うとうまく解析できるのかも
indices - indexの複数形
class CoverageInfo
lineごとarrayのように振る舞いを定義している
templates
jquery-1.3.2.min.js とかcssとかhtmlに必要なものを置いてある
いずれsimple_cov見てみる
30m