Можно ли найти количество строк кода во всем решении? Я слышал о MZ-Tools, но есть ли эквивалент с открытым исходным кодом?
Как вы считаете строки кода в решении Visual Studio?
Ответ 1
Visual Studio 2010 Ultimate имеет этот встроенный модуль.
Анализ → Вычисление кодовых показателей
Ответ 2
Я нашел 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>
Зачем использовать все приложение, когда одна команда будет делать это?:)
Ответ 3
Я использовал Ctrl + Shift + F. Затем поместите a \n
в поле поиска и включите ящик с регулярными выражениями. Затем в результатах поиска в конце экрана отображается количество найденных файлов и найденные строки кода.
Ответ 4
Счетчик строк с открытым исходным кодом для VS2005, 2003 и 2002 доступен здесь:
Также обсуждается создание строки, подсчитывающей VS addin, в комплекте с кодом на Codeproject, здесь
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
Также у Slick Edit Gadgets есть отличный счетчик строк:
http://www.slickedit.com/products/slickedit
и Microsoft Visual Studio Team System 2008 содержит хороший счетчик строк.
Просто запомните хотя:
Измерение прогресса программирования по линиям кода подобно измерению прогресса самолета по массе. Билл Гейтс
Ответ 5
Нашел этот совет: LOC с VS Найти и заменить
Не плагин, хотя если это то, что вы ищете.
Ответ 6
Здесь обновление для Visual Studio 2012/2013/2015 для тех, кто хочет сделать опцию "Найти" (которую я считаю самым простым): этот RegEx найдет все непустые строки с несколькими исключениями, чтобы дать наиболее точные результаты.
Введите следующий RegEx в поле "Найти". Обязательно выберите "Использовать регулярные выражения". Измените параметр поиска на "Текущий проект" или "Цельное решение" в зависимости от ваших потребностей. Теперь выберите "Найти все". В нижней части окна "Результаты поиска" вы увидите "Matching Lines", которые являются строками кода.
^(?!(\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, поэтому я застрял с ним некоторое время. Я надеюсь, что кто-то еще найдет это полезным, сообщите мне, есть ли у вас какие-либо вопросы или вам нужна помощь, чтобы заставить его работать.
Ответ 7
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 -------------------------------------------------------------------------------
Эквивалентная шкала третьего поколения - это приблизительная оценка того, сколько кода потребуется на
Ответ 8
Ответы здесь немного устарели, может быть от vs 2008 времени. Поскольку в новых версиях Visual Studio 2010/2012 эта функция уже встроена. Таким образом, нет никаких оснований использовать какое-либо расширение или инструменты для этого.
Функция подсчета строк кода - Calculate Metrics. С его помощью вы можете рассчитать свои показатели (LOC, индекс поддержки, циклонный индекс, глубину наследования) для каждого проекта или решения.
Просто щелкните правой кнопкой мыши по решению или проекту в обозревателе решений,
и выберите "Вычислить показатели"
Более поздние данные для анализа и агрегации могут быть импортированы в Excel. Также в Excel вы можете отфильтровывать сгенерированные классы или другие шумы от ваших показателей. Эти показатели, включая строки кода LOC, могут быть собраны также во время процесса сборки и включены в отчет о построении
Ответ 9
Регулярные выражения изменились между VS2010 и 2012 годом, поэтому большинство решений для регулярного выражения здесь больше не работают
(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+
Найти все строки, которые не являются пустыми, - это не только одна скобка ('{' или '}'), а не только #include или другой препроцессор.
Используйте Ctrl - shift - f и убедитесь, что регулярные выражения включены.
Соответствующее регулярное выражение для VS 2010 и старше
^~(:[email protected]//.+)~(:[email protected]\{:[email protected])~(:[email protected]\}:[email protected])~(:[email protected]/#).+
Ответ 10
В Visual Studio Team System 2008 вы можете сделать из меню Analyze → "Calculate Metrics for Solution", и он даст вам количество строк всего вашего решения (среди прочего g)
Ответ 11
Для будущих читателей я хотел бы посоветовать расширение DPack для Visual Studio 2010.
Он получил массу встроенных утилит, включая счетчик строк, в котором указано, сколько строк пустым, код и т.д.
Ответ 12
Простым решением является поиск во всех файлах. Введите "*" при использовании подстановочных знаков. Это будет соответствовать всем строкам. В конце окна результатов поиска вы увидите строку сортировки:
Matching lines: 563 Matching files: 17 Total files searched: 17
Конечно, это не очень хорошо для больших проектов, так как все строки привязаны и загружаются в память для отправки в окне результатов поиска.
Справка:
Ответ 13
Я предпочитаю OxyProject Metrics VS Addin.
Ответ 14
Вы можете использовать:
- SCLOCCount http://www.dwheeler.com/sloccount/ - с открытым исходным кодом
- loc metrics, http://www.locmetrics.com/ - не с открытым исходным кодом, но простой в использовании
Ответ 15
Очевидно, что инструменты проще, но я чувствую себя круто, делая это в powershell:)
Этот script находит все ссылки .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}
Ответ 16
Другой простой инструмент для VS2008 (с открытым исходным кодом): http://www.accendo.sk/Download/SourceStat.zip
Ответ 17
В меню "Visual Studio 2010 Ultimate" выберите "Меню- > Анализ → " Рассчитать показатели котировки ".
Ответ 18
Вы можете использовать Visual Studio Code Metrics PowerTool 10.0. Это утилита командной строки, которая вычисляет несколько показателей для управляемого кода для вас (включая строки кода). Вы можете получить плагин VS 2010, который приносит инструмент в Visual Studio, и делает это так же быстро, как выбор пункта меню и нажатие "Анализ решения". "
Ответ 19
Согласитесь с Али Парром. Приложение WndTab Line Counter addin является таким инструментом. http://www.codeproject.com/KB/macros/linecount.aspx
Это также хорошая идея для поиска с сайта загрузки, чтобы найти соответствующий инструмент. http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=srch
Ответ 20
Вот трюк.. Он также считает файл Js.
http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx
Ответ 21
Вы можете использовать бесплатный инструмент SourceMonitor
Дает множество мер: строки кода, количество отчетов, сложность, глубину блока
Имеет графические выходы через диаграммы
Ответ 22
Вы можете использовать надстройку Counter Line Project в Visual Studio 2010. Обычно она не работает с Visual Studio 2010, но она делает с полезным .reg файлом отсюда: http://www.onemanmmo.com/index.php?cmd=newsitem&comment=news.1.41.0
Ответ 23
Я придумал быстрый и грязный powershell script для подсчета строк в структуре папок. Это не так полно, как некоторые другие инструменты, упомянутые в других ответах, но я думаю, что это достаточно хорошо, чтобы обеспечить грубое сравнение размера файлов кода относительно друг друга в проекте или решении.
script можно найти здесь:
Ответ 24
В Visual Studio 2015 перейдите в меню анализа и выберите "Вычислить метрики кода".
Ответ 25
Попробуйте нептунер. Он также дает вам вещи, такие как пробелы, вкладки, строки комментариев в дополнение к LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip