quattro_4 scribble

scribble 落書き (調べた事をただ落書きする)

rcov

ruby 1.8

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

rcov.el, rcov.vim がある

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