No processo de construção do software, há diversas etapas que são essenciais para que o desenvolvimento seja realizado de acordo com padrões de qualidade e segurança. Para que o código mantenha estes padrões durante o desenvolvimento, temos duas abordagens importantes que podem ser utilizadas para validar a qualidade do software: code review e secure code review. Neste artigo, comentaremos a importância de cada um, e como são utilizados.
Você também pode ouvir esse conteúdo:
No geral, o code review tem como objetivo identificar possíveis falhas, bugs ou oportunidades de melhorias no código fonte de acordo com a sintaxe e boas práticas de cada linguagem. Enquanto o secure code review tem como foco a identificação de problemas relacionados a vulnerabilidades de segurança. Caso tenha interesse, a OWASP fornece um material completo relacionado a secure code review.
Qual a diferença entre Code Review e Secure Code Review?
O objetivo do code review é encontrar e apontar falhas, bugs ou oportunidades de aprimoramento no software. A revisão pode ser feita em pares, ou por apenas um desenvolvedor, o mais importante é a compreensão do código e disseminação das lições aprendidas entre os desenvolvedores.
Geralmente, o code review é feito após cada commit (quando é feita alteração no código), ou em alguns casos a cada Pull Request (quando é solicitado uma porção do código a uma branch). É importante que na hora de fazer o code review o desenvolvedor atente-se às boas práticas. Em alguns casos a própria empresa costuma ter um guia de desenvolvimento.
Caso a empresa não possua um guia de boas práticas, é essencial que seja estabelecido um critério para análise dos códigos. A seguir, temos alguns pontos importantes que podem ser levados em consideração na análise: reutilização de código, complexidade do código, nomeações de variáveis, campos, parâmetros ou até mesmo se as classes ou métodos refletem o que realmente representa.
Ainda falando sobre code review, é possível utilizar análises manuais ou automatizadas. A análise manual consiste no próprio desenvolvedor procurar pelos problemas, falhas ou defeitos, utilizando um guia ou experiência própria de desenvolvimento. Já na análise automatizada, é utilizado ferramentas que auxiliam na padronização da qualidade do código (conferir se as boas práticas estão de fato sendo aplicadas), ser acionável em pontos importantes, e até mesmo relatórios dos testes realizados.
Além disso, é bom lembrar que tanto para o code review quanto para o secure code review, não há discriminação hierárquica para quem esta fazendo a revisão. Entretanto, é necessário que tenha conhecimentos em desenvolvimento e segurança de software (ainda mais se o foco for secure code review).
Para que o code review seja eficiente, é válido estabelecer uma certa frequência na revisão, além de ter bem definida a etapa em que deve ser realizada. A seguir, enumerei algumas práticas que podem deixar o seu code review mais eficiente:
- Foque na qualidade durante o code review, e não na quantidade linhas.
- Prefira tempos curtos, no entanto, com maior concentração, foco na qualidade.
- Estabeleça objetivos e métricas claras, como: “diminuir erros reportados”.
Já no processo de secure code review, além de ter como base alguns dos itens mencionados no code review, a atenção deve ser voltada primordialmente para a segurança do software. É importante estar atento às possíveis brechas de segurança, pois algumas dessas falhas podem estar relacionadas com: autenticação, autorização, gerenciamento de sessão, injeção de código, controle de acesso, entrada de dados, dentre outros.
A revisão manual no secure code review, terá como ponto de atenção a revisão de brechas voltada para segurança do código. Essa revisão costuma ser mais precisa, no entanto, mais lenta, através dela é levada em consideração as regras de negócios, sendo assim, a tendência de ter falsos positivos podem ser diminuídas, o que por sinal é um grande ganho dessa prática.
Por outro lado, para uma melhor otimização do tempo, temos também a automatização do secure code review. Durante este processo é possível utilizar ferramentas de SAST que realiza um scan no código, permitindo automatizar parte do processo da análise, facilitando a busca por brechas. Quer saber mais sobre a diferença entre code review e SAST?
Podemos concluir que o code review é fundamental no desenvolvimento, e para que seja bem estruturado deve ser adotado métodos e ferramentas, como um guia de boas práticas, revisão manual e testes automatizados. Cada técnica tem um papel específico no processo e, em conjunto, podem levar a uma melhoria significativa na qualidade e segurança do software.
A revisão manual pode identificar falhas que outras técnicas não conseguem detectar. Já os testes automatizados verificam a funcionalidade e segurança do software em diferentes cenários. A combinação dessas técnicas pode trazer resultados ainda mais positivos, como a identificação mais eficiente de vulnerabilidades e a melhoria contínua do processo de revisão de código. Somado a um bom guia de boas práticas, torna-se ainda mais poderoso!
Lembre-se: o code review busca aprimorar a qualidade do software no geral, como bugs, defeitos e a disseminação de boas práticas na análise do código, o processo tem como foco a qualidade. Já no secure code review, o foco é em encontrar vulnerabilidades de segurança, seja de forma manual ou automatizada.