Esta es una lista de herramientas destacadas para el análisis estático de programas (análisis de programas es sinónimo de análisis de código).
Herramientas de análisis de código estático
Idiomas
- Astree
- Suite Axivion (Bauhaus)
- EXPLOSIÓN
- Sonido metálico
- Coccinela
- Coverity
- CPAchecker
- Cppcheck
- Cppdepend
- Cpplint
- ECLAIR
- Eclipse
- Fluctuación
- Frama-C
- GCC
- Helix QAC
- Facebook Infer
- Klocwork
- Hilas
- Banco de pruebas LDRA
- Prueba de C/C++ de Parasoft
- PC-lint Plus
- Polyspace
- Estudio PVS
- Proyecto SLAM
- Escaso
- SonarQube
- Entablillar
- Entender
- Visual Studio
- Análisis estático de CODESYS : complemento integrado para CODESYS (código de aplicación implementado, por ejemplo, en ST, FBD, LD).
- ESLint : comprobador y formateador de sintaxis de JavaScript .
- Closure Compiler de Google : un optimizador de JavaScript que reescribe el código para que sea más rápido y más pequeño, y comprueba el uso de funciones nativas de JavaScript.
- CodeScene – Análisis del comportamiento del código.
- Ataques de fluidos
- JSHint : una bifurcación de JSLint impulsada por la comunidad.
- JSLint – Comprobador y validador de sintaxis de JavaScript.
- Klocwork
- Semgrep : una herramienta de análisis estático que ayuda a definir estándares de código y a detectar errores de forma temprana. También dispone de un servicio de integración continua y una biblioteca de reglas.
- Entender
Objective-C , Objective-C++
- Clang – El proyecto gratuito Clang incluye un analizador estático. A partir de la versión 3.2, este analizador está incluido en Xcode . [ 14 ]
- Infer – Desarrollado por un equipo de ingeniería de Facebook con colaboradores de código abierto. Se centra en punteros nulos, fugas de memoria, uso de API y otras comprobaciones de lint. Disponible como código abierto en GitHub.
- Entender
Opa
- Opa incluye su propio analizador estático. Dado que el lenguaje está diseñado para el desarrollo de aplicaciones web, el compilador con tipado estático fuerte verifica la validez de los tipos de alto nivel para los datos web y previene por defecto muchas vulnerabilidades, como ataques XSS e inyecciones de código en bases de datos.
- Perl::Critic : una herramienta para ayudar a aplicar las mejores prácticas comunes de Perl. La mayoría de estas mejores prácticas se basan en el libro Perl Best Practices de Damian Conway .
- PerlTidy : programa que actúa como verificador de sintaxis y probador/aplicador de buenas prácticas de codificación en Perl.
- Padre : un entorno de desarrollo integrado (IDE) para Perl que también proporciona análisis de código estático para detectar errores comunes de principiantes.
PL/SQL
- TOAD : un entorno de desarrollo PL/SQL con un componente Code xPert que informa sobre la eficiencia general del código, así como sobre problemas de programación específicos.
- Visual Expert : una herramienta de análisis de código PL/SQL [ 15 ] que informa sobre problemas de programación y ayuda a comprender y mantener código complejo ( análisis de impacto , documentación del código fuente , árboles de llamadas , matriz CRUD , etc.).
PowerBuilder , PowerScript
- Visual Expert : una herramienta que escanea las bibliotecas de PowerBuilder (PBL) para la inspección de código , análisis de impacto , documentación del código fuente , árboles de llamadas y matriz CRUD .
- PyCharm : un entorno de desarrollo integrado (IDE) multiplataforma para Python con inspecciones de código disponibles para analizar el código sobre la marcha en el editor y realizar análisis masivos de todo el proyecto.
- PyDev : un entorno de desarrollo integrado (IDE) de Python basado en Eclipse con análisis de código disponible sobre la marcha en el editor o al guardar el código.
- Pylint : analizador de código estático. Bastante estricto; incluye también muchas advertencias de estilo.
- Ataques de fluidos
- Klocwork
- Semgrep es un analizador de código estático que ayuda a definir estándares de código y a detectar errores de forma temprana. También dispone de un servicio de integración continua y una biblioteca de reglas.
- Entender
- Visual Expert : una herramienta de análisis de código SQLServer [ 16 ] que informa sobre problemas de programación y ayuda a comprender y mantener código complejo (análisis de impacto, documentación del código fuente, árboles de llamadas, matriz CRUD, etc.).
Herramientas con detección de código duplicado
Herramientas de métodos formales
Herramientas que utilizan métodos sólidos , es decir, que sobreaproximan un modelo riguroso, se basan en un enfoque de métodos formales para el análisis estático (por ejemplo, mediante aserciones de programas estáticos ). Los métodos sólidos no presentan falsos negativos para programas sin errores, al menos con respecto al modelo matemático idealizado en el que se basan (no existe una solidez "incondicional"). Cabe señalar que no hay garantía de que informen de todos los errores de los programas con errores; informarán de al menos uno.
- Astrée detecta todos los posibles errores de ejecución mediante interpretación abstracta , puede demostrar la ausencia de errores de ejecución y puede probar aserciones funcionales; está diseñado específicamente para código C crítico para la seguridad (por ejemplo, aviónica).
- CodePeer : determina y documenta estáticamente las precondiciones y postcondiciones de los subprogramas Ada ; comprueba estáticamente las precondiciones en todos los puntos de llamada.
- ECLAIR utiliza técnicas de análisis de código estático basadas en métodos formales , como la interpretación abstracta y la verificación de modelos, combinadas con técnicas de satisfacción de restricciones para detectar o demostrar la ausencia de ciertos errores de ejecución en el código fuente .
- ESC/Java y ESC/Java2 : basados en Java Modeling Language , una versión enriquecida de Java.
- Frama-C : un marco de análisis de código abierto para C, basado en el lenguaje de especificación C de ANSI/ISO (ACSL). Sus principales técnicas incluyen interpretación abstracta, verificación deductiva y monitorización en tiempo de ejecución .
- KeY : plataforma de análisis para Java basada en la demostración de teoremas con especificaciones en el lenguaje de modelado Java; puede generar casos de prueba como contraejemplos; interfaz gráfica de usuario independiente o integración con Eclipse.
- MALPAS : una herramienta de métodos formales que utiliza grafos dirigidos y álgebra regular para demostrar que el software analizado cumple correctamente con sus especificaciones matemáticas.
- Polyspace – Utiliza la interpretación abstracta, una técnica basada en métodos formales, [ 17 ] para detectar y demostrar la ausencia de ciertos errores de tiempo de ejecución en el código fuente para C/C++ y Ada
- Conjunto de herramientas SPARK , incluido el SPARK Examiner , basado en el lenguaje SPARK, un subconjunto de Ada.
Véase también
- Revisión automatizada del código
- Mejores prácticas de codificación
- Lista de filosofías de desarrollo de software
- Análisis dinámico de programas
- Métricas de software
- Entorno de desarrollo integrado (IDE) y comparación de entornos de desarrollo integrados . Los IDE suelen incluir soporte integrado para el análisis estático de programas o la opción de integrar dicho soporte. Eclipse ofrece este mecanismo de integración para la mayoría de los tipos de extensiones (plugins).
Referencias
- ↑ "CPAchecker" . 8 de febrero de 2015.
- ↑ "Análisis estático en Xcode" . Apple. Archivado del original el 5 de septiembre de 2009. Consultado el 3 de septiembre de 2009 .
- ↑ "Ejecutar el analizador dentro de Xcode" . Archivado del original el 5 de diciembre de 2021. Consultado el 14 de enero de 2022 .
- ↑ "Herramientas y lenguajes compatibles para pruebas de seguridad de aplicaciones" . codedx.com . Consultado el 25 de abril de 2017 .
- ↑ "Sitio web de Coverity Scan" . Consultado el 23 de agosto de 2023 .
- ↑ «Sitio web de ECLAIR» . Consultado el 7 de octubre de 2021 .
- ↑ "Novedades de CppDepend" . cppdepend.com . Consultado el 1 de marzo de 2023 .
- ↑ "Readme.md de las guías de estilo de Google" . GitHub . Consultado el 8 de noviembre de 2021 .
- ↑ Malcolm, David (26 de marzo de 2020). "Análisis estático en GCC 10" . Red Hat Developer . Recuperado el 13 de abril de 2022 .
- ↑ "¡UNIX es libre!" . lemis.com. 24-01-2002.
- ↑ "NDepend lo nuevo" . ndepend.com . Consultado el 15 de junio de 2022 .
- ↑ "PMD - Browse /pmd/5.0.0" . SourceForge .net . Consultado el 9 de diciembre de 2012 .
- ↑ "Eliminar StrictDuplicateCodeCheck y todo el paquete · Problema n.° 523 · checkstyle/Checkstyle" . GitHub .
- ↑ "Análisis estático en Xcode" . Apple . Consultado el 3 de septiembre de 2009 .
- ↑ "Visual Expert for Oracle - Analizador de código PL/SQL" . www.visual-expert.com . 24/08/2017.
- ↑ "Visual Expert para SQL Server - Analizador de código Transact SQL" . www.visual-expert.com . 24/08/2017.
- ↑ Cousot, Patrick (2007). «El papel de la interpretación abstracta en los métodos formales». Quinta Conferencia Internacional IEEE sobre Ingeniería de Software y Métodos Formales (SEFM 2007) . Conferencia Internacional IEEE sobre Ingeniería de Software y Métodos Formales. págs. 135–140 . doi : 10.1109/SEFM.2007.42 . ISBN 978-0-7695-2884-7. S2CID 67212 .
Enlaces externos
- Lista de herramientas de análisis de código estático del Consorcio de Seguridad de Aplicaciones Web
- Analizadores de seguridad de código fuente SAMATE
- SATE – Exposición de herramientas de análisis estático
- "Una comparación de herramientas para la detección de errores en Java" , por Nick Rutar, Christian Almazan y Jeff Foster, de la Universidad de Maryland . Compara Bandera, ESC/Java 2, FindBugs , JLint y PMD.
- "Minireseña de Java Bug Finders" , por Rick Jelliffe, O'Reilly Media .
- "Analizador de código estático"
- Herramientas de análisis estático de programas
- Listas de software