Как вы считаете строки кода в решении Visual Studio? - PullRequest
741 голосов
/ 07 августа 2009

Можно ли найти количество строк кода во всем решении? Я слышал о MZ-Tools , но есть ли эквивалент с открытым исходным кодом?

Ответы [ 25 ]

17 голосов
/ 17 марта 2012

Для будущих читателей я бы посоветовал расширение DPack для Visual Studio 2010 .

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

11 голосов
/ 25 апреля 2010

Простое решение - поиск по всем файлам. Введите "*" при использовании подстановочных знаков. Который будет соответствовать всем линиям. В конце окна результатов поиска вы увидите строку вида:

Matching lines: 563 Matching files: 17 Total files searched: 17

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

Справка:

9 голосов
/ 07 августа 2009

Вы можете использовать:

5 голосов
/ 13 мая 2010

Я предпочитаю Метрики OxyProject VS Addin.

4 голосов
/ 22 мая 2013

Очевидно, что инструменты проще, но я чувствую себя здорово, делая это в powershell:)

Этот скрипт находит все ссылки .csproj в файле .sln, а затем в каждом файле csproj находит файлы, включенные для компиляции. Для каждого файла, включенного в компиляцию, создается объект со свойствами: Solution, Project, File, Lines. Он сохраняет все эти объекты в списке, а затем группирует и проецирует данные по мере необходимости.

#path to the solution file e.g. "D:\Code\Test.sln"
$slnFile = "D:\Code\Test.sln"


#results
$results = @()

#iterate through .csproj references in solution file
foreach($projLines in get-item $slnFile | Get-Content | Select-String '".*csproj')
{
    $projFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($slnFile), [regex]::Match($projLines,'[^"]*csproj').Value)
    $projFolder = [System.IO.Path]::GetDirectoryName($projFile)

    #from csproj file: get lines for files to compile <Compile Include="..."/>
    $includeLines = get-item $projFile | Get-Content | Select-String '<Compile Include'


    #count of all files lines in project
    $linesInProject = 0;
    foreach($fileLine in $includeLines)
    {
        $includedFilePath = [System.IO.Path]::Combine($projFolder, [Regex]::Match($fileLine, '"(?<file>.*)"').Groups["file"].Value)
        $lineCountInFile = (Get-Content $includedFilePath).Count      
        $results+=New-Object PSObject -Property @{ Solution=$slnFile ;Project=$projFile; File=$includedFilePath; Lines=$lineCountInFile }
    }
}

#filter out any files we dont need
$results = $results | ?{!($_.File -match "Designer")}


#print out:

"---------------lines per solution--------------"
$results | group Solution | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
"---------------lines per peoject--------------"
$results | group Project | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
3 голосов
/ 17 января 2010

Другой простой инструмент для VS2008 (с открытым исходным кодом): http://www.accendo.sk/Download/SourceStat.zip

3 голосов
/ 12 июля 2011

Используйте пункт меню-> Анализировать -> Рассчитать метрики кода в Visual Studio 2010 Ultimate.

3 голосов
/ 15 апреля 2014

Вы можете использовать Visual Studio Code Metrics PowerTool 10.0 . Это утилита командной строки, которая вычисляет несколько метрик для управляемого кода для вас (включая строки кода). Вы можете получить плагин VS 2010, который переносит инструмент в Visual Studio и делает его таким же быстрым, как выбор пункта меню и нажатие кнопки «Анализ решения».

2 голосов
/ 08 апреля 2014

Вы можете использовать бесплатный инструмент SourceMonitor

Дает множество мер: строки кода, количество операторов, сложность, глубина блока

Имеет графический вывод через диаграммы

2 голосов
/ 22 мая 2013

Вот трюк. Он также считает Js-файл.

http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx

...