Каталог решений - Подсчет числа строк с кодом, с комментариями (и т.п.) в конфигурации

Подсчет числа строк с кодом, с комментариями (и т.п.) в конфигурации

Подсчет числа строк с кодом, с комментариями (и т.п.) в конфигурации

В наличии

Если вам требуется для вашей конфигурации по-быстрому подсчитать количество строк с кодом, количество строк с объявлением процедур и функций, количество строк с комментариями и т.п., то вы можете использовать предлагаемый код.
Надеюсь, кому-нибудь пригодится.
Тестировалось на платформе 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;	
		КонецЕсли;	
	КонецЕсли;	
	
КонецПроцедуры	

 

На выходе программы получим результат:

 

has been added to your cart:
Оформление заказа