Посчет числа строк в исходниках
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Посчет числа строк в исходниках
Доброго времени суток!
Поставлена задача - подсчитать число строк во всех исходниках огромного проекта. Подскажите способрешения задачи.
На выходе должен получить либо файл с "деревом" каталогов сорцов и количеством строк для каждой папки, либо еще какой-нибудь вариант.
Вообще кто-нибудь сталктвался с подсчетом строк в большом количестве исходных файлов? На форуме посмотрел -подходящего wdx плагина не нашел. Наверное придется писать wcx плагин для решения задачи.
Хочется узнать, может быть существуют уже готовые решения этой проблемы..
Поставлена задача - подсчитать число строк во всех исходниках огромного проекта. Подскажите способрешения задачи.
На выходе должен получить либо файл с "деревом" каталогов сорцов и количеством строк для каждой папки, либо еще какой-нибудь вариант.
Вообще кто-нибудь сталктвался с подсчетом строк в большом количестве исходных файлов? На форуме посмотрел -подходящего wdx плагина не нашел. Наверное придется писать wcx плагин для решения задачи.
Хочется узнать, может быть существуют уже готовые решения этой проблемы..
http://www.anycount.com/
Free 30-day Trial
Нашел отличное дополнение к VS. Line Counter By Jon Rista http://www.codeproject.com/KB/macros/Li ... Addin.aspx
Космическая вещь.
А к TotalCommander напишу wdx плагин для просмотра статистики по конкретному файлу
Космическая вещь.
А к TotalCommander напишу wdx плагин для просмотра статистики по конкретному файлу
prog_san
Используем Script Content Plugin:
Скорость не самая высокая, но работает 
Используем Script Content Plugin:
Код: Выделить всё
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
content = Result
Set FSO = Nothing
Function Result
If FSO.FileExists(filename) Then
Result = LinesInFile(filename)
ElseIf FSO.FolderExists(filename) Then
Result = LinesInFolder(filename)
End If
End Function
Function LinesInFile(byVal pFile)
Dim OTF
On Error Resume Next
Set OTF = FSO.OpenTextFile(pFile, ForReading, False)
If Err.Number = 0 Then
OTF.ReadAll
LinesInFile = OTF.Line - 1
OTF.Close
Else
LinesInFile = 0
End If
On Error GoTo 0
Set OTF = Nothing
End Function
Function LinesInFolder(byVal pFolder)
Dim l, lf, lff
l = 0
On Error Resume Next
Set lff = FSO.GetFolder(pFolder)
If Err.Number = 0 Then
For Each lf In lff.Files
l = l + LinesInFile(lf)
Next
For Each lf In lff.SubFolders
l = l + LinesInFolder(lf)
Next
LinesInFolder = l
Else
LinesInFolder = 0
End If
Set lff = Nothing
End Function
Последний раз редактировалось Batya Чт мар 05, 2009 13:58, всего редактировалось 2 раза.
Нет, я не сплю. Я просто медленно моргаю.
Попробуй вот так:Batya писал(а):Скорость не самая высокая
Код: Выделить всё
Function LinesInFile(pFile)
Dim OTF
On Error Resume Next
Set OTF = FSO.OpenTextFile(pFile, ForReading, False)
If Err.Number = 0 Then
OTF.ReadAll
LinesInFile = OTF.Line
OTF.Close
Else
LinesInFile = 0
End If
End FunctionОбычно - да. Времена компьютеров с памятью в 4 МБ ушли в прошлое. Кроме того в каждый конкретный момент времени считанным в память является только один файл (кстати я не сохраняю содержимое файла в переменную). А если говорить об исходниках, то врядли кто-то станет работать с гигантскими файлами листингов, проект обычно разбивается на некоторое количество более мелких файлов.
А вообще нужно просто взять и попробовать, от теоретизирования тут мало толку.
А вообще нужно просто взять и попробовать, от теоретизирования тут мало толку.
Написал wcx плагин.
http://mhtunpack.narod.ru/wcx_LineCount-0.2.zip
Работает шустро, правда пока только для C и С++ проектов (анализируются файлы .c, .cpp, .h)
Плагин работает только с папками - выбираешь папку проекта, создаешь архив типа "line"(плагин вешается на этот тип) и архивируешь. Если необходима подробная статистика по подпапкам проекта - выбираешь галочку "recursively pack subdirectories". На выходе текстовый файл со статистикой проекта:
http://mhtunpack.narod.ru/wcx_LineCount-0.2.zip
Работает шустро, правда пока только для C и С++ проектов (анализируются файлы .c, .cpp, .h)
Плагин работает только с папками - выбираешь папку проекта, создаешь архив типа "line"(плагин вешается на этот тип) и архивируешь. Если необходима подробная статистика по подпапкам проекта - выбираешь галочку "recursively pack subdirectories". На выходе текстовый файл со статистикой проекта:
Код: Выделить всё
Files Total Lines Code Lines Comments Empty Lines Ration % Name
5 928 495 299 177 53 LineCount