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

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

Ответы [ 25 ]

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

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

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

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

Это будет подсчитывать непустые строки во всех файлах .cs и .xaml решения. Для более крупного проекта я просто использовал другой список расширений:

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

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

463 голосов
/ 01 марта 2011

Visual Studio 2010 Ultimate имеет эту встроенную функцию.

Анализировать -> Рассчитать метрики кода

340 голосов
/ 22 февраля 2012

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

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

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

http://www.wndtabs.com/

Здесь также обсуждается создание надстройки с подсчетом строк, дополненной кодом на Codeproject, здесь

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

Также Slick Edit Gadgets имеют хороший счетчик строк, здесь:

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

, а Microsoft Visual Studio Team System 2008 содержит хороший счетчик строк.

Только запомните:

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

80 голосов
/ 28 февраля 2010

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

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

75 голосов
/ 04 ноября 2013

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

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


^(?!(\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 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, чем некоторые предыдущие варианты, и решил, что поделюсь. Боссы любят LOC, так что я застрял на некоторое время. Я надеюсь, что кто-то еще может найти это полезным, дайте мне знать, если у вас есть какие-либо вопросы или вам нужна помощь, чтобы заставить его работать.

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

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

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

42 голосов
/ 14 ноября 2012

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

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

Просто щелкните правой кнопкой мыши решение или проект в Solution Explorer,

enter image description here

и выберите «Рассчитать метрики»

enter image description here

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

28 голосов
/ 01 октября 2013

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

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

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

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

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

^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
19 голосов
/ 07 августа 2009

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

...