Esta es una lista de herramientas notables para el análisis de programas estáticos (el análisis de programas es sinónimo de análisis de código).
Herramientas de análisis de código estático
Idiomas
ada
- CódigoPeer
- ConQAT
- fluctuar
- Banco de pruebas LDRA
- MALPAS
- Poliespacio
- inspector de software
- plaza
- Entender
C,C++
- astree
- EXPLOSIÓN
- Sonido metálico
- coccinelle
- Cobertura
- Comprobador de CPA
- cppcheck
- depende de cpp
- Cpplint
- ECLAIR
- Eclipse
- fluctuar
- Frama-C
- CCG
- Hélice QAC
- Facebook inferir
- Klocwork
- Hilas
- Banco de pruebas LDRA
- Prueba de Parasoft C/C++
- PC-lint Plus
- Poliespacio
- Estudio PVS
- proyecto SLAM
- Escaso
- SonarQube
- Entablillar
- Entender
- Estudio visual
C#
- Código Dx
- Escena de código
- CódigoQL
- Cobertura
- Kiuwan
- Klocwork
- Plataforma compiladora .NET
- Estudio PVS
- SonarQube
- Sotoarc
- EstiloCop
- plaza
- Entender
- Estudio visual
CEI 61131-3
- Análisis estático de CODESYS: complemento integrado para CODESYS (código de aplicación realizado, por ejemplo, en ST, FBD, LD)
Java
- Cobertura
- Facebook inferir
- Klocwork
- Banco de pruebas LDRA
- PMD
- RIPS
- Semgrep
- Medidor de fuente
- Entender
javascript
- ESLint : formateador y corrector de sintaxis de JavaScript .
- Compilador de cierre de Google : optimizador de JavaScript que reescribe el código para que sea más rápido y más pequeño, y verifica el uso de funciones nativas de JavaScript.
- CodeScene : análisis del comportamiento del código.
- JSHint : una bifurcación de JSLint impulsada por la comunidad.
- JSLint : verificador y validador de sintaxis de JavaScript.
- Klocwork
- Semgrep : una herramienta de análisis estático que ayuda a expresar estándares de código y detectar errores de manera temprana. También está disponible un servicio de CI y una biblioteca de reglas.
- Entender
C objetivo, Objetivo-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 dirige a punteros nulos, fugas, uso de API y otras comprobaciones de pelusa. Disponible como código abierto en github.
- Entender
papá
- Opa incluye su propio analizador estático. Como el lenguaje está destinado al desarrollo de aplicaciones web, el compilador fuertemente tipado estático comprueba la validez de los tipos de alto nivel para datos web y previene de forma predeterminada muchas vulnerabilidades, como ataques XSS e inyecciones de código de bases de datos.
embalaje
- Lintian : comprueba los paquetes de software de Debian en busca de inconsistencias y errores comunes.
- Rpmlint : busca problemas comunes en paquetes rpm.
perla
- Perl::Critic : una herramienta para ayudar a aplicar las mejores prácticas comunes de Perl. La mayoría de las 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 prácticas de codificación en Perl.
- Padre : un IDE para Perl que también proporciona análisis de código estático para comprobar errores comunes de principiantes.
PL/SQL
Generador de energía, PowerScript
Pitón
- PyCharm : IDE de Python multiplataforma 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 : IDE de Python basado en Eclipse con análisis de código disponible sobre la marcha en el editor o en el momento de guardar.
- Pylint : analizador de código estático. Bastante estricto; También incluye muchas advertencias estilísticas.
- Klocwork
- Semgrep : analizador de código estático que ayuda a expresar estándares de código y detectar errores de manera temprana. También está disponible un servicio de CI y una biblioteca de reglas.
- Entender
Transact-SQL
- Visual Expert : una herramienta de análisis de código de 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
- Código Dx
- Escena de código
- PMD
- inspector de software
- SonarQube
- Medidor de fuente
- Entender
Herramientas de métodos formales.
Herramientas que utilizan sonido , es decir, aproximación excesiva a un modelo riguroso, enfoque de métodos formales para el análisis estático (por ejemplo, uso de aserciones de programas estáticos ). Los métodos sólidos no contienen falsos negativos para los programas libres de errores, al menos en lo que respecta al modelo matemático idealizado en el que se basan (no existe una solidez "incondicional"). Tenga en cuenta que no hay garantía de que informarán todos los errores de los programas con errores, informarán al menos uno.
- Astrée : encuentra todos los errores potenciales de tiempo de ejecución mediante interpretación abstracta , puede probar la ausencia de errores de tiempo de ejecución y puede probar afirmaciones funcionales; adaptados al código C crítico para la seguridad (por ejemplo, aviónica).
- CodePeer : determina y documenta estáticamente las condiciones previas y posteriores para los subprogramas de Ada ; Comprueba estáticamente las condiciones previas en todos los lugares de llamada.
- ECLAIR : utiliza técnicas de análisis de código estático basadas en métodos formales, como interpretación abstracta y verificación de modelos , combinadas con técnicas de satisfacción de restricciones para detectar o probar la ausencia de ciertos errores de tiempo de ejecución en el código fuente .
- ESC/Java y ESC/Java2 : basado 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 ANSI/ISO C (ACSL). Sus principales técnicas incluyen interpretación abstracta, verificación deductiva y monitoreo del tiempo de ejecución .
- KeY – plataforma de análisis para Java basada en la demostración de teoremas con especificaciones en Java Modeling Language; puede generar casos de prueba como contraejemplos; GUI independiente o integración con Eclipse
- MALPAS : una herramienta de métodos formales que utiliza gráficos dirigidos y álgebra regular para demostrar que el software analizado cumple correctamente con su especificación matemática.
- Polyspace : utiliza interpretación abstracta, una técnica basada en métodos formales, [17] para detectar y probar la ausencia de ciertos errores de tiempo de ejecución en el código fuente de C/C++ y Ada.
- Conjunto de herramientas SPARK que incluye SPARK Examiner : basado en el lenguaje SPARK, un subconjunto de Ada.
Ver también
Referencias
- ^ "Comprobador de CPA". 2015-02-08.
- ^ "Análisis estático en Xcode". Manzana. Archivado desde el original el 5 de septiembre de 2009 . Consultado el 3 de septiembre de 2009 .
- ^ "Ejecutando el analizador dentro de Xcode". Archivado desde el original el 5 de diciembre de 2021 . Consultado el 14 de enero de 2022 .
- ^ "Herramientas e lenguajes de prueba de seguridad de aplicaciones admitidos". codificadox.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 .
- ^ "CppDepend qué hay de nuevo". 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". Desarrollador de Red Hat . Consultado el 13 de abril de 2022 .
- ^ "¡UNIX es gratis!". lemis.com. 2002-01-24.
- ^ "Depende de las novedades". ndepend.com . Consultado el 15 de junio de 2022 .
- ^ "PMD: explore /pmd/5.0.0 en SourceForge.net" . Consultado el 9 de diciembre de 2012 .
- ^ "Elimine StrictDuplicateCodeCheck y el paquete completo · Número 523 · checkstyle/Checkstyle". GitHub .
- ^ "Análisis estático en Xcode". Manzana . Consultado el 3 de septiembre de 2009 .
- ^ "Visual Expert para Oracle: analizador de código PL/SQL". www.visual-expert.com . 2017-08-24.
- ^ "Visual Expert para SQL Server: analizador de código Transact SQL". www.visual-expert.com . 2017-08-24.
- ^ Cousot, Patricio (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 Web Application Security Consortium
- Damas estáticas de Java en Curlie
- Analizadores de seguridad de código fuente SAMATE
- SATE – Exposición de herramientas de análisis estático
- "Una comparación de herramientas de búsqueda de errores para Java", por Nick Rutar, Christian Almazan y Jeff Foster, Universidad de Maryland . Compara Bandera, ESC/Java 2, FindBugs , JLint y PMD.
- "Mini-revisión de Java Bug Finders", por Rick Jelliffe, O'Reilly Media .