Pular para o conteúdo principal

Nível Máximo de Aninhamento

Nível Máximo de Aninhamento refere-se ao nível máximo de blocos aninhados/estruturas de controle que estão presentes em um método (ou função). Código com um nível profundo de aninhamento é frequentemente complexo e difícil de manter.

Geralmente, os blocos com instruções if, else, else if, do, while, for, switch, catch, etc são parte dos loops aninhados.

Exemplo de configuração

flutterando_metrics:
...
metrics:
...
maximum-nesting-level: 5
...

Exemplo

void visitBlock(Block node) {
final nestingNodesChain = <AstNode>[];

AstNode astNode = node;
do {
if (astNode is Block &&
(astNode?.parent is! BlockFunctionBody ||
astNode?.parent?.parent is FunctionExpression ||
astNode?.parent?.parent is ConstructorDeclaration)) {
nestingNodesChain.add(astNode);
}

astNode = astNode.parent;
} while (astNode.parent != _functionNode);

if (nestingNodesChain.length > _deepestNestingNodesChain.length) {
_deepestNestingNodesChain = nestingNodesChain;
}

super.visitBlock(node);
}

Nível Máximo de Aninhamento para a função do exemplo é 3.