Pergunta

Eu estou usando pepino com RSpec em um projeto Rails. Quando eu uso a tarefa "ancinho estatísticas", recebo a seguinte:

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |   948 |   761 |      21 |      87 |   4 |     6 |
| Helpers              |   212 |   175 |       0 |      24 |   0 |     5 |
| Models               |   912 |   741 |      28 |      72 |   2 |     8 |
| Libraries            |   305 |   211 |       1 |      25 |  25 |     6 |
| Model specs          |   978 |   797 |       0 |       1 |   0 |   795 |
| View specs           |   270 |   227 |       0 |       0 |   0 |     0 |
| Controller specs     |  1144 |   944 |       0 |       4 |   0 |   234 |
| Helper specs         |   154 |   116 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  4923 |  3972 |      50 |     213 |   4 |    16 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 1888     Test LOC: 2084     Code to Test Ratio: 1:1.1

Assim rspec adiciona suas estatísticas (veja o modelo, vista, controlador e ajudante especificações).
Mas eu não tenho os pepino. Como eu poderia adicioná-los aos meus estatísticas de rake?

Foi útil?

Solução

RSpec cria um arquivo lib/tasks/rspec.rake. E redefine os diretórios estatísticas dentro do mesmo.

Na linha 108 do arquivo, você verá:

# Setup specs for stats
task :statsetup do
    require 'code_statistics'
    ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
    ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
    ....
end

Você só precisa adicionar seu pepino apresenta diretório lá, bem antes do final da tarefa.

#
# Adding Cucumber features to the stats
#
::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')

Outras dicas

Por macaco corrigir o gem como esse? Você terá que adicionar sua correção para ele toda vez que você atualizar rspec-rails. Apenas estender a tarefa localmente com algo parecido com isto:

echo "# Adding Cucumber features to be reported by the command:
# rake stats
# But e.g. in production environment we probably don't have rspec-rails, nor it's
# statsetup task, we could extend. So lets check if stasetup is available and only
# then extend it. If it isn't then just do nothing.
if Rake::Task.task_defined? 'spec:statsetup'
  Rake::Task['spec:statsetup'].enhance do
    require 'rails/code_statistics'
    ::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
    ::CodeStatistics::TEST_TYPES << 'Cucumber features' if File.exist?('features')
  end
end" > lib/tasks/cucumber_stats.rake

E FYI Lichtamberg e Damien MATHIEU isso funciona muito bem com rspec 2. No entanto, estes trilhos tarefas específicas de rake são ofc não faz parte do próprio gem rspec, mas uma parte do rspec-rails gem.

P.S. Isso tudo foi testado com rubi 1.9.2p180 (2011-02-18 revisão 30909) [i686-linux], trilhos 3.0.8, 2.6.0 rspec e rspec-rails 2.6.1 e pode ou não funcionar versões mais antigas do -los.

Aqui está uma versão que funciona com nabo e RSpec 2

https://gist.github.com/2360892

I copy paste my custom set up for RSpec 1:

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers          |  1110 |   791 |      39 |      92 |   2 |     6 |
| Helpers              |   449 |   373 |       0 |      39 |   0 |     7 |
| Models               |  1986 |  1338 |      25 |     111 |   4 |    10 |
| Libraries            |   652 |   479 |      11 |      41 |   3 |     9 |
| Views                |  2911 |  2730 |       0 |       0 |   0 |     0 |
| Static CSS           |  2776 |  2174 |       0 |       0 |   0 |     0 |
| App javascript       |    16 |    14 |       0 |       0 |   0 |     0 |
| Model specs          |   517 |   289 |       0 |       2 |   0 |   142 |
| Helper specs         |    27 |    22 |       0 |       0 |   0 |     0 |
| Library specs        |    31 |    24 |       0 |       0 |   0 |     0 |
| Cucumber features    |   907 |   657 |       3 |      13 |   4 |    48 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                | 11382 |  8891 |      78 |     298 |   3 |    27 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 7899     Test LOC: 992     Code to Test Ratio: 1:0.1

Código:

# here is my set up
    task :statsetup do
      require 'code_statistics'

      class CodeStatistics
        alias calculate_statistics_orig calculate_statistics

        def calculate_statistics
          @pairs.inject({}) do |stats, pair|
            if 3 == pair.size
              stats[pair.first] = calculate_directory_statistics(pair[1], pair[2]); stats
            else
              stats[pair.first] = calculate_directory_statistics(pair.last); stats
            end
          end
        end
      end
      # http://www.pervasivecode.com/blog/2007/06/28/hacking-rakestats-to-get-gross-loc/
      ::STATS_DIRECTORIES << ['Views', 'app/views', /\.(rhtml|erb|rb)$/]
      ::STATS_DIRECTORIES << ['Static CSS',  'public/stylesheets', /\.css$/]
      ::STATS_DIRECTORIES << ['App javascript',  'public/javascripts', /application.js$/]

      # RSpec default
      ::STATS_DIRECTORIES << %w( Model\ specs spec/models ) if File.exist?('spec/models')
      ::STATS_DIRECTORIES << %w( View\ specs spec/views ) if File.exist?('spec/views')
      ::STATS_DIRECTORIES << %w( Controller\ specs spec/controllers ) if File.exist?('spec/controllers')
      ::STATS_DIRECTORIES << %w( Helper\ specs spec/helpers ) if File.exist?('spec/helpers')
      ::STATS_DIRECTORIES << %w( Library\ specs spec/lib ) if File.exist?('spec/lib')
      ::STATS_DIRECTORIES << %w( Routing\ specs spec/routing ) if File.exist?('spec/routing')
      ::STATS_DIRECTORIES << %w( Integration\ specs spec/integration ) if File.exist?('spec/integration')
      ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
      ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
      ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
      ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
      ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
      ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
      ::CodeStatistics::TEST_TYPES << "Integration specs" if File.exist?('spec/integration')

      # Cuke
      ::STATS_DIRECTORIES << %w( Cucumber\ features features ) if File.exist?('features')
      ::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')

    end

Embora esta é uma questão extremamente antiga, ainda é em primeiro lugar quando pesquisando "rake rails estatísticas pepino" e as respostas são enganosas ou desatualizado.

Para futuras Googlers, tudo que você precisa fazer é executar

$ rails generate cucumber:install

Isto irá criar os arquivos necessários e, especificamente, o arquivo lib/tasks/cucumber.rake, que acrescenta "Pepino Recursos" para a saída rake stats.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top