Чи можна знайти кількість рядків коду в цілому рішенні? Я чув про MZ-Tools , але чи існує еквівалент з відкритим кодом?
Чи можна знайти кількість рядків коду в цілому рішенні? Я чув про MZ-Tools , але чи існує еквівалент з відкритим кодом?
Відповіді:
У Visual Studio 2010 Ultimate є вбудований:
Аналіз → Обчислення показників коду
Я знайшов повноваження корисними для цього. Я вважаю, що 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 років доступний тут:
Тут також обговорюється створення рядка підрахунку рядків VS addin у комплекті з кодом на Codeproject
http://www.codeproject.com/KB/macros/LineCounterAddin.aspx
Також гаджети Slick Edit мають приємний лічильник ліній, тут:
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 з 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 х 1,00 = 44042,00 Борн Шелл 116 3402 5789 36882 х 3,81 = 140520,42 Lisp 1 684 2242 7515 х 1,25 = 9393,75 скласти 7 498 473 2044 х 2,50 = 5110,00 C ++ 10 312 277 2000 x 1,51 = 3020,00 XML 26 231 0 1972 х 1,90 = 3746,80 yacc 2 128 97 1549 x 1,51 = 2338,99 ЯМЛ 2 2 0 489 х 0,90 = 440,10 Пакет DOS 11 85 50 322 x 0,63 = 202,86 HTML 1 19 2 98 х 1,90 = 186,20 -------------------------------------------------- ----------------------------- Сума: 2510 142085 156406 547174 х 2,84 = 1556285,03 -------------------------------------------------- -----------------------------
Еквівалентна шкала третього покоління - це приблизна оцінка того, скільки коду він би взяв у мові третього покоління . Не страшно корисно, але все одно цікаво.
choco install cloc
і тоді cloc .
у своєму рішенні реж. Робота виконана!
Відповіді тут трохи застаріли, можливо, з часу 2008 року. Оскільки в новіших версіях Visual Studio 2010/2012 ця функція вже вбудована. Таким чином, немає ніяких причин використовувати будь-яке розширення або інструменти для цього.
Особливість підрахунку рядків коду - Обчислити показники. З його допомогою ви можете обчислити свої показники (LOC, індекс утримання, цикломатичний індекс, глибина спадкування) для кожного проекту чи рішення.
Просто клацніть правою кнопкою миші рішення або проект у Провіднику рішень,
і виберіть "Обчислити показники"
Пізніше дані для аналізу та агрегації можуть бути імпортовані в 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 VS Addin.
Очевидно, інструменти простіше, але мені здається, що це круто роблять :)
Цей скрипт знаходить усі посилання .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+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 = newsitem & коментар = новини.1.41.0
Я придумав швидкий і брудний сценарій оболонки для підрахунку рядків у структурі папок. Він майже не такий повноцінний, як деякі інші інструменти, на які йдеться в інших відповідях, але я думаю, що це досить добре, щоб забезпечити грубе порівняння розмірів файлів коду відносно один одного в проекті чи рішенні.
Сценарій можна знайти тут:
Спробуйте Neptuner. Крім того, він пропонує вам такі речі, як пробіли, вкладки, рядки коментарів, крім LoC. http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip