Eu só queria saber qual é a diferença entre análise de código estática e revisão de código. Como são feitos cada um desses dois? Mais especificamente, quais são as ferramentas disponíveis hoje para revisão de código / análise estática do PHP? Também gostaria de saber sobre boas ferramentas para revisão de código em qualquer idioma.
code-quality
terminology
code-reviews
quality
Thomas Owens
fonte
fonte
Respostas:
Revisão de código é algo que as pessoas fazem, análise estática é algo que as máquinas fazem. Existem (às vezes boas) ferramentas de análise estática. A revisão de código é quando um colega / mentor / professor / amigo repassa seu código e faz críticas construtivas.
A análise estática é, por outro lado, um processo automatizado no qual uma máquina, informada pelo que sabe sobre a linguagem que está analisando (geralmente do sistema de tipos), analisa um programa e tenta descobrir coisas que podem estar incorretas, estilo ineficiente, ruim ou subótimo.
fonte
A análise estática é o processo de analisar um software sem executá-lo. Isso é muito bom e recomendado, mas você deve ter em mente que
Ambas as abordagens sofrem com a falta de contexto: elas não sabem o que o sw deve alcançar.
A revisão do código é feita por outro codificador, que supostamente o conhece e pode verificar
É muito mais caro e tem um grau variável de repetibilidade, mas é uma grande ajuda.
Como sempre, não há uma única bala de prata que conserte todos os erros e evite todos os problemas. Aplicação - o máximo possível, considerando o local, o código, a hora e as três formas de verificação (estática, dinâmica, mais olhos (e cérebros) realmente olhando para o código).
ps: Devo observar que geralmente é muito melhor aplicar as ferramentas do zero. Converter um sistema legado é uma experiência muito menos agradável, devido a falsos positivos. Se você começar do zero e sempre tentar manter a ferramenta de análise limpa, provavelmente evitará muitos problemas.
pps: quanto às ferramentas, isso depende do idioma. No mundo C e C ++, você pode começar observando o próprio Visual Studio, que contém uma ferramenta de análise estática interna. Uma lista relativamente completa pode ser encontrada na Wikipedia.
ppps: a análise estática é mais adequada para linguagens estáticas, como C ou C ++. Para Python, pode ser realmente difícil dizer se um nome que se refere a uma lista em um momento se refere a uma lista para o restante do programa, devido às suas propriedades dinâmicas. Isso não significa que nada possa ser feito, como mostra um esforço de JIT, como mostra o PyPy .
fonte
Revisão de código é quando uma autoridade sênior ou dedicada verifica seu código, sua maneira de codificar, os padrões seguidos no código e, especificamente, o nível lógico do código
No que diz respeito à análise estática, é a análise do software de computador que é executada sem realmente executar os programas criados a partir desse software (a análise executada nos programas em execução é conhecida como análise dinâmica)
A lista de ferramentas de acordo com a tecnologia é fornecida no link abaixo
Lista de ferramentas para análise estática
Portanto, revisão de código e análise estática são termos completamente diferentes.
fonte
A revisão de código é uma avaliação mais qualitativa, a análise estática de código é uma avaliação mais quantitativa.
vs, fe
Embora erros reais possam (obviamente) existir e ser detectados pelo SCA
fonte
Análise estática é quando um artefato é analisado sem ser executado. Embora possa ser aplicado a qualquer artefato, geralmente é aplicado ao código-fonte ou código de objeto e refere-se ao uso de ferramentas específicas para analisar e obter informações sobre esses produtos de trabalho. Essas ferramentas produzem relatórios que são interpretados por um engenheiro para uso na determinação da qualidade do sistema em construção e como um guia para o planejamento do desenvolvimento e manutenção. A Wikipedia possui uma lista de ferramentas para análise estática , organizadas por idioma e com uma breve descrição de seus recursos.
Revisões são uma avaliação humana de algum produto de trabalho, que pode ser código. As revisões também podem ser realizadas em projetos ou outros documentos. A idéia é que pessoas familiarizadas com o produto de trabalho que não seja o desenvolvedor estejam olhando para encontrar erros, desde problemas de segurança até violações do padrão de codificação.
Tecnicamente, uma revisão de código pode ser considerada uma forma de análise estática, pois o código não é realmente executado durante a revisão. No entanto, na terminologia comum, "análise estática" geralmente se refere à análise por máquina de arquivos de origem ou de objeto, enquanto "revisão" indica que é o homem que faz a análise.
fonte
A revisão de código é uma técnica útil para detectar problemas no código fonte muito cedo. Como parte deste exercício, muitos problemas como desempenho, escalabilidade e padrões de codificação foram identificados e corrigidos. Isso melhorará a qualidade do código.
A análise estática é usada para analisar as métricas de qualidade de código, como complexidade ciclométrica, índice de manutenção, profundidade de herança e acoplamentos de classe. Várias ferramentas disponíveis no mercado para analisar as qualidades do código. O desenvolvedor de C # usa o Microsoft visual studio para gerar relatórios de métricas.
fonte
análise de código estático é realizada por ferramenta automatizada, revisão de código é feita com as pessoas antes que o código seja confirmado.
Ferramentas para revisão de código:
1. além de comparar
2.o diff do software de controle de versão
Essas ferramentas são sempre usadas para gerar a diferença entre a versão antiga e a nova versão.
fonte