Comment compter les lignes de code?

J'ai essayé rake stats mais cela semble très inexact. Peut-être qu'il ignore plusieurs répertoires?

50
demandé sur Phrogz 2010-10-17 23:25:35

4 réponses

, Vous pouvez essayer ces deux options:

  1. Hack râteau stats

Extrait de Rakestats de blogpost:

namespace :spec do
  desc "Add files that DHH doesn't consider to be 'code' to stats"
  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
  ::STATS_DIRECTORIES << ['Views',  'app/views', /\.(rhtml|erb|rb)$/]
  ::STATS_DIRECTORIES << ['Test Fixtures',  'test/fixtures', /\.yml$/]
  ::STATS_DIRECTORIES << ['Email Fixtures',  'test/fixtures', /\.txt$/]
  # note, I renamed all my rails-generated email fixtures to add .txt
  ::STATS_DIRECTORIES << ['Static HTML', 'public', /\.html$/]
  ::STATS_DIRECTORIES << ['Static CSS',  'public', /\.css$/]
  # ::STATS_DIRECTORIES << ['Static JS',  'public', /\.js$/]
  # prototype is ~5384 LOC all by itself - very hard to filter out

  ::CodeStatistics::TEST_TYPES << "Test Fixtures"
  ::CodeStatistics::TEST_TYPES << "Email Fixtures"
  end
end
task :stats => "spec:statsetup"
  1. metric_fu - Une gemme Ruby pour la génération facile de rapports métriques

PS: je n'ai pas essayé ce qui précède, mais metric_fu semble intéressant, voir les captures d'écran de la sortie.

16
répondu zengr 2016-09-27 05:18:08

J'utilise le script Perl gratuit cloc . Exemple d'utilisation:

phrogz$ cloc .
     180 text files.
     180 unique files.                                          
      77 files ignored.

http://cloc.sourceforge.net v 1.56  T=1.0 s (104.0 files/s, 19619.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Javascript                      29           1774           1338          10456
Ruby                            61            577            185           4055
CSS                             10            118            133            783
HTML                             1             13              3            140
DOS Batch                        2              6              0             19
Bourne Shell                     1              4              0             15
-------------------------------------------------------------------------------
SUM:                           104           2492           1659          15468
-------------------------------------------------------------------------------
99
répondu Phrogz 2013-02-03 21:29:41

Voici une solution simple. Il compte les lignes de code dans le dossier d'application de votre projet rails - CSS, Ruby, CoffeeScript, et tout. À la racine de votre projet, exécutez cette commande:

find ./app -type f | xargs cat | wc -l
29
répondu Amin Ariana 2012-10-13 02:33:49

Celui-ci calcule le nombre de fichiers, le total des lignes de code, les commentaires et la moyenne LOC par fichier. Il exclut également les fichiers dans les répertoires avec "vendor" dans leur nom.

Utilisation:

count_lines('rb')

Code:

def count_lines(ext)

  o = 0 # Number of files
  n = 0 # Number of lines of code
  m = 0 # Number of lines of comments

  files = Dir.glob('./**/*.' + ext)

  files.each do |f|
    next if f.index('vendor')
    next if FileTest.directory?(f)
    o += 1
    i = 0
    File.new(f).each_line do |line|
      if line.strip[0] == '#'
        m += 1
        next
      end
      i += 1
    end
    n += i
  end

  puts "#{o.to_s} files."
  puts "#{n.to_s} lines of code."
  puts "#{(n.to_f/o.to_f).round(2)} LOC/file."
  puts "#{m.to_s} lines of comments."

end
10
répondu user2398029 2015-04-06 21:09:02