A qualidade do código é mensurável. Essa afirmação parece óbvia até que você tente responder à pergunta que um CTO faz antes de adquirir um produto de software, ou que um líder técnico faz antes de se comprometer com um programa de refatoração: como saber se o código é bom? "Ele funciona" não é uma resposta. "A equipe o revisou" não é uma resposta. A resposta exige medições objetivas aplicadas de forma consistente: complexidade ciclomática por função, índice de manutenibilidade por módulo, densidade de defeitos por mil linhas, cobertura de testes por componente, rotatividade de código por arquivo por sprint. Cada um desses itens representa um número. Números podem ser analisados, comparados e usados para tomar decisões.
A compreensão do código começa aqui.
SMART TS XL Calcula métricas de qualidade em todos os idiomas e plataformas do seu ambiente.
Clique aquiO desafio reside no fato de que as métricas de qualidade de código não são intercambiáveis nem universalmente interpretáveis. Um alto índice de manutenibilidade em um programa COBOL significa algo diferente da mesma pontuação em um script Python. Uma complexidade ciclomática de 15 é aceitável em uma máquina de estados bem testada, mas representa um problema sério em uma função de validação. Uma densidade de defeitos de 2 bugs por KLOC é excelente em programação de sistemas e alarmante em uma aplicação embarcada crítica para a segurança. Para tornar as métricas úteis, é necessário compreender o que cada uma mede, o que as influencia positivamente ou negativamente e quais limites são apropriados para o contexto. O restante deste artigo fornece exatamente isso.
O que é qualidade de código?
A qualidade do código é o grau em que o código-fonte satisfaz um conjunto de propriedades mensuráveis que o tornam correto, de fácil manutenção, legível, eficiente, seguro e testável. Nenhuma propriedade isolada define a qualidade. O código que funciona corretamente, mas é ilegível, tem sua qualidade degradada a cada alteração, pois os desenvolvedores que não conseguem entendê-lo não podem modificá-lo com segurança. O código legível, mas não testado, contém defeitos ocultos. O código testado, mas estruturalmente complexo, acumula mais defeitos à medida que cresce, porque a complexidade multiplica a probabilidade de que qualquer alteração cause problemas inesperados.
Uma definição formal da norma ISO/IEC 25010 identifica oito características de qualidade de software: adequação funcional, eficiência de desempenho, compatibilidade, usabilidade, confiabilidade, segurança, manutenibilidade e portabilidade. Especificamente para o código-fonte, as características que podem ser medidas diretamente a partir do próprio código, em vez do comportamento em tempo de execução, são manutenibilidade, confiabilidade (aproximada por métricas de defeitos e complexidade), segurança (via análise estática) e adequação funcional (via cobertura de testes). As demais características exigem a execução do código para serem medidas. Portanto, as métricas de qualidade de código abrangem um subconjunto definido e importante da qualidade de software, e não sua totalidade.
Por que a qualidade do código é importante
As equipes técnicas sabem por que a qualidade do código é importante. Para as partes interessadas do negócio e para as equipes que precisam justificar isso internamente, a conexão se dá por meio de custos e tempo. Estudos da McKinsey e do Consortium for IT Software Quality (CISQ) mostram consistentemente que os desenvolvedores gastam entre 30% e 40% do seu tempo resolvendo problemas técnicos existentes em vez de desenvolver novas funcionalidades. A baixa qualidade do código é o mecanismo pelo qual a dívida técnica se acumula: cada defeito não detectado precocemente, cada função mais complexa do que o necessário, cada bloco de lógica duplicado que precisa de manutenção separada aumenta o custo da próxima alteração. A alta qualidade do código reduz esse custo continuamente, acumulando-se ao longo da vida útil do sistema.
Métricas de Qualidade de Código: Referência Completa
As métricas abaixo abrangem todas as principais categorias de medição da qualidade do código. Para cada métrica, são explicadas a definição, o método de medição, a faixa aceitável e a interpretação. Os limites na tabela abaixo refletem referências da indústria amplamente citadas; equipes em ambientes críticos para a segurança ou regulamentados devem aplicar limites mais rigorosos.
Métricas de Complexidade
Complexidade ciclomática Mede o número de caminhos linearmente independentes através de uma função ou método. Foi introduzida por Thomas McCabe em 1976 e continua sendo a métrica de complexidade mais utilizada. A fórmula conta os pontos de decisão, if, else if, switch casos, condições de loop, catch blocos e operadores condicionais, e soma 1. Uma função sem ramificações tem complexidade ciclomática de 1.
| Complexidade ciclomática | Interpretação |
|---|---|
| 1-5 | Simples e fácil de testar |
| 6-10 | Moderado, administrável |
| 11-20 | Complexo, os testes se tornam difíceis |
| 21-50 | Risco muito elevado, recomenda-se a refatoração. |
| 50+ | Não testável, com quase certeza de conter defeitos. |
A alta complexidade ciclomática está fortemente correlacionada com a densidade de defeitos. Pesquisas publicadas no IEEE Transactions on Software Engineering constataram que funções com complexidade ciclomática acima de 10 apresentam taxas de defeitos significativamente maiores do que funções mais simples. análise de complexidade ciclomática Em bases de código legadas, a preocupação é encontrar funções que acumularam lógica de decisão ao longo de anos de manutenção sem que ninguém jamais tenha refatorado a estrutura geral.
Complexidade NPath A complexidade NPath contabiliza o número de caminhos de execução únicos em uma função, incluindo caminhos criados por condições aninhadas e loops. Enquanto a complexidade ciclomática contabiliza os desvios linearmente, a complexidade NPath os multiplica: uma função com três blocos if-else sequenciais tem uma complexidade ciclomática de 4, mas uma complexidade NPath de 8, porque cada condição pode ser verdadeira ou falsa independentemente. A complexidade NPath cresce exponencialmente com o aninhamento. Um valor acima de 200 indica uma função que exigiria mais casos de teste do que qualquer equipe pode realisticamente escrever.
Complexidade Cognitiva Foi introduzido pelo SonarSource e mede a dificuldade de compreensão do código, em vez da quantidade de caminhos que ele contém. Ele penaliza o aninhamento mais severamente do que o ramificação linear: um if dentro de um while dentro de outro if pontuações superiores a três sequenciais if Declarações com a mesma complexidade ciclomática. A complexidade cognitiva está mais alinhada com a dificuldade real que os desenvolvedores encontram ao ler o código. Uma complexidade cognitiva acima de 15 por método geralmente é sinalizada para revisão; acima de 25, indica uma função que a maioria dos desenvolvedores achará genuinamente difícil de entender.
Métricas Halstead Halstead deriva uma família de medidas a partir de quatro contagens no código-fonte: operadores distintos (n1), operandos distintos (n2), total de operadores (N1) e total de operandos (N2). A partir dessas medidas, Halstead calcula:
- Volume (N × log2(n)): o tamanho da implementação em termos de conteúdo de informação
- Dificuldade (n1/2 × N2/n2): uma estimativa da dificuldade de escrever ou entender o código.
- Esforço (Volume × Dificuldade): o esforço mental total estimado para implementar ou compreender o código.
As métricas de Halstead são particularmente úteis para comparar funções de complexidade ciclomática semelhante, a fim de determinar qual delas é mais difícil de entender. Uma função com 10 ramificações sobre variáveis claramente nomeadas tem menor dificuldade de Halstead do que uma com 10 ramificações sobre índices computados e identificadores de um único caractere.
Métricas de Manutenibilidade
Índice de Manutenção É uma métrica composta originalmente desenvolvida por Paul Oman e Jack Hagemeister e posteriormente adotada pelo Microsoft Visual Studio como sua medida padrão de manutenibilidade. Ela combina o volume de Halstead, a complexidade ciclomática e o número de linhas de código em uma única pontuação.
A fórmula do Visual Studio gera uma pontuação de 0 a 100:
| Índice de Manutenção | NOTA |
|---|---|
| 20-100 | Sustentável (verde) |
| 10-19 | Necessidade moderada de manutenção (amarelo) |
| 0-9 | Difícil de manter (vermelho) |
O índice de manutenibilidade é uma estatística resumida. Ele é mais útil para identificar valores discrepantes, arquivos ou módulos que pontuam na zona vermelha, em vez de para comparações detalhadas entre módulos na zona verde. Em Python, o radon A biblioteca calcula o índice de manutenibilidade diretamente. No Visual Studio, ele aparece na janela Métricas de Código. análise de código estático Em plataformas, o índice de manutenibilidade é normalmente uma das saídas padrão, juntamente com a complexidade ciclomática e o número de linhas de código.
Linhas de código (LOC) e KLOC Meça o tamanho da base de código em linhas ou milhares de linhas. O número de linhas de código (LOC, na sigla em inglês) por si só não informa nada sobre a qualidade, mas fornece denominadores essenciais para outras métricas: densidade de defeitos (bugs por mil linhas de código), densidade de comentários (comentários por linha de código) e densidade de testes (asserções de teste por linha de código). O LOC também dimensiona o custo da complexidade: uma função de 500 linhas com complexidade ciclomática de 20 é um problema muito maior do que uma função de 50 linhas com a mesma complexidade.
Mudança de código A taxa de alteração do código ao longo do tempo é medida em linhas adicionadas, linhas excluídas e linhas modificadas por arquivo por unidade de tempo. Uma alta taxa de alteração do código indica instabilidade: o código que muda frequentemente pode estar respondendo a um projeto que não era correto desde o início, a requisitos instáveis ou a bugs que exigem correções constantes. Uma pesquisa da Microsoft descobriu que os arquivos nos 10% com maior taxa de alteração continham cinco vezes mais defeitos do que os arquivos com baixa taxa de alteração. Monitorar a taxa de alteração do código juntamente com as taxas de defeitos revela se as mudanças frequentes estão melhorando a qualidade ou gerando novos problemas.
Métricas de cobertura de código
Cobertura de testes unitários A cobertura de linha representa a porcentagem de linhas, ramificações ou condições no código-fonte que são executadas pelos testes unitários. A forma mais significativa é a cobertura de ramificação: se cada decisão no código pode ser alcançada por pelo menos um teste, tanto com resultado verdadeiro quanto falso. A cobertura de linha é mais fácil de manipular; um teste que executa todas as linhas sem verificar nada atinge 100% de cobertura de linha e não detecta nenhuma falha.
Padrões de referência do setor para cobertura de testes unitários:
- Abaixo de 50%: inadequado, a maioria dos defeitos não será detectada pelos testes.
- 50-75%: moderado, principais caminhos cobertos, casos extremos provavelmente não foram omitidos.
- 75-90%: bom para a maioria dos códigos de aplicação.
- Acima de 90%: apropriado para sistemas de segurança crítica ou de alta confiabilidade.
Cobertura de código em aplicações críticas para a segurança Segue padrões mais rigorosos. As normas DO-178C para software de aviação e IEC 61508 para segurança funcional especificam requisitos de cobertura (cobertura MC/DC para os níveis de criticidade mais altos) que vão além do que os testes unitários padrão alcançam. A melhoria da qualidade do código em aplicações críticas para a segurança exige ferramentas de cobertura que rastreiem a cobertura de condição/decisão e possam produzir as evidências formais exigidas pelas autoridades de certificação.
Densidade de teste A cobertura complementa a análise, medindo o número de asserções de teste em relação ao tamanho do código de produção. Alta cobertura com baixa densidade de testes pode indicar testes que executam código sem verificar o comportamento de forma significativa. Alta densidade de testes com baixa cobertura indica testes concentrados em uma pequena parte da base de código.
Métricas de defeitos
Densidade de insetos (também chamada de Densidade de Defeitos) é o número de defeitos confirmados por mil linhas de código (KLOC). É a medida quantitativa mais direta da correção do código. Benchmarks da indústria, da CISQ, indicam que softwares comerciais prontos para uso apresentam, em média, de 15 a 50 defeitos por KLOC antes dos testes; após os testes e o lançamento, softwares comerciais de alta qualidade normalmente apresentam menos de 1 defeito por KLOC.
Resultados da Análise Estática densidade aproximada de defeitos antes que os defeitos sejam confirmados por meio de testes ou uso em produção. Ferramentas como SonarQube, Checkmarx e SMART TS XL Analisar a base de código em busca de padrões associados a classes de defeitos e vulnerabilidades conhecidas, gerando uma contagem de problemas potenciais categorizados por gravidade. A proporção de problemas críticos e bloqueadores em relação às linhas de código fornece um sinal precoce da qualidade do código antes mesmo de ele chegar à fase de testes.
Densidade de Cheiro de Código A análise contabiliza a presença de antipadrões, código duplicado, funções excessivamente longas, acoplamento excessivo entre classes, inveja de funcionalidades e objetos onipresentes, por mil linhas de código (KLOC). Os "code smells" não causam falhas imediatas, mas preveem defeitos futuros e custos de manutenção. Uma base de código com alta densidade de "code smells" é aquela em que o custo de cada alteração futura é elevado, pois cada alteração precisa lidar com os problemas estruturais acumulados.
Métricas de legibilidade e estilo
Densidade de comentários é a proporção de linhas de comentário em relação às linhas de código. Os intervalos ideais variam de acordo com a linguagem e a convenção da equipe, mas normalmente ficam entre 10% e 30%. Abaixo de 10% pode indicar código insuficientemente documentado; acima de 50% pode indicar código tão complexo que requer explicações extensas de lógica não óbvia. A qualidade dos comentários importa mais do que a quantidade: um comentário que reformula o que o código faz (// increment i by 1) não acrescenta nada, enquanto um comentário que explica por que um algoritmo específico foi escolhido agrega valor significativo.
Conformidade com as convenções de nomenclatura Mede a porcentagem de identificadores (variáveis, funções, classes) que estão em conformidade com as convenções de nomenclatura do projeto. Ferramentas automatizadas podem impor convenções de nomenclatura como parte da configuração de linting. A consistência na nomenclatura é uma das melhorias de legibilidade de maior impacto, pois permite que os desenvolvedores prevejam a finalidade de um identificador apenas pelo seu nome, reduzindo a carga cognitiva da leitura de código desconhecido.
Taxa de duplicação de código Mede a porcentagem do código-fonte que está duplicada em vários locais. Duplicações acima de 5% geralmente são sinalizadas. Código duplicado multiplica o esforço de manutenção: um bug na lógica duplicada precisa ser encontrado e corrigido em cada cópia, e as alterações de comportamento precisam ser aplicadas de forma consistente em todas as cópias. A duplicação também mascara o tamanho real do código-fonte: um sistema que aparenta ter 100,000 linhas pode conter 40,000 linhas de lógica original e 60,000 linhas de cópias.
Métricas de segurança e dívida técnica
Índice de dívida técnica A SonarQube define dívida técnica como a razão entre o custo estimado de correção e o custo estimado de desenvolvimento do código-fonte. Uma taxa de dívida técnica inferior a 5% é considerada um código-fonte limpo; acima de 20% indica um acúmulo significativo de dívida técnica que poderá atrasar consideravelmente o desenvolvimento futuro.
Densidade de pontos de acesso de segurança Contabiliza o número de pontos críticos de segurança, padrões de código que exigem revisão de segurança (não vulnerabilidades confirmadas), por mil linhas de código (KLOC). Exemplos incluem consultas SQL sem parâmetros, uso de funções criptográficas obsoletas e tratamento de entradas não validadas. Ferramentas de análise estática identificam esses padrões e os apresentam como itens que exigem revisão de segurança manual.
Densidade de vulnerabilidade Contabiliza as vulnerabilidades de segurança confirmadas por KLOC (mil linhas de código), geralmente categorizadas pela gravidade CVSS. Essa métrica é mais relevante no contexto de auditorias de segurança pós-lançamento ou em sistemas de monitoramento contínuo de segurança.
Como medir a qualidade do código: uma abordagem prática
Medir a qualidade do código não é uma ação isolada, mas uma prática contínua incorporada ao fluxo de trabalho de desenvolvimento. Uma abordagem pragmática em quatro fases funciona bem para equipes que partem de uma base de código sem medições prévias.
Fase 1: Estabelecer uma linha de base. Antes de fazer qualquer alteração, execute uma análise estática completa em todo o código-fonte. Registre os valores atuais da distribuição de complexidade ciclomática, índice de manutenibilidade por arquivo, densidade de defeitos, cobertura e taxa de duplicação. Essa linha de base é o ponto de partida para todas as medições futuras. Sem uma linha de base, não é possível determinar se as alterações estão melhorando ou piorando a qualidade.
Fase 2: Definir os limiares. Estabeleça limites aceitáveis para cada métrica, adequados ao contexto. Um aplicativo web comercial e um dispositivo médico de segurança crítica têm limites apropriados diferentes. Documente esses limites nos padrões de qualidade do projeto e torne-os visíveis para toda a equipe.
Fase 3: Integrar ao CI/CD. Configure o pipeline de CI para calcular métricas-chave em cada commit ou pull request. Sinalize alterações que levem uma métrica para fora do intervalo aceitável. Bloqueie merges que introduzam código novo com complexidade ciclomática acima do limite, que reduzam a cobertura abaixo do limite ou que introduzam resultados críticos em análises estáticas. Isso transforma os limites das métricas de diretrizes em padrões obrigatórios.
Fase 4: Analisar tendências, não instantâneos. Uma única leitura de métrica é informativa; uma tendência é acionável. A taxa de alterações de código em ascensão em um módulo específico, a cobertura em queda ao longo do ciclo de lançamento ou o índice de manutenibilidade em queda para um arquivo específico, tudo isso sinaliza problemas que uma medição pontual pode não detectar. Analise as tendências das métricas em cada retrospectiva de sprint.
Métricas de Qualidade de Código em Contextos Empresariais, Ágeis e de Segurança Crítica
Métricas de Qualidade de Código no Desenvolvimento Ágil
As equipes ágeis enfrentam um desafio específico com as métricas de qualidade de código: a ênfase na entrega de software funcional em ciclos curtos pode gerar pressão para lançar o produto antes que os problemas de qualidade sejam resolvidos. A solução não é abandonar as métricas, mas sim incluí-las na definição de "concluído". Uma história não está completa quando a funcionalidade funciona; ela está completa quando a funcionalidade funciona e o novo código atende aos limites de qualidade da equipe.
Os indicadores de desempenho em contextos ágeis, métricas que preveem problemas futuros antes que eles se manifestem, incluem a taxa de rotatividade de código, a nova dívida técnica introduzida por sprint e a tendência na contagem de descobertas de análises estáticas por versão. Os indicadores de resultado, métricas que medem os resultados já produzidos, incluem a densidade de defeitos encontrados em testes, o tempo gasto em manutenção versus novas funcionalidades e a taxa de incidentes em produção por versão.
Qualidade do código para due diligence técnica
A due diligence técnica em transações de fusões e aquisições, seleção de fornecedores e processos de aquisição de sistemas exige uma avaliação estruturada da qualidade do código em toda a base de código. As métricas mais importantes nesse contexto são:
- Distribuição do índice de manutenibilidadeQual a porcentagem do código-fonte que se enquadra nas zonas vermelha, amarela e verde?
- Índice de dívida técnicaQual é o custo estimado de remediação em relação ao custo de desenvolvimento?
- Densidade de defeitosQuantos defeitos conhecidos existem por KLOC e como isso se compara aos padrões da indústria?
- Cobertura de testeQual a porcentagem do código-fonte coberta por testes automatizados e em que nível (linha, ramificação, condição)?
- Saúde da dependênciaQuantas dependências externas existem, quantas estão desatualizadas ou abandonadas e qual o grau de acoplamento da arquitetura?
- Duplicação de códigoQual a fração do código-fonte que está duplicada, indicando o risco de manutenção?
Conforme analisado no contexto de Análise de impacto para avaliação de código empresarialPara uma due diligence precisa, é essencial entender não apenas a pontuação de cada componente em métricas de qualidade, mas também como os componentes dependem uns dos outros: um módulo isolado de baixa qualidade pode representar um custo de remediação administrável, enquanto o mesmo módulo no centro de um grafo de dependências complexo representa um risco muito maior.
Qualidade de código em aplicações críticas de segurança e fintech
Aplicações críticas para a segurança em aviação, indústria automotiva, dispositivos médicos e controle industrial exigem padrões de qualidade de código que vão além do software comercial típico. Principais diferenças:
- Os limites de complexidade ciclomática são normalmente definidos em 10 ou menos, e as exceções requerem justificativa formal.
- Os requisitos de cobertura utilizam MC/DC (Cobertura de Condição/Decisão Modificada) em vez de cobertura de linha ou filial.
- A análise estática deve ser realizada com ferramentas certificadas e as violações devem ser documentadas e resolvidas ou formalmente aceitas.
- A rotatividade de código é monitorada como um indicador de segurança: altas taxas de alteração em módulos críticos para a segurança desencadeiam revisão e revalidação adicionais.
As aplicações fintech enfrentam pressões semelhantes por parte dos quadros regulatórios. O PCI DSS exige padrões de codificação segura e processos de revisão de código. A conformidade com a SOX para sistemas de relatórios financeiros exige rastreabilidade documentada desde os requisitos até os testes, passando pelo código. As métricas de qualidade de código fornecem evidências objetivas de que esses processos estão funcionando: relatórios de cobertura comprovam a existência de testes, relatórios de análise estática comprovam a verificação de padrões de vulnerabilidade conhecidos e relatórios de complexidade demonstram que os revisores conseguiram avaliar o código de forma razoável.
Métricas de qualidade de código por linguagem
Métricas de qualidade de código Python pode ser calculado usando radon (índice de complexidade e manutenibilidade ciclomática), pylint (problemas de código e violações de estilo), coverage.py (cobertura de teste), bandit (questões de segurança), e mypy or pyright (correção de tipo). O índice de manutenibilidade em radon Utiliza uma fórmula Halstead modificada e calibrada para Python. A nota A corresponde a valores acima de 20, a nota B a valores entre 10 e 20, e a nota C a valores abaixo de 10.
Qualidade do código RPG No IBM i, são necessárias ferramentas especializadas, pois as ferramentas padrão de métricas de qualidade não analisam a sintaxe RPG. SMART TS XL Fornece complexidade ciclomática, linhas de código e análise de dependências para programas RPG, o que é particularmente valioso para ambientes IBM i que gerenciam grandes bases de código legadas, onde a medição de qualidade era anteriormente impossível de automatizar.
Métricas de revisão de código
A revisão de código é uma atividade de controle de qualidade cuja eficácia pode ser mensurada:
- Revise a cobertura: porcentagem do código confirmado que passou por uma revisão formal antes da fusão
- Defeitos encontrados na revisão: o número de defeitos detectados durante a revisão em relação ao tamanho do conjunto de alterações revisado
- Tempo de resposta da avaliação: o tempo decorrido desde a abertura de uma solicitação de pull request até sua revisão e fusão.
- Taxa de resolução de comentários da avaliação: a porcentagem de comentários de revisão que resultam em uma alteração de código em vez de serem descartados
Equipes de alto desempenho geralmente apresentam uma cobertura de revisão acima de 90%, uma média de 1 a 3 defeitos encontrados por revisão a cada cem linhas revisadas e prazos de entrega curtos. As métricas de revisão ajudam a identificar se a revisão de código está funcionando como um mecanismo de controle de qualidade ou como uma mera formalidade.
Monitoramento contínuo da qualidade do código
A medição pontual da qualidade do código é significativamente menos valiosa do que o monitoramento contínuo. A qualidade do código não é uma propriedade fixa da base de código; ela muda a cada commit. Uma base de código que apresenta bons resultados hoje pode deteriorar-se significativamente em três sprints de desenvolvimento apressado se as métricas de qualidade não forem monitoradas continuamente.
O monitoramento contínuo e eficaz da qualidade do código inclui:
- Cálculo de métricas por compromisso: complexidade ciclomática e resultados da análise estática calculados a cada impulso
- Painéis de tendênciasExibição visual de métricas-chave ao longo do tempo, atualizada diariamente ou por versão.
- Portões de qualidade em CI/CDAplicação automatizada de limites mínimos para métricas que afetam a manutenibilidade, a segurança e o risco de defeitos.
- Detecção de regressão: emite alertas quando uma métrica se move significativamente na direção errada entre as versões
Os principais indicadores de melhoria da qualidade do código, os sinais que preveem se a qualidade será melhor ou pior na próxima versão, são a direção da tendência de cobertura, a nova complexidade introduzida por sprint e a proporção de code smells resolvidos em relação aos code smells introduzidos. Quando esses indicadores estão se movendo na direção correta, a qualidade melhora. Quando não estão, a deterioração é previsível antes mesmo de ocorrer completamente.
Como SMART TS XL Mede e melhora a qualidade do código.
SMART TS XL Calcula o conjunto completo de métricas de qualidade de código descritas neste artigo em todas as linguagens e plataformas do ambiente de desenvolvimento: COBOL, JCL, Java, .NET, Python, JavaScript, TypeScript, RPG, SQL e outras. Enquanto a maioria das ferramentas de qualidade opera em uma única linguagem por vez, SMART TS XL Constrói um modelo de qualidade unificado de todo o sistema, possibilitando a comparação da qualidade entre diferentes linguagens, o rastreamento de métricas no nível do sistema em vez do nível do arquivo e a identificação de problemas de qualidade entre componentes que ferramentas de linguagem única não conseguem detectar.
Para organizações empresariais com grandes bases de código multilíngues, o análise de código estático capacidade de SMART TS XL Fornece a métrica básica que a due diligence técnica, o planejamento de modernização de sistemas legados e a melhoria contínua da qualidade exigem. mapeamento de dependência A capacidade amplia a avaliação da qualidade para questões estruturais: quais componentes são os mais utilizados, quais alterações têm o maior impacto e quais áreas do código-fonte representam o maior risco de manutenção quando as métricas de qualidade são combinadas com a centralidade da dependência.
SMART TS XLAs métricas de qualidade de código do [nome da plataforma] integram-se aos pipelines DevOps por meio de sua API, permitindo a implementação de mecanismos de controle de qualidade na camada de CI/CD. Quando um commit introduz uma função com complexidade ciclomática acima do limite, reduz a cobertura abaixo do mínimo configurado ou introduz uma descoberta crítica na análise estática, o pipeline pode falhar na compilação com um diagnóstico específico que informa ao desenvolvedor exatamente o que foi medido e por que o limite foi ultrapassado. Isso transfere a aplicação da qualidade das auditorias pós-lançamento para o feedback durante o desenvolvimento, reduzindo o custo dos problemas de qualidade ao detectá-los no ponto em que são mais baratos de corrigir.
Qualidade de código é uma disciplina de equipe, não um relatório.
O valor das métricas de qualidade de código é determinado inteiramente pelo que as equipes fazem com elas. Um relatório trimestral sobre a qualidade do código que ninguém utiliza é pior do que nenhum relatório, pois cria a ilusão de que a qualidade está sendo gerenciada enquanto a base de código se deteriora sem controle. As métricas se tornam valiosas quando impulsionam ações específicas: quando um pico de complexidade ciclomática em uma nova função desencadeia uma discussão sobre refatoração antes da função ser integrada ao código principal; quando uma queda na cobertura de testes em um módulo desencadeia um sprint de testes; quando o aumento da densidade de defeitos em um componente específico desencadeia uma revisão formal do design desse componente.
Construir essa cultura exige tornar as métricas visíveis no momento certo, durante o desenvolvimento, e não após o lançamento, e conectá-las a compromissos concretos da equipe. Equipes que revisam as tendências de qualidade do código em cada retrospectiva de sprint, que incluem limites de qualidade em sua definição de "concluído" e que tratam a regressão de uma métrica com a mesma seriedade que a regressão de uma funcionalidade, constroem bases de código com custos de manutenção menores e que produzem menos incidentes em produção ao longo do tempo. A mensuração é o ponto de partida. A disciplina é o que produz o resultado.