К основному содержанию
A1sCode
Быстрый старт
Стандарты A1sCode · Контролируемая цена ветвления

Сложность

Как считать цикломатическую сложность, где ставить пороги и что проверять в CI.

единый контракт3 примера кодаBSL / 1С

Формула

Формуланаведите на цветной токен, чтобы увидеть его рольSTANDARD
CC = 1
  + Count(If)        // включая ElseIf
  + Count(While)
  + Count(For)
  + Count(For Each)
  + Count(Try)       // Try…Except…EndTry

«Выбор/Когда» учитывайте по количеству независимых веток.

Пороговые значения

CC Статус Действия
≤ 10 OK без действий
11–15 Warning подумать о распиле
> 15 Refactor обязательная декомпозиция

Пример функции (канон маркеров)

Пример функции (канон маркеров)наведите на цветной токен, чтобы увидеть его рольSTANDARD
// <doc>
 //   <summary>Подсчёт суммы положительных чисел в массиве</summary>   ✦
 //   <param i="1" name="Items" type="Array">Массив чисел</param>   ➤
 //   <returns>Number — сумма положительных</returns>   ⬅
 // </doc>

Функция SumPositive(Items) Экспорт   //⚙
    Сумма = 0;   //✏
    Для Каждого x Из Items Цикл   //⟳
        Если x > 0 Тогда   //⚡
            Сумма = Сумма + x;   //✏
        КонецЕсли;
    КонецЦикла;
    Возврат Сумма;   //↩
КонецФункции