Próbowałem rake stats
, ale wydaje się to bardzo niedokładne. Być może ignoruje kilka katalogów?Jak liczyć wiersze kodu?
Odpowiedz
Możesz wypróbować te dwie opcje:
Rakestats snippet z 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"
- metric_fu - Ruby Klejnot do łatwego generowania raportów metrycznych
PS: Nie próbowałem żadnego z powyższych, ale metric_fu brzmi interesująco, zobacz zrzuty ekranowe wyjścia.
Oto proste rozwiązanie. Zlicza linie kodu w folderze aplikacji projektu rails - CSS, Ruby, CoffeeScript i inne. U podstaw projektu, uruchom polecenie:
find ./app -type f | xargs cat | wc -l
i kilka rzędów wielkości szybciej niż cloc, jeśli nie dbasz o semantykę linii, którą zliczasz – pje
Naprawdę nie jestem pewna, dlaczego tak bardzo wzniesiono się do głosu. Po prostu zlicza linie pliku, w tym puste wiersze i komentarze z dowolnego kodu źródłowego, pliki konfiguracyjne, pliki dziennika, pliki binarne, aby głośno krzyczeć. To ** bardzo ** różni się od LOC, przez dowolną możliwą definicję tego, co stanowi linię kodu . W moim bieżącym projekcie szynowym, zgłasza to 35K linii, w porównaniu do znacznie dokładniejszych 19K ze stada. – Thilo
@Thilo, to właściwie nie liczy plików konfiguracyjnych ani binarnych, ponieważ szuka w folderze ./app. Choć wystarczająco sprawiedliwe, istnieje wiele rozwiązań do wszystkiego. –
używam darmowy skrypt Perl cloc. Przykładowe użycie:
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
-------------------------------------------------------------------------------
'brew install cloc' – Chip
wydaje się, że nie obsługuje plików widoku' erb'. 'cloc app/views': 100 plików tekstowych. 96 unikalnych plików. Zignorowano 100 plików. ** Aktualizacja: 'cloc app/views --force-lang = html, erb' ** – Mifeng
@Mifeng Wielkie dzięki! Możesz zrobić to samo z jadeitem, który również nie jest obsługiwany po wyjęciu z pudełka. na przykład. 'cloc example/jadeviews --force-lang = html, jade' – Automatico
Ten oblicza liczbę plików, całkowite wiersze kodu, komentarze i średnią LOC na plik. Wyklucza również pliki wewnątrz katalogów z "dostawcą" w ich nazwie.
Zastosowanie:
count_lines('rb')
Kod:
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
To jest takie proste, jest piękne " – baash05
- 1. SSRS: Jak liczyć prawdziwe wiersze
- 2. Jak liczyć wiersze w języku zapytań Hibernuj?
- 3. Jak liczyć wiersze na arkusz w OpenXML
- 4. Jak liczyć wiersze kodu w Pythonie z wyjątkiem komentarzy i poleceń?
- 5. Jak liczyć puste wiersze podczas czytania z Excela
- 6. Jak liczyć wiersze w Lift (Scala's web framework)
- 7. Jak skutecznie liczyć powiązane wiersze w modelu za pomocą Doctrine2
- 8. Jak podzielić długie wiersze kodu w C++?
- 9. Jak przeglądać całe, ewentualnie zapakowane wiersze kodu?
- 10. Znajdź niezrealizowane wiersze kodu C++
- 11. Jak liczyć jak liczyć na konkretny kraj?
- 12. Jak liczyć linie kodu (LOC) za pomocą IntelliJ IDEA?
- 13. Wiersze kodu w serwerze podstawowym zespołu
- 14. Jak liczyć elementy w TinyXml?
- 15. Jak liczyć wystąpienia podfolderów?
- 16. Jak wydrukować wiersze kodu źródłowego w logu Pythona
- 17. Jak liczyć wiersze, które mają te same wartości w dwóch kolumnach (SQL)?
- 18. Jak liczyć atrybuty obiektu JavaScript?
- 19. Jak liczyć dzieci w drzewie
- 20. Jak liczyć przedmioty według kategorii?
- 21. jak wyświetlić ciąg sznurkiem liczyć
- 22. Jak mogę liczyć kolumny tabeli
- 23. Jak liczyć liczbę bajtek wykonanych w java
- 24. liczyć linie w projekcie PHP
- 25. Dane LoC (wiersze kodu) dla .NET 2.0 C# projects
- 26. SELECT DISTINCT i liczyć
- 27. LINQ: GroupBy, Sum i liczyć
- 28. Jak usunąć wiersze w jqgrid
- 29. DataTable, Jak warunkowo usunąć wiersze
- 30. Hrabia wiersze z Slick 1.0.0
niestety wiem. Nie chciałem hackować ani instalować garści klejnotów. Ciągle szukam prostego, eleganckiego rozwiązania. – AnApprentice