2

作業中の Rails プロジェクトで metric-fu を実行しようとしています。取得するメトリクスの rcov 部分を実行するたびに:

** Invoke metrics:all (first_time)
** Execute metrics:all

No file to analyze was found. All the files loaded by rcov matched one of the
following expressions, and were thus ignored:
[/\A\/System\/Library\/Frameworks\/Ruby\.framework\/Versions\/1\.8\/usr\/lib/,
 /\btc_[^.]*.rb/,
 /_test\.rb\z/,
 /\btest\//,
 /\bvendor\//,
 /\A\/Library\/Ruby\/Gems\/1\.8\/gems\/rcov\-0\.9\.7\.1\/lib\/rcov\/formatters\/base_formatter\.rb\z/,
 /\bvendor\//,
 /\bconfig\//,
 /\benvironment\//,
 /\/gems\//,
 /\/Library\//,
 /spec/]

You can solve this by doing one or more of the following:
* rename the files not to be ignored so they don't match the above regexps
* use --include-file to give a list of patterns for files not to be ignored
* use --exclude-only to give the new list of regexps to match against
* structure your code as follows:
      test/test_*.rb  for the test cases
      lib/**/*.rb     for the target source code whose coverage you want
  making sure that the test/test_*.rb files are loading from lib/, e.g. by 
  using the -Ilib command-line argument, adding  
    $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
  to test/test_*.rb, or running rcov via a Rakefile (read the RDoc
  documentation or README.rake in the source distribution).
rake aborted!
NaN
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/float/rounding.rb:19:in `round_without_precision'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/float/rounding.rb:19:in `round'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/base/generator.rb:135:in `round_to_tenths'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/generators/rcov.rb:84:in `to_h'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/base/generator.rb:131:in `generate_report'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/base/generator.rb:53:in `generate_report'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/base/report.rb:54:in `add'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/../tasks/metric_fu.rake:6
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/../tasks/metric_fu.rake:6:in `each'
/Library/Ruby/Gems/1.8/gems/metric_fu-1.2.0/lib/../tasks/metric_fu.rake:6
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

rcov を単独で実行すると、同じ問題が発生します。それが役立つ場合は、TestUnitではなくRspecを使用しています。

4

3 に答える 3

4

rake を使用して metric_fu を起動している場合は、次のスニペットを使用して任意のディレクトリを rcov パスに追加できます。

begin  
  require 'metric_fu'
  MetricFu::Configuration.run do |config|  
     config.rcov[:rcov_opts] << "-Ispec"  
  end 
rescue LoadError  
end

これにより、 rcov オプションに-Ispecフラグが追加され、rcov のパスに「spec」ディレクトリが追加されます。

于 2010-01-26T09:33:19.337 に答える
1

「test」ディレクトリを削除し、Rcov 構成ハッシュに「--include spec/spec_helper.rb」を追加しました。特にspecヘルパーを指す必要があり、テストディレクトリを削除する必要があると思います。そうしないと、rspecではなくtestunitでrcovを実行しようとします。

これが他の人に役立つことを願っています!

于 2010-01-20T21:56:21.320 に答える
0

したがって、rcov は、「分析するファイルが見つかりませんでした」と表示する場所でこのことを行います。問題が実際にはメッセージの下のスタック トレースである場合のメッセージ。rcov のバージョンをアップグレードしてみてください (どのバージョンを使用していますか?)。

于 2010-01-15T16:12:58.310 に答える