Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CC and CCog as Quality Metrics

CC and CCog as Quality Metrics

Avatar for Yuri Reis

Yuri Reis

April 08, 2025
Tweet

More Decks by Yuri Reis

Other Decks in Technology

Transcript

  1. definição Métricas para medir a complexidade Ajuda a estimar a

    dificuldade de testar e manter um código Indica o número mínimo de testes necessários para cobrir os caminhos possíveis Relacionada diretamente à estrutura de controle do código Agnóstico a linguagem
  2. linha do tempo 1970 1980 1990 2000 2010 2020 ‘76

    • Artigo "A Complexity Measure", publicado na IEEE Transactions on Software Engineering • Visa medir o número de caminhos lineares independentes em um programa • Relacionada diretamente à estrutura de controle do código criado por: Thomas Mccabe - complexidade ciclomática
  3. linha do tempo 1970 1980 1990 2000 2010 2020 •

    Surge para complementar a ciclomática • Intenção é refletir a dificuldade real de entendimento do código • Foco em saltos mentais (goto, break, continue) e níveis de aninhamento criado por: complexidade cognitiva - ‘17 SonarSource Team
  4. regras avaliado em estrutura de controle de fluxo - sujeitas

    a incremento por aninhamento exemplos: if, else,for, while, do~while, catch, switch, etc TIPOS { estrutural fundamental híbrida { { { avaliado em declarações não sujeitas a incremento por aninhamento exemplos: and, or, goto, recursão avaliado em estrutura de controle de fluxo que não estão sujeitas a incremento: exemplo: else~if
  5. regras Complexidade Ciclomática: 1 ponto, inclusive para cada case de

    um switch. não contabiliza else Complexidade Cognitiva: 1 ponto ou mais a depender do aninhamento. Não contabiliza pontos para cada case de um switch, porém conta escopos de else PONTUAÇÃO { estrutural fundamental híbrida { { { 1 ponto tanto para CC quanto para CCog Para a CCog, pode ser ignorado a depender da abreviação ou reduzida por ser sequencial Complexidade Ciclomática: 1 ponto Complexidade Cognitiva: 1 ponto ou mais a depender do aninhamento
  6. exemplo #2 // cognitive complexity = 11pts // +1 //

    +1 +1 nested lvl // +1 +2 nested lvl // +1 +1 nested lvl // +1 no matter how nested // +1 no matter how nested // +1 no matter how nested
  7. ✅ Resumo 5W2H – Complexidade Ciclomática (CC) e Cognitiva (CCog)

    Elemento Resumo What CC mede os caminhos lógicos do código; CCog mede o esforço mental para compreendê-lo. Why Para identificar códigos complexos, priorizar testes e reduzir riscos de erros e retrabalho. Where Em qualquer parte do código-fonte: funções, métodos, classes ou módulos. When Durante code reviews, planejamento de testes, automação ou refatorações. Who Devs, QAs, analistas de qualidade, líderes técnicos e engenheiros de software. How Com ferramentas como radon, lizard, SonarQube, ou análise manual simples. How much Gratuito com ferramentas open-source ou IDEs; pago com plataformas como SonarQube Enterprise.