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 | обязательная декомпозиция |
// <doc>
// <summary>Подсчёт суммы положительных чисел в массиве</summary> ✦
// <param i="1" name="Items" type="Array">Массив чисел</param> ➤
// <returns>Number — сумма положительных</returns> ⬅
// </doc>
Функция SumPositive(Items) Экспорт //⚙
Сумма = 0; //✏
Для Каждого x Из Items Цикл //⟳
Если x > 0 Тогда //⚡
Сумма = Сумма + x; //✏
КонецЕсли;
КонецЦикла;
Возврат Сумма; //↩
КонецФункции
for each Function in Module:
cc = calc_cc(Function.Body)
if has_doc(Function):
cc_tag = read_cc_from_doc(Function.Doc)
if cc_tag != cc:
warn("CC mismatch", suggest=cc)
if cc > 15:
fail_build("CC > 15 in " + Function.Name)