Подтвердить что ты не робот

Подсчет строк кода для многих решений С#

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

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

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

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

4b9b3361

Ответ 1

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) 

Кроме того, Счетчик строк

Ответ 2

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

enter image description here

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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