Solo quería saber cuál es la diferencia entre el análisis de código estático y la revisión de código. ¿Cómo se hacen cada uno de estos dos? Más específicamente, ¿cuáles son las herramientas disponibles hoy para la revisión de código / análisis estático de PHP? También me gustaría saber sobre buenas herramientas para la revisión de código para cualquier idioma.
code-quality
terminology
code-reviews
quality
Thomas Owens
fuente
fuente
Respuestas:
La revisión de código es algo que la gente hace, el análisis estático es algo que hacen las máquinas. Hay (a veces buenas) herramientas de análisis estático. La revisión del código es cuando un colega / mentor / profesor / amigo revisa su código y le da una crítica constructiva.
El análisis estático es, por otro lado, un proceso automatizado en el que una máquina, informada por lo que sabe sobre el lenguaje que está analizando (generalmente del sistema de tipos), analiza un programa e intenta identificar cosas que podrían ser incorrectas, estilo ineficiente, deficiente o de otro modo subóptimo.
fuente
El análisis estático es el proceso de analizar un software sin ejecutarlo. Esto es muy bueno y recomendado, pero debes tener en cuenta que
Ambos enfoques adolecen de la falta de contexto: no saben lo que se supone que debe lograr el sw.
La revisión del código la realiza otro codificador, que supuestamente lo sabe y puede verificar
Es mucho más costoso y tiene un grado variable de repetibilidad, pero es de gran ayuda.
Como siempre, no hay una sola bala de plata que repare todos los errores y evite todos los problemas. Se recomienda aplicar: tanto como sea posible dado el lugar, el código, la hora, las tres formas de verificación (estática, dinámica, más ojos (y cerebros) que realmente miran el código).
PD: Debo señalar que, por lo general, es mucho mejor aplicar las herramientas desde cero. La conversión de un sistema heredado es una experiencia mucho menos placentera, debido a los falsos positivos. Si comienza desde cero y siempre apunta a mantener limpia la herramienta de análisis, probablemente evitará muchos problemas.
pps: en cuanto a herramientas, depende del idioma. En el mundo de C y C ++, puede comenzar mirando Visual Studio, que contiene una herramienta de análisis estático incorporada. Se puede encontrar una lista relativamente completa en Wikipedia.
ppps: el análisis estático es más adecuado para lenguajes estáticos, como C o C ++. Para Python puede ser realmente difícil decir si un nombre que se refiere a una lista en un punto se referirá a una lista para el resto del programa, debido a sus propiedades dinámicas. Esto no significa que no se pueda hacer nada, como muestra un esfuerzo JIT como PyPy .
fuente
La revisión de código es cuando una autoridad superior o una autoridad dedicada verifica su código, su forma de codificación, los estándares seguidos en el código y específicamente el nivel lógico del código
En lo que respecta al análisis estático, es el análisis de software que se realiza sin ejecutar realmente programas creados a partir de ese software (el análisis realizado en la ejecución de programas se conoce como análisis dinámico)
La lista de herramientas según la tecnología se proporciona en el siguiente enlace
Lista de herramientas para el análisis estático
Por lo tanto, la revisión de código y el análisis estático son términos completamente diferentes.
fuente
La revisión del código es una evaluación más cualitativa, el análisis del código estático es una evaluación más cuantitativa.
vs, fe
Si bien los errores reales pueden (obviamente) existir y ser detectados por SCA
fuente
El análisis estático es cuando se analiza un artefacto sin ser ejecutado. Aunque se puede aplicar a cualquier artefacto, a menudo se aplica al código fuente o al código objeto y se refiere al uso de herramientas específicas para analizar y obtener información sobre estos productos de trabajo. Estas herramientas producen informes que son interpretados por un ingeniero para determinar la calidad del sistema en construcción y como una guía para planificar el desarrollo y el mantenimiento. Wikipedia tiene una lista de herramientas para el análisis estático , organizadas por idioma y con una breve descripción de sus capacidades.
Las revisiones son una evaluación humana de algún producto de trabajo, que podría ser código. También se pueden realizar revisiones de diseños u otros documentos. La idea es que las personas familiarizadas con el producto de trabajo que no sea el desarrollador lo estén buscando para encontrar errores, que van desde problemas de seguridad hasta violaciones del estándar de codificación.
Técnicamente, una revisión de código puede considerarse una forma de análisis estático, ya que el código no se ejecuta realmente durante la revisión. Sin embargo, en terminología común, el "análisis estático" generalmente se refiere al análisis automático de los archivos fuente u objeto mientras que la "revisión" indica que los humanos son los que hacen el análisis.
fuente
La revisión de código es una técnica útil para detectar problemas en el código fuente en una etapa muy temprana. Como parte de este ejercicio, se identificaron y rectificaron muchos problemas, como el rendimiento, la escalabilidad y los estándares de codificación. Esto mejorará la calidad del código.
El análisis estático se utiliza para analizar métricas de calidad de código como la complejidad ciclométrica, el índice de mantenibilidad, la profundidad de la herencia y los acoplamientos de clase. Varias herramientas disponibles en el mercado para analizar calidades de código. El desarrollador de C # usa Microsoft Visual Studio para generar informes métricos.
fuente
El análisis de código estático se realiza mediante una herramienta automatizada, la revisión del código se realiza con personas antes de que se confirme el código.
Herramientas para la revisión de código:
1.más allá de comparar
2.la diferencia del software de control de versiones
Estas herramientas siempre se utilizan para generar la diferencia entre la versión anterior y la nueva versión.
fuente