Подсчет строк кода для многих решений C # - PullRequest
14 голосов
/ 05 мая 2010

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

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

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

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

Ответы [ 5 ]

19 голосов
/ 05 мая 2010

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

Powershell сделает это:

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

Подсчет строк исходного кода в PowerShell :

Количество строк на путь:

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

Мин. / Макс. / Средние:

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

Коэффициент комментариев:

   $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) 

Также Счетчик строк

3 голосов
/ 27 января 2013

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

enter image description here

К сожалению, похоже, что разработка LOCCode окончена.

2 голосов
/ 06 мая 2010

Что вам нужно, это логические строки подсчета кода, как определено здесь: Как вы подсчитываете количество строк кода (LOC)

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

Также вас может заинтересовать: Почему полезно подсчитывать количество строк кода (LOC)?

0 голосов
/ 24 февраля 2014

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

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

0 голосов
/ 12 мая 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...