Подсчет строк кода для многих решений С#
В настоящее время я изучаю решение для подсчета строк кода на С#.
Мне очень нужна комбинация следующих двух инструментов:
http://richnewman.wordpress.com/2007/07/01/c-and-vbnet-line-count-utility/
http://www.locmetrics.com/index.html
Моя проблема в том, что мне нужно рекурсивно сканировать папку, содержащую множество визуальных студийных решений. Поэтому он не может использовать первый инструмент без какой-либо серьезной работы над его кодом, поскольку он способен сканировать только одно решение за раз.
Но мне также нужно разделить результаты для каждого решения, желательно даже с содержащимися проектами. Это дисквалифицирует второй инструмент, который я нашел. Я также нашел NDepend, который страдает от одной и той же проблемы.
Знаете ли вы о каких-либо бесплатных инструментах, которые делают то, что мне нужно? Я не могу найти что-нибудь подходящее.
Ответы
Ответ 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 достаточно хорошо отображает решения, поэтому я решил использовать этот инструмент выше.
Спасибо всем за помощь