Análise estática de código
Tags: codequality, ndepend
Published: 2020-06-20 13:47:00

As equipes de desenvolvimento estão sob pressão. Os lançamentos de qualidade precisavam ser entregues no prazo. Os padrões de codificação e conformidade precisam ser cumpridos. E erros não são uma opção.

É por isso que as equipes de desenvolvimento estão usando ferramentas de análise estática.

## O que é análise estática?
Análise estática é melhor descrita como um método de depuração, examinando automaticamente o código-fonte antes de um programa ser executado. 

## O que é análise estática de código?
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/nhzuz2n4a0n75ohj5jnr.jpg)
A análise de estática de código é um método de depuração, examinando o código-fonte antes da execução de um programa. Isso é feito analisando um conjunto de códigos em relação a um conjunto (ou vários conjuntos) de regras de codificação. Ela verifica a qualidade do código-fonte. Essa verificação é realizada antes mesmo que haja execução do software.  

Quanto mais cedo um problema é encontrado no software, mais barata é a sua correção (um problema encontrado em desenvolvimento será muito mais barato de corrigir do que se o mesmo for encontrado em produção). 

Da mesma forma, código-fonte bem escrito reduz drasticamente o tempo (e o custo) de manutenção, e o uso de boas práticas de orientação a objetos permite que o código seja flexível e suporte mudanças de forma mais tranquila, segura e natural.

## Alguns pontos importantes
A análise de código estático e a análise estática são frequentemente usadas de forma intercambiável, juntamente com a análise de código-fonte. 

Esse tipo de análise aborda pontos fracos no código-fonte que podem levar a vulnerabilidades. Obviamente, isso também pode ser alcançado através de revisões manuais de código. Mas o uso de ferramentas automatizadas é muito mais eficaz.

A análise estática é comumente usada para obedecer às diretrizes de codificação - como MISRA . E é frequentemente usado para cumprir os padrões da indústria - como a ISO 26262 .

## A análise estática de código é executada em que estágio?
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ulnnjvj4sqh4r9xdm945.jpg)
A análise estática de código é realizada no início do desenvolvimento, antes do início do teste do software . Para organizações que praticam DevOps , a análise de código estático ocorre durante a fase "Criar".

A análise estática de código também suporta o DevOps, criando um loop de feedback automatizado. Os desenvolvedores saberão desde o início se há algum problema em seu código. E será mais fácil corrigir esses problemas.

## Quais são os benefícios das ferramentas de análise estática?
Existem vários benefícios da análise estática de código - especialmente se você precisar cumprir um padrão do setor.

As melhores ferramentas de análise estática de código oferecem velocidade, profundidade e precisão. 

### Rapidez
Leva tempo para os desenvolvedores fazerem revisões manuais de código. Ferramentas automatizadas são muito mais rápidas.

A verificação de código estático soluciona problemas desde o início. E indica exatamente onde está o erro no código. Portanto, você poderá corrigir esses erros mais rapidamente. Além disso, os erros de codificação encontrados anteriormente são mais baratos de corrigir.
Aqui esta um exemplo utilizando a extentão [NDepend](https://www.alexandrefreire.me/ndepend-link) no Visual Studio. 
* Dashboard do NDepend no Visual Studio:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/yghn167y0iaeb97x6huq.PNG)

### Profundidade
O teste não pode cobrir todos os caminhos de execução de código possíveis. Mas um analisador de código estático pode.

Ele verifica o código enquanto você trabalha na sua compilação. Você obterá uma análise detalhada de onde pode haver problemas em potencial no seu código, com base nas regras aplicadas.

Fontes: [devmedia.com.br](https://www.devmedia.com.br/como-adotar-a-analise-estatica-de-codigo/32727#:~:text=Considera%2Dse%2C%20portanto%2C%20que,c%C3%B3digo%2Dfonte%20foi%20constru%C3%ADdo%20internamente.&text=Cada%20ferramenta%2C%20dependendo%20de%20sua,em%20c%C3%B3digo%2Dfonte%20ou%20bytecode.), [ndepend](https://www.ndepend.com/)