Frage

Ich bin mit Gurke mit RSpec in einem Rails-Projekt. Wenn ich die „Rake-Statistik“ Aufgabe verwenden, erhalte ich die folgende:

+----------------------+-------+-------+---------+---------+-----+-------+
| 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

So rspec fügt die Statistik (siehe Modell, Ansicht, Controller und Helfer Spezifikationen).
Aber ich habe nicht die Gurke diejenigen. Wie kann ich sie zu meiner Rake Statistik hinzufügen?

War es hilfreich?

Lösung

RSpec erstellt eine lib/tasks/rspec.rake Datei. Und definiert die Statistiken Verzeichnisse innerhalb davon.

In der Zeile 108 der Datei, werden Sie sehen:

# 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

Sie müssen nur Ihre Gurke verfügt es Verzeichnis hinzufügen, kurz vor dem Ende der Aufgabe.

#
# 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')

Andere Tipps

Warum Affen das Juwel wie das Patch? Sie werden Ihre Lösung für sie jedes Mal hinzufügen, müssen Sie rspec-Schienen aktualisieren. erstrecken sich nur die Aufgabe, vor Ort mit so etwas wie folgt aus:

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

Und FYI Lichtamberg und Damien MATHIEU das funktioniert ganz gut mit rspec 2. Allerdings sind diese Schienen spezifischen Rake Aufgaben sind OFC nicht Teil des rspec Juwel selbst, sondern ein Teil der rspec-Schienen gem.

P. S. Das alles wurde mit Ruby getestet 1.9.2p180 (2011-02-18 Revision 30909) [i686-linux], Schienen 3.0.8, 2.6.0 und rspec rspec-Schienen 2.6.1 und es kann oder auch nicht funktioniert ältere Versionen von sie.

Hier ist eine Version, die mit Rübe und RSpec 2

funktioniert

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

Code:

# 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

Das ist zwar eine sehr alte Frage, ist es noch erste ist, wenn googeln „Schienen Rake Statistiken Gurke“ und die Antworten sind irreführend oder veraltet.

Für zukünftige Googler, alles, was Sie tun müssen, ist laufen

$ rails generate cucumber:install

Damit wird die notwendigen Dateien erstellen, und speziell die lib/tasks/cucumber.rake-Datei, die „Gurke Features“ auf die rake stats-Ausgabe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top