Как считать строки кода в решении Visual Studio?
можно ли найти количество строк кода во всем решении? Я слышал о MZ-Tools, но есть ли эквивалент с открытым исходным кодом?
25 ответов:
Я нашел 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 доступен здесь:
существует также обсуждение создания подсчета строк 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, глубина наследования) для каждого проекта или решения.
просто щелкните правой кнопкой мыши на решение или проект в решении Исследователь,
и выбрать "измерения"
более поздние данные для анализа и агрегации могут быть импортированы в 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
конечно, это не очень хорошо для больших проектов, так как все строки обрабатываются и загружаются в память для отображения в окне результатов поиска.
ссылки:
вы могли бы использовать:
- SCLOCCount http://www.dwheeler.com/sloccount/ - Open source
- loc метрики,http://www.locmetrics.com/ - не с открытым исходным кодом, но простой в использовании
предпочитаю Метрики 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 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 для подсчета строк в структуре папок. Это не так полнофункционально, как некоторые другие инструменты, упомянутые в других ответах, но я думаю, что этого достаточно, чтобы обеспечить грубое сравнение размера файлов кода относительно друг друга в проекте или решении.
скрипт можно найти здесь:
попробовать neptuner. Он также дает вам такие вещи, как пробелы, вкладки, строки комментариев в дополнение к LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip