2010-05-05 2 views
12

В настоящее время я исследую решение для подсчета строк кода на C#.Средство подсчета числа кодов для многих решений C#

Я довольно много необходимо сочетание следующих двух инструментов:
http://richnewman.wordpress.com/2007/07/01/c-and-vbnet-line-count-utility/
http://www.locmetrics.com/index.html

Моя проблема заключается в том, что мне нужно рекурсивно сканировать папку, содержащую много визуальных решений студии. Поэтому он не может использовать первый инструмент без какой-либо серьезной работы над его кодом, поскольку он способен сканировать только одно решение за раз.
Но мне также нужно разделить результаты для каждого решения, желательно даже с содержащимися проектами. Это дисквалифицирует второй инструмент, который я нашел. Я также нашел NDepend, который страдает от одной и той же проблемы.

Знаете ли вы какие-либо бесплатные инструменты, которые делают то, что мне нужно? Я не могу найти что-нибудь подходящее.

+0

Его также важно, чтобы инструмент мог исключать комментарии. Может быть, даже сгенерированный автоматически код. Извините, забыл (можно отредактировать исходный вопрос, так как Kobi уже отредактировал гиперссылки ;-)) – Eric

+9

«Измерение прогресса программирования по строкам кода подобно измерению прогресса самолета по весу». - Билл Гейтс – Oliver

+1

Я не уверен, что эти цифры будут использоваться для. На данный момент это всего лишь мгновенный снимок. Вероятно, чтобы получить представление о размере всех проектов. Я просто стажер попросил выяснить :-) – Eric

ответ

17

NDepend - отличный инструмент, предназначенный для измерения и визуализации кодовых показателей и сложности.

Powershell бы это сделать:

(dir -Include *.cs -Recurse | select-string .).Count 

Counting Lines of Source Code in PowerShell:

Количество линий на пути:

gci . *.cs -Recurse | select-string . | Group Path 

Min/Max/средние:

gci . *.cs -Recurse | select-string . | Group Filename | Measure-Object Count -Min -Max -Average 

Comme соотношение нт:

$items = gci . *.cs -rec; ($items | select-string "//").Count/($items | select-string .).Count 


## Count the number of lines in all C# files in (and below) 
## the current directory. 

function CountLines($directory) 
{ 
    $pattern = "*.cs" 
    $directories = [System.IO.Directory]::GetDirectories($directory) 
    $files = [System.IO.Directory]::GetFiles($directory, $pattern) 

    $lineCount = 0 

    foreach($file in $files) 
    { 
     $lineCount += [System.IO.File]::ReadAllText($file).Split("`n").Count 
    } 

    foreach($subdirectory in $directories) 
    { 
     $lineCount += CountLines $subdirectory 
    } 

    $lineCount 
} 

CountLines (Get-Location) 

Кроме того, Line Counter

+0

К сожалению, это учитывает все текстовые строки, меня больше интересуют реальные строки кода, исключая комментарии, например, и, возможно, даже сгенерированный автоматически код. – Eric

+4

@ Эрик - ваша производительность будет идти вниз, если вы не учитываете комментарии и автоматически сгенерированный код. :-) – tvanfosson

+0

@Tvanfosson Я знаю ;-) – Eric

2

Что вам нужно логические строки подсчета кода, как определено здесь: How do you count your number of Lines Of Code (LOC)

Если вы используете NDepend подсчитать количество Ваших lines of code вы можете добавить все ваши VS sln в проекте NDepend. Однако логические строки кода являются метрикой, выводимой из файлов PDB, поэтому убедитесь, что все ваши сборки имеют соответствующие файлы PDB.

Также вы можете быть заинтересованы по: Why is it useful to count the number of Lines Of Code (LOC) ?

-2

В конце концов я пошел с LocMetrics, к сожалению, это не реально решить мои в-решения проблемы.

Но структура папок reposiotry достаточно хорошо отображает решения, поэтому я решил использовать этот инструмент выше.

Спасибо всем за помощь

+0

Почему вы проголосовали за этот ответ? Должен ли я сделать что-то по-другому? – Eric

+0

эта программа не вычисляет строки кода правильно – Rookian

3

Я думаю LOCcode интересный бесплатный инструмент для подсчета количества строк кода. Он позволяет выбирать, какие файлы должны обрабатываться. Он учитывает LOC во всех разрешенных задачах.

enter image description here

К сожалению, кажется, что развитие LOCCode закончена.

+0

слишком плохо, что она учитывает XML-файлы>. < –

+0

Ссылка мертва, и Wayback Machine не может помочь. :( –

0

Мне понравилось, что сказал Митч Пшеница, но мне не нравится, что какая-то бесполезная информация рассчитывается как «строка кода». Я написал код C#, чтобы найти общее количество реальных линий в коде здесь: http://rajputyh.blogspot.in/2014/02/counting-number-of-real-lines-in-your-c.html

Вы должны построить небольшую утилиту из этого кода, чтобы обеспечить путь от корневой папки, где все «*. cs "хранятся. Хорошо, что этот код заключается в том, что он не зависит от файла проекта. Обычно я проверяю свой код и удаляю автоматически сгенерированные файлы и использую инструмент для подсчета количества строк.

Смежные вопросы