I’m apologize for my English, before.
I’m doing a post graduation thesis about BDD, an my initial idea is to
compare a ruby program built by TDD and after by BDD. In these cases,
the both projects have identical code, excepts the tests that were made
by Test::Unit and Rspec respectively. So I’m using some code metrics
like rcov, flay, flog and etc. for compare the generated tests.
I made the same for a rails project. I built a blog with three models
(user, post and comment) using TDD approach using Test::Unit. After I
did the same project using the BDD approach for build the same code but
using rspec instead Test::Unit framework. In both projects the total
number of tests are the same and the code generated are identical. So I
tried to use metric-fu for compare these rails projects and the results
left me frustrated.
The flog and roodi’s metrics showing noting!
I need to measure files user.rb, post.rb, comment.rb
in app/models and user_test.rb, post_test.rb, comment_test.rb in
test/unit.
My metric-fu.rake is:
begin
require ‘metric_fu’
MetricFu::Configuration.run do |config|
#define which metrics you want to use
config.metrics = [:churn, :saikuro, :stats, :flog, :flay,
:reek, :roodi, :rcov]
config.graphs = []
config.flay = { :dirs_to_flay => [‘app/models’, ‘test/unit’,
‘lib’] }
config.flog = { :dirs_to_flog => [‘app/models’, ‘test/unit’,
‘lib’] }
config.reek = { :dirs_to_reek => [‘app/models’, ‘test/unit’,
‘lib’] }
config.roodi = { :dirs_to_roodi => [‘app/models’,‘test/unit’,
‘lib’] }
config.saikuro = { :output_directory =>
‘scratch_directory/saikuro’,
:input_directory => [‘app/models’,
‘test/unit’, ‘lib’],
:cyclo => “”,
:filter_cyclo => “0”,
:warn_cyclo => “5”,
:error_cyclo => “7”,
:formater => “text”}
config.churn = { :start_date => “1 year ago”,
:minimum_churn_count => 10}
config.rcov[:rcov_opts] << “-Itest”
end
rescue LoadError
end
and for rails rspec project
begin
require ‘metric_fu’
MetricFu::Configuration.run do |config|
#define which metrics you want to use
config.metrics = [:churn, :saikuro, :stats, :flog, :flay,
:reek, :roodi, :rcov]
config.graphs = []
config.flay = { :dirs_to_flay => [‘app/models’,
‘spec/models’, ‘lib’] }
config.flog = { :dirs_to_flog => [‘app/models’,
‘spec/models’, ‘lib’] }
config.reek = { :dirs_to_reek => [‘app/models’,
‘spec/models’, ‘lib’] }
config.roodi = { :dirs_to_roodi =>
[‘app/models’,‘spec/models’, ‘lib’] }
config.saikuro = { :output_directory =>
‘scratch_directory/saikuro’,
:input_directory => [‘app/models’,
‘spec/models’, ‘lib’],
:cyclo => “”,
:filter_cyclo => “0”,
:warn_cyclo => “5”,
:error_cyclo => “7”,
:formater => “text”}
config.churn = { :start_date => “1 year ago”,
:minimum_churn_count => 10}
config.rcov[:rcov_opts] << “-Itest” # doens’t work too.
end
rescue LoadError
end
I need to improve this rake file for show more information (and to
include flog and roodi measures).
For me rcov doesn’t work with this default configuration:
config.rcov = { :test_files => [‘test//*_test.rb’,
'spec//*_spec.rb’],
:rcov_opts => ["–sort coverage",
“–no-html”,
“–text-coverage”,
“–no-color”,
“–profile”,
“–rails”,
“–exclude
/gems/,/Library/,spec”]}
Why?
And when I execute rake metrics :all these errors happen:
(in /home/bruno/workRails/blog_spec)
- master
/usr/local/lib/ruby/gems/1.8/gems/flog-2.1.2/bin/flog:11: undefined
method `flog_files’ for #Flog:0xb7903708 (NoMethodError)
from /usr/local/bin/flog:19:in `load’
from /usr/local/bin/flog:19
No file to analyze was found. All the files loaded by rcov matched one
of the
following expressions, and were thus ignored:
[/\A/usr/local/lib/,
/\btc_[^.]*.rb/,
/_test.rb\z/,
… and blablabla
Can anyone help me with these questions?
Thank’s so much, Bruno.