Можно ли найти количество строк кода во всем решении? Я слышал о MZ-Tools , но есть ли эквивалент с открытым исходным кодом?
Можно ли найти количество строк кода во всем решении? Я слышал о MZ-Tools , но есть ли эквивалент с открытым исходным кодом?
Ответы:
Visual Studio 2010 Ultimate имеет следующие встроенные функции:
Анализ → Рассчитать метрики кода
Я нашел 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>
Зачем использовать приложение целиком, если это делает одна командная строка? :)
(dir -exclude *.g.cs -include *.cs,*.xaml -recurse | select-string .).Count
Я использовал Ctrl+ Shift+ F. Затем поместите \n
в поле поиска и включите поле регулярных выражений. Затем в результатах поиска в конце экрана указывается количество искомых файлов и найденные строки кода.
Вы можете использовать, [^\n\s]\r\n
чтобы пропустить пустые и только пробелы строки (кредиты для Зак в комментариях).
Look at these file types:
раскрывающийся список опций ниже enable regular expressions box
.
[^\n\s]\r\n
пропускает пустые строки, даже с пробелами в них.
Счетчик строк с открытым исходным кодом для VS2005, 2003 и 2002 доступен здесь:
Здесь также обсуждается создание надстройки с подсчетом строк, дополненной кодом на Codeproject, здесь
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
Также Slick Edit Gadgets имеют хороший счетчик строк, здесь:
http://www.slickedit.com/products/slickedit
и Microsoft Visual Studio Team System 2008 включает в себя хороший счетчик строк.
Просто помните, хотя:
Измерение прогресса в программировании с помощью строк кода похоже на измерение прогресса в самолетостроении по весу. Билл Гейтс
Вот обновление для Visual Studio 2012/2013/2015 для тех, кто хочет использовать опцию «Найти» (что я считаю самым простым): этот RegEx найдет все непустые строки с несколькими исключениями, чтобы дать наиболее точные результаты ,
Введите следующий RegEx в поле «Найти». Пожалуйста, не забудьте выбрать опцию «Использовать регулярные выражения». Измените параметр поиска на «Текущий проект» или «Полное решение» в зависимости от ваших потребностей. Теперь выберите «Найти все». В нижней части окна « Результаты поиска» вы увидите «Соответствующие строки», которые представляют собой количество строк кода.
^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$
Этот RegEx исключает следующие пункты:
Комментарии
// 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, так что я застрял на некоторое время. Я надеюсь, что кто-то еще может найти это полезным, дайте мне знать, если у вас есть какие-либо вопросы или вам нужна помощь, чтобы заставить его работать.
Нашел этот совет: LOC с VS Найти и заменить
Не плагин, хотя, если это то, что вы ищете.
cloc - превосходная командная строка , основанная на Perl, исполняемая Windows, которая разбивает пустые строки, строки комментариев и строки исходного кода, сгруппированные по форматам файлов.
Теперь он не будет специально работать с файлом решения VS, но он может проходить по каталогам, и вы можете настроить фильтры имен файлов по своему усмотрению.
Вот пример вывода с их веб-страницы:
подскажите> cloc perl-5.10.0.tar.gz 4076 текстовых файлов. 3883 уникальных файла. 1521 файлов игнорируется. http://cloc.sourceforge.net v 1,07 T = 10,0 с (251,0 файлов / с, 84566,5 строк / с) -------------------------------------------------- ----------------------------- Языковые файлы пустые, код комментария шкала 3-го поколения. эквив -------------------------------------------------- ----------------------------- Perl 2052 110356 112521 309778 x 4,00 = 1239112,00 C 135 18718 22862 140483 x 0,77 = 108171,91 Заголовок C / C ++ 147 7650 12093 44042 x 1,00 = 44042,00 Bourne Shell 116 3402 5789 36882 x 3,81 = 140520,42 Лисп 1 684 2242 7515 х 1,25 = 9393,75 сделать 7 498 473 2044 х 2,50 = 5110,00 С ++ 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 -------------------------------------------------- ----------------------------- Сумма: 2510 142085 156406 547174 x 2,84 = 1556285,03 -------------------------------------------------- -----------------------------
Эквивалентная шкала третьего поколения - это приблизительная оценка того, сколько кода потребуется на языке третьего поколения . Не очень полезно, но все равно интересно.
choco install cloc
и тогда cloc .
в вашем решении реж. Работа выполнена!
Ответы здесь немного устарели, может быть, по сравнению с 2008 годом. Поскольку в более новых версиях Visual Studio 2010/2012 эта функция уже встроена. Таким образом, нет никаких оснований использовать какое-либо расширение или инструменты для него.
Возможность подсчета строк кода - Рассчитать метрики. С его помощью вы можете рассчитать свои метрики (LOC, индекс Maintaince, цикломатический индекс, глубина наследования) для каждого проекта или решения.
Просто щелкните правой кнопкой мыши на решении или проекте в Solution Explorer,
и выберите «Рассчитать метрики»
Позже данные для анализа и агрегирования могут быть импортированы в 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 вы можете сделать это из меню «Анализ» -> «Рассчитать метрики кода для решения», и оно даст вам счетчик строк всего вашего решения (среди прочего g )
Для будущих читателей я бы посоветовал расширение DPack для Visual Studio 2010 .
В него встроено множество утилит, включая счетчик строк, который сообщает, сколько строк пустое, код и т. Д.
Простое решение - поиск по всем файлам. Введите «*» при использовании подстановочных знаков. Который будет соответствовать всем линиям. В конце окна результатов поиска вы увидите строку вида:
Matching lines: 563 Matching files: 17 Total files searched: 17
Конечно, это не очень хорошо для больших проектов, поскольку все строки отображаются и загружаются в память для отображения в окне результатов поиска.
Ссылка:
Вы можете использовать:
Я предпочитаю OxyProject Metrics VS Addin.
Очевидно, что инструменты проще, но я чувствую себя здорово, делая это в 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}
Другой простой инструмент для VS2008 (с открытым исходным кодом): http://www.accendo.sk/Download/SourceStat.zip
Вы можете использовать Visual Studio Code Metrics PowerTool 10.0 . Это утилита командной строки, которая вычисляет несколько метрик для управляемого кода для вас (включая строки кода). Вы можете получить плагин VS 2010, который переносит инструмент в Visual Studio и делает его таким же быстрым, как выбор пункта меню и нажатие кнопки «Анализ решения».
Согласиться с Али Парр. Дополнение WndTab Line Counter является таким инструментом. http://www.codeproject.com/KB/macros/linecount.aspx
Это также хорошая идея, чтобы искать с сайта загрузки, чтобы найти некоторый связанный инструмент. http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=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 = & комментарий статьи новостей = news.1.41.0
Я придумал быстрый и грязный скрипт powershell для подсчета строк в структуре папок. Он не настолько полнофункциональный, как некоторые другие инструменты, на которые есть ссылки в других ответах, но я думаю, что этого достаточно, чтобы обеспечить грубое сравнение размера файлов кода относительно друг друга в проекте или решении.
Сценарий можно найти здесь:
Попробуй нептунер. Это также дает вам такие вещи, как пробелы, вкладки, строки комментариев в дополнение к LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip