Как считать строки кода в решении Visual Studio?


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

25 674

25 ответов:

Visual Studio 2010 Ultimate имеет этот встроенный.

Analyze - > Calculate Code Metrics

Я нашел powershell полезное для этого. Я считаю, что LoC в любом случае является довольно фиктивной метрикой, поэтому я не считаю, что требуется что-то более формальное.

из каталога небольшого решения:

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>

это будет считать непустые строки во всех решениях.КС И.файл XAML. Для большого проекта, я просто использовал другой список:

PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>

зачем использовать все приложение, когда одна командная строка будет делать это? :)

Я Ctrl+ Shift+F. Далее ставим \n в поле поиска и включить регулярные выражения. Затем в результатах поиска в конце экрана отображается количество искомых файлов и найденных строк кода.

счетчик строк с открытым исходным кодом для VS2005, 2003 и 2002 доступен здесь:

http://www.wndtabs.com/

существует также обсуждение создания подсчета строк VS addin, в комплекте с кодом на Codeproject, здесь

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

также гладкие гаджеты редактирования имеют хороший счетчик строк, здесь:

http://www.slickedit.com/products/slickedit

и Microsoft Visual Studio Team System 2008 включает в себя хороший счетчик строк.

просто помни:

измерение прогресса программирования по строкам кода похоже на измерение прогресса в строительстве самолетов по весу. Билл Гейтс

нашел этот совет: LOC с VS найти и заменить

Не плагин, хотя если это то, что вы ищете.

вот обновление для Visual Studio 2012/2013/2015 для тех, кто хочет сделать параметр "найти" (который я считаю самым простым): это регулярное выражение найдет все непустые строки с несколькими исключениями, чтобы дать наиболее точные результаты.

введите следующее выражение в поле "Найти". Пожалуйста, не забудьте выбрать опцию "Использовать регулярные выражения". Измените параметр поиска на "текущий проект" или "Все решение" в зависимости от ваших потребностей. Теперь выберите "Найти все". На в нижней части Результаты Поиска окно, вы увидите "соответствующие строки", который является строки подсчета кода.


^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$

это выражение исключает следующие элементы:


комментарии

// This is a comment

многострочные комментарии (при условии, что строки правильно прокомментированы с * Перед каждой строкой)

/* I am a
* multi-line
* comment */

XML для Intellisense

/// <summary>
/// I'm a class description for Intellisense
/// </summary>

комментарии HTML:

<!-- I am a HTML Comment -->

операторы using:

using System;
using System.Web;

открывающей фигурной скобки:

{

закрытие фигурных скобок:

}

Примечание: все, что между фигурными скобками будет включено в поиск, но в этом примере будет учитываться только 4 строки кода, а не 18 фактических непустых строк:

        public class Test
        {
            /// <summary>
            /// Do Stuff
            /// </summary>
            public Test()
            {
                TestMe();
            }
            public void TestMe()
            {
                //Do Stuff Here
                /* And
                 * Do
                 * Stuff
                 * Here */
            }
        }

Я создал это дайте мне гораздо более точный подсчет LOC, чем некоторые предыдущие варианты, и я решил поделиться. Боссы любят Лок графов, так что я застрял с ним на некоторое время. Я надеюсь, что кто-то еще может найти это полезным, дайте мне знать, если у вас есть какие-либо вопросы или нужна помощь, чтобы заставить его работать.

cloc Это отличная командная строка, основанная на Perl, Windows-исполняемый файл, который будет разбивать пустые строки, прокомментированные строки и исходные строки кода, сгруппированные по форматам файлов.

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

вот пример вывода с их веб-страницы:


prompt> cloc perl-5.10.0.tar.gz
    4076 text files.
    3883 unique files.                                          
    1521 files ignored.

http://cloc.sourceforge.net v 1.07  T=10.0 s (251.0 files/s, 84566.5 lines/s)
-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
Perl               2052    110356    112521    309778 x   4.00 =     1239112.00
C                   135     18718     22862    140483 x   0.77 =      108171.91
C/C++ Header        147      7650     12093     44042 x   1.00 =       44042.00
Bourne Shell        116      3402      5789     36882 x   3.81 =      140520.42
Lisp                  1       684      2242      7515 x   1.25 =        9393.75
make                  7       498       473      2044 x   2.50 =        5110.00
C++                  10       312       277      2000 x   1.51 =        3020.00
XML                  26       231         0      1972 x   1.90 =        3746.80
yacc                  2       128        97      1549 x   1.51 =        2338.99
YAML                  2         2         0       489 x   0.90 =         440.10
DOS Batch            11        85        50       322 x   0.63 =         202.86
HTML                  1        19         2        98 x   1.90 =         186.20
-------------------------------------------------------------------------------
SUM:               2510    142085    156406    547174 x   2.84 =     1556285.03
-------------------------------------------------------------------------------

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

ответы здесь немного устарели,может быть, с 2008 года. Поскольку в более новых версиях Visual Studio 2010/2012 эта функция уже встроена. Таким образом, нет никаких оснований использовать какие-либо расширения или инструменты для этого.

функция подсчета строк кода-вычисление метрик. С его помощью вы можете рассчитать свои метрики (LOC, Maintaince index, Cyclomatic index, глубина наследования) для каждого проекта или решения.

просто щелкните правой кнопкой мыши на решение или проект в решении Исследователь,

enter image description here

и выбрать "измерения"

enter image description here

более поздние данные для анализа и агрегации могут быть импортированы в Excel. Также в Excel вы можете отфильтровать сгенерированные классы или другие шумы из ваших метрик. Эти метрики, включая строки кода LOC, могут быть собраны также во время процесса сборки и включены в отчет о сборке

регулярные выражения изменились между VS2010 и 2012, поэтому большинство решений регулярных выражений здесь больше не работают

(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+

найдет все строки, которые не являются пустыми, не являются только одной скобкой ( '{' или'}'), а не только #include или другим препроцессором.

использовать Ctrl -shift -f и убедитесь, что регулярные выражения включены.

соответствующее регулярное выражение для VS 2010 и старше

^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+

в Visual Studio Team System 2008 Вы можете сделать из меню Analyze--> "вычислить метрики кода для решения", и это даст вам количество строк всего вашего решения (среди прочего g)

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

У него есть множество утилит, встроенных в том числе счетчик строк, который говорит, сколько строк пусто, код и т. д.

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

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

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

ссылки:

вы могли бы использовать:

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

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

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

#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}

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

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

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

согласен с Али Парр. Таким инструментом является надстройка счетчика строк WndTab. http://www.codeproject.com/KB/macros/linecount.aspx

Это также хорошая идея для поиска с сайта загрузки, чтобы найти какой-то связанный инструмент. http://www.cnet.com/1770-5_1-0.html?query=code + счетчик и тег=srch

вот в чем фокус.. Он также подсчитывает файл Js.

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

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

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

отображение результатов на диаграммах

можно использовать надстройку счетчика строк проекта в Visual Studio 2010. Обычно это не работает с Visual Studio 2010, но это делает с полезным .reg файл отсюда:http://www.onemanmmo.com/index.php?cmd=newsitem&comment=news.1.41.0

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

скрипт можно найти здесь:

https://gist.github.com/1674457

попробовать neptuner. Он также дает вам такие вещи, как пробелы, вкладки, строки комментариев в дополнение к LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip

в Visual Studio 2015 перейдите в меню анализ и выберите "вычислить метрики кода".