Подсчет числа строк с кодом, с комментариями (и т.п.) в конфигурации
Если вам требуется для вашей конфигурации по-быстрому подсчитать количество строк с кодом, количество строк с объявлением процедур и функций, количество строк с комментариями и т.п., то вы можете использовать предлагаемый код.
Надеюсь, кому-нибудь пригодится.
Тестировалось на платформе 1С:Предприятие 8.3 (8.3.12.1567) на обычных формах.
- Описание
- Подробнее
Описание
Для презентации мне потребовалось подсчитать количество используемых в конфигурации объявлений процедур и функций, количество строк с кодом. Прям точные значения мне не требовались. Главное было отразить тенденции роста и т.п.
Для подсчета вы можете сделать обработку (как я, либо воспользоваться любой консолью кода). Я свою обработку не выкладываю, т.к. код очень прост и любой разберётся в нём.
Итак, приступаем. Всё чрезвычайно просто.
Первое, с чего нужно начать — в режиме конфигуратора выгрузить конфигурацию в файлы в какой-нибудь каталог. См. Рис.1.
Второе — читаем все файлы "*.bsl" из этого каталога в массив. В этих (кодовых) файлах и лежит текст программ.
Третье — последовательно построчно читаем файлики с предыдущего шага и считаем, что там нам нужно.
Четвертое — просто выводим результат.
Процедура КнопкаВыполнитьНажатие(Кнопка)
МассивФайлов = НайтиФайлы(КаталогСФайлами, "*.bsl", Истина);
МойРезультат = Новый Структура;
МойРезультат.Вставить("СчКодовыхФайлов", 0);
МойРезультат.Вставить("СчОбъявленийПроцедурФункций", 0);
МойРезультат.Вставить("СчКомментариев", 0);
МойРезультат.Вставить("СчСтрокКода", 0);
МойРезультат.Вставить("СчПустыхСтрок", 0);
МойРезультат.Вставить("СчВсегоСтрок", 0);
Для Каждого Файл Из МассивФайлов Цикл
ПросчитатьФайл(Файл.ПолноеИмя, МойРезультат);
КонецЦикла;
Для Каждого Показатель Из МойРезультат Цикл
Сообщить(Показатель.Ключ + ": " + Формат(Показатель.Значение, "ЧН=0; ЧГ=0"));
КонецЦикла;
КонецПроцедуры
Процедура ПросчитатьФайл(ПолноеИмяФайла, МойРезультат)
МойРезультат["СчКодовыхФайлов"] = МойРезультат["СчКодовыхФайлов"] + 1;
Текст = Новый ЧтениеТекста(ПолноеИмяФайла, КодировкаТекста.ANSI);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки
ПросчитатьСтроку(Стр, МойРезультат);
Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
КонецПроцедуры
Процедура ПросчитатьСтроку(Стр, МойРезультат)
МойРезультат["СчВсегоСтрок"] = МойРезультат["СчВсегоСтрок"] + 1;
ТекСтрока = СокрЛП(Стр);
Если ТекСтрока = "" Тогда
МойРезультат["СчПустыхСтрок"] = МойРезультат["СчПустыхСтрок"] + 1;
Иначе
НачСтроки = Лев(СокрЛП(Стр), 2);
Если НачСтроки = "//" Тогда
МойРезультат["СчКомментариев"] = МойРезультат["СчКомментариев"] + 1;
ИначеЕсли ВРег(НачСтроки) = "ФУ" ИЛИ ВРег(НачСтроки) = "ПР" Тогда
МойРезультат["СчОбъявленийПроцедурФункций"] = МойРезультат["СчОбъявленийПроцедурФункций"] + 1;
Иначе
МойРезультат["СчСтрокКода"] = МойРезультат["СчСтрокКода"] + 1;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
На выходе программы получим результат: