code-analysis - mecanica - reglas de analisis estatico de codigo
Beneficios del análisis de código estático (10)
Los beneficios son que puede encontrar y cuantificar automáticamente la deuda técnica dentro de su aplicación de software.
Las herramientas de análisis de código estático son indispensables para el desarrollo de aplicaciones empresariales grandes, donde muchos desarrolladores y evaluadores aparecen y desaparecen durante la vida útil de una aplicación, pero la calidad del código debe mantenerse alta y la deuda técnica debe gestionarse adecuadamente.
¿Cuáles son los beneficios de hacer un análisis de código estático en su código fuente? Estaba jugando con FxCop y me preguntaba si habría algún beneficio además de asegurarme de que sigas los estándares de codificación.
Depende de las reglas, pero se pueden evitar muchos defectos sutiles, se puede limpiar el código, detectar posibles problemas de rendimiento, etc.
Póngalo de una manera ... si es barato o gratuito (en tiempo y costos financieros) y no rompe nada, ¿por qué no usarlo?
Muchas clases de pérdidas de memoria y errores de lógica comunes también se pueden detectar estáticamente. También puede ver la complejidad ciclomática y demás, que pueden ser parte de los "estándares de codificación" que mencionó, pero puede ser una medida separada que utilice para evaluar la "limpieza" algorítmica de su código.
En cualquier caso, solo una combinación juiciosa de perfiles (análisis dinámico o en tiempo de ejecución) y análisis / lanzamientos estáticos garantizará una base de código consistente y confiable. Ah, eso, y un poco de suerte ;-)
Puede detectar errores reales, como olvidar desechar IDisposables.
de hecho, fxcop no te ayuda particularmente a seguir un estándar de codificación. Lo que sí te ayuda es diseñar un framework / API bien pensado. Es cierto que FxCop detectará partes del estándar de codificación (como el revestimiento de miembros públicos), pero los estándares de codificación no son el centro de atención.
los estándares de codificación se pueden verificar con stylecop , que verifica el código fuente en lugar del MSIL como lo hace fxcop.
Es una compensación. Para un desarrollador individual que quiera mejorar su comprensión del marco y las directrices, definitivamente lo alentaría. FxCop genera mucho ruido / falsos positivos, pero también he encontrado los siguientes beneficios:
detecta errores (por ejemplo, una advertencia sobre un argumento no utilizado puede indicar que utilizó el argumento incorrecto en el cuerpo del método).
comprender las pautas que FxCop está siguiendo le ayuda a convertirse en un mejor desarrollador.
Sin embargo, con un equipo de capacidad mixta, FxCop puede generar demasiados falsos positivos para ser útil. Los desarrolladores menores tendrán dificultades para apreciar si algunas de las violaciones más esotéricas generadas por FxCop deberían preocuparlas o simplemente son ruido.
Línea de fondo:
Si está desarrollando bibliotecas de clases reutilizables, como un marco interno, asegúrese de tener buenos desarrolladores y usar FxCop.
Para el desarrollo de aplicaciones diarias con equipos de habilidades mixtas, probablemente no sea factible.
¿Cuáles son los beneficios de hacer un análisis de código estático en su código fuente?
Los beneficios dependen del tipo de análisis de código estático que se realiza. El análisis del código estático puede variar desde técnicas simples hasta sofisticadas. Por ejemplo, generar métricas sobre su código fuente para identificar el código propenso a errores es una técnica. Otras técnicas intentan activamente encontrar errores en tu código. Las técnicas sofisticadas usan métodos formales para demostrar que su código está libre de errores.
Por lo tanto, el beneficio depende del tipo de análisis de código estático que se utiliza. Si la técnica produce métricas (como la complejidad del código, etc.), un beneficio es que estas métricas podrían usarse durante la revisión del código para identificar el código propenso a errores. Si la técnica detecta errores, entonces el beneficio es que el desarrollador puede identificar errores antes de la prueba unitaria. Si se usan técnicas basadas en métodos formales para demostrar que el código no contiene errores, entonces el beneficio es que esta información podría usarse para demostrar al departamento de control de calidad (o autoridades de certificación) que el código está libre de ciertos tipos de errores.
Una descripción más detallada de las técnicas y los beneficios también se puede encontrar en esta página: www.mathworks.com/static-analysis
Hay todo tipo de beneficios:
- Si hay antipatrones en su código, puede ser advertido al respecto.
- Existen ciertos parámetros (como la Complejidad Ciclomática de McCabe) que indican cosas útiles sobre el código fuente.
- También puede obtener cosas geniales como gráficos de llamadas y diagramas de clases a partir de análisis estáticos. Esos son maravillosos si estás atacando una nueva base de código.
Eche un vistazo a SourceMonitor
FxCop
Hay una lista de todas las advertencias en FxCop . Puede ver que hay advertencias de las siguientes áreas:
Advertencias de diseño
Advertencias que respaldan el diseño correcto de la biblioteca según lo especificado por las Pautas de diseño de .NET Framework.
Advertencias de globalización
Advertencias que admiten bibliotecas y aplicaciones preparadas para el mundo.
Advertencias de interoperabilidad
Advertencias que admiten la interacción con clientes COM.
Nombrando advertencias
Advertencias que respaldan el cumplimiento de las convenciones de nomenclatura de las Pautas de diseño de .NET Framework.
Advertencias de rendimiento
Advertencias que admiten bibliotecas y aplicaciones de alto rendimiento.
Advertencias de seguridad
Advertencias que admiten bibliotecas y aplicaciones más seguras.
Dependiendo de su aplicación, algunas de esas áreas pueden no ser muy interesantes, pero si, por ejemplo, necesita interoperabilidad COM, las pruebas realmente pueden ayudarlo a evitar las trampas.
Otras herramientas
Otras herramientas de comprobación estática pueden ayudarlo a detectar errores, como por ejemplo, no desechar un IDisposable , pérdidas de memoria y otros errores sutiles. Para casos extremos, vea la herramienta NStatic aún no lanzada.
NStatic se usa para rastrear cosas como parámetros redundantes, expresiones que evalúan a constantes, bucles infinitos y muchas otras métricas.
Trataré de describir los principales:
- El análisis del código estático identifica los detectores en el programa en una etapa temprana, lo que resulta en una disminución del costo para solucionarlos.
- Puede detectar fallas en las entradas y salidas del programa que no se pueden ver a través de pruebas dinámicas.
- Escanea automáticamente códigos no compilados e identifica vulnerabilidades.
- De lo que sé al tratar con checkmarx es que el análisis de código estático corrige múltiples vulnerabilidades en un solo punto, lo que ahorra mucho tiempo para el desarrollador.