Костенко Андрей

104
Рейтинг

Spitfire
Андрей Костенко



  •   Регистрация: 13.01.2010 (14 лет назад)

  •   Был(а) на сайте: 18.03.2015

Друзья
  • Corporate c
  • Андрей Корчак
Подписчики 3

Группы

Профессиональный разработчик

Рейтинг 104

Анализ цикломатической сложности кода

Инструменты и обработки Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m) Внешняя обработка (ert,epf) Инструментарий разработчика

Инструмент для контроля сложности написанного кода для 1С8. Пригодится разработчикам, которые заботяться о качестве своего продукта, простоте его тестирования и дальнейшей поддержке.

1 стартмани

13.12.2012    31623    213    Spitfire    31       

104

Комментарии

DevАнализ цикломатической сложности кода#26 29.10.13 12:51
(25) ildarovich, Спасибо за замечание, выложил исправленную версию.
Свой метод подсчета вхождений пришлось писать потому, что СтрЧислоВхождений не умеет искать в режиме "слово целиком", то есть, он посчитает вхождения инструкций в идентификаторы.
DevАнализ цикломатической сложности кода#24 17.12.12 16:11
(23) ManyakRus, как показывает практика, задачи класса "заставить людей что-то делать" или "заставить людей что-то делать так, как нужно" решаются другими способами. :) Это отдельная область знаний.
DevАнализ цикломатической сложности кода#17 14.12.12 19:58
(15) ildarovich, указанные вами предположения сделаны не мной, а множеством умных людей, занимающимися computer science. Аналогичные предположения делаются, когда производится любое автоматизированное тестирование - регрессионное, юнит, модульное, любое - ведь протестировать все случаи, с которыми придется столкнуться программе, невозомжно и ненужно. Потому каждый сам выбирает себе достаточное множество тестов. А эта метрика, как вы правильно сказали, помогает оценить мощность множества таких тестов. И, кстати, то, что среди разработчиков на 1С автоматическое тестирование применяется реже, чем в других технологиях, не делает нам чести. К счастью, ситуация улучшается, я могу это видеть.

Цитата
Если быть занудой, то
количество циклов в графе управления программы
обработка НЕ считает.
Это равносильно утверждению, что половина произведения катетов прямоугольного треугольника не дает нам его площади. А дает лишь.. хм.. половину произведения катетов.

К сожалению, эта метрика придумана не мной, потому я не буду здесь ее защищать. Ее полезность изучена и доказана.
Цитата
эти метрики на практике бесполезны, и интересуют только любителей больших чисел
- думаю, что это высказывание просто голословно.
в таком случае, приведите, пожалуйста, практическую ценность для разработчика числа строк или символов модуля. И объясните, что буду означать изменения этих метрик при добавлении/удалении больших комментариев или запросов.
DevАнализ цикломатической сложности кода#16 14.12.12 19:36
(13) pumbaE, если честно, я не думал о потребности анализировать изменения за определенный период. мы у себя ее используем не так. Я подумаю о внедрении такой функциональности и о внедрении отборов в дерево результатов.
DevАнализ цикломатической сложности кода#11 14.12.12 17:56
(10) ildarovich, можно хоть весь листинг привести в описании. Зачем?
И потом, обработка действительно считает цикломатическую сложость - количество циклов в графе управления программы. Если бы 1С была другой, например, многопоточной, такой простой реализации не получилось бы.

И мне бы не хотелось, что бы эта метрика оказалась в одном ряду с подсчетом количества слов или строк метода. Почему? Потому что эти метрики на практике бесполезны, и интересуют только любителей больших чисел.
DevАнализ цикломатической сложности кода#9 14.12.12 16:53
(8) pumbaE, перебрать все модули конфигурации можно через Конфигуратор-Выгрузить файлы конфигурации.
Насчет сводного отчета - конкретизируйте, пожалуйста, как вы это видите. Возможно, я добавлю в саму обработку какие-то более удобные инструменты анализа результатов анализа =)
DevАнализ цикломатической сложности кода#4 14.12.12 13:23
(1) hulio, (2) comol, коллеги, по вашим просьбам добавил описание практического применения.
вычисление ЦС дает ответ на вопрос, нужно ли уже разбить код на несколько методов, или еще нет.
DevАнализ цикломатической сложности кода#0 14.12.12 0:59
Инструмент для контроля сложности написанного кода для 1С8.
Пригодится разработчикам, которые заботяться о качестве своего продукта, простоте его тестирования и дальнейшей поддержке.
DevПростые, но интересные задачки по программированию#33 12.05.10 10:29
для первой задачи, если нужно поменять местами не числовые переменные (а произвольные двоичные данные), то можно написать так:
Код
a = a xor b;
b = b xor a;
a = a xor b;

тут xor - оператор логического исключающего ИЛИ
DevПростые, но интересные задачки по программированию#31 12.05.10 10:25
вторая задача легко пишется и без рекурсии:
Код
F_n = 1;
n_fact = 1;
i = 1;
while i<=n do
   n_fact = n_fact * i;
   F_n = F_n * n_fact;
   i = i +1;
end;
Return F_n;