¿Qué herramientas de análisis estático están disponibles para C#?[cerrado]
-
09-06-2019 - |
Pregunta
¿Qué herramientas hay disponibles para el análisis estático del código C#?Conozco FxCop y StyleCop.¿Hay otros?Me he encontrado con NStatic antes, pero ha estado en desarrollo durante lo que parece una eternidad; se ve bastante elegante por lo poco que he visto de él, por lo que sería bueno si alguna vez viera la luz del día.
En la misma línea (este es principalmente mi interés por el análisis estático), las herramientas para probar código para problemas de subprocesos múltiples (puntos muertos, condiciones de carrera, etc.) también parecen un poco escasas.Typemock Racer acaba de aparecer, así que lo estaré viendo.¿Algo más allá de esto?
Se agradecen las opiniones de la vida real sobre las herramientas que ha utilizado.
Solución
Herramientas de detección de violaciones de código:
Fxcop, excelente herramienta de Microsoft.Verifique el cumplimiento de las pautas de .net framework.
Editar octubre de 2010: Ya no está disponible como descarga independiente.Ahora está incluido en el SDK de Windows y después de la instalación se puede encontrar en Archivos de programa\Microsoft SDKs\Windows\ [v7.1] \Bin\FXCop\FxCopSetup.exe
Editar febrero de 2018:Esta funcionalidad ahora se ha integrado en Visual Studio 2012 y versiones posteriores como Análisis de código
- La hora del reloj, basado en el análisis del código fuente (a C# 2.0)
- Mono.Gendarme, similar a Fxcop pero con una licencia de código abierto (basada en mono.cecil)
- ahumado, similar a Fxcop y Gendarme, basado en mono.cecil.Ya no está en desarrollo, el desarrollador principal ahora trabaja con el equipo de Gendarme.
- Coverity Prevent™ para C#, producto comercial
- PRQA QA·C#, producto comercial
- Estudio PVS, producto comercial
- CAT.NET , complemento de Visual Studio que ayuda a identificar fallas de seguridad
- CodeIt.Derecho
- Especificaciones#
- pex
Herramientas métricas de calidad:
- NDepende, gran herramienta visual.Útil para métricas de código, reglas, diferencias, estudios de acoplamiento y dependencia.
- Nitriq, gratis, puede escribir fácilmente sus propias métricas/restricciones, buenas visualizaciones. Editar febrero de 2018: Los enlaces de descarga ya no funcionan.
- RSM al cuadrado, basado en el análisis del código fuente
- Métricas de C#, usando un análisis completo de C#
- Monitor de fuente, una herramienta antigua que ocasionalmente se actualiza
- Métricas de código, a Reflector complemento
- vil, herramienta antigua que no es compatible con .NET 2.0. Editar enero de 2018: Enlace ahora muerto
Comprobación de herramientas de estilo:
- EstiloCop, herramienta de Microsoft (ejecutada desde Visual Studio o integrada en un proyecto de MSBuild).También disponible como una extensión para Visual Studio 2015 y C#6.0
- Agente Smith, complemento de validación de estilo de código para ReSharper
Detección de duplicaciones:
- Simio, basado en el código fuente.Funciona con muchos idiomas.
- ClonDR, detecta clones parametrizados solo en los límites del idioma (también maneja muchos lenguajes distintos de C#)
- detective clon un complemento de Visual Studio.(Usa ConQAT internamente)
- Atomiq, basado en código fuente, muchos lenguajes, visualización genial en forma de "rueda"
Herramientas generales de refactorización
- ReSharper - Funciones de refactorización y análisis de código C# muy interesantes
Otros consejos
La herramienta NDepende es citado como Herramientas métricas de calidad pero es prácticamente también un Detección de violaciones de código herramienta. Descargo de responsabilidad:Soy uno de los desarrolladores de la herramienta.
Con NDepend, se puede escribir Regla de código sobre consultas LINQ (lo que llamamos CQLinq).Más que 200 reglas de código CQLinq se proponen por defecto.La fortaleza de CQLinq es que es sencillo escribir una regla de código, y obten inmediatamente resultados.Se proponen funciones para explorar elementos de código coincidentes.Por ejemplo:
Además de eso, NDepend viene con muchos otros análisis estático como características.Éstas incluyen:
- Estimación inteligente de la deuda técnica
- Gráfico de dependencia
- Matriz de dependencia
- Capacidades de diferenciación de código
- NDepend.API que le permite escribir su propia herramienta de análisis estático.Con NDepend.APi incluso desarrollamos una herramienta para detectar código duplicado (detalles en esta publicación de blog: Un algoritmo original para encontrar códigos .NET duplicados).
- Gendarme es un analizador estático basado en reglas de código abierto (similar a FXCop, pero encuentra muchos problemas diferentes).
- detective clon es un buen complemento para Visual Studio que encuentra código duplicado.
- También hablando de Mono, encuentro que el acto de compilar con el compilador Mono (si su código es lo suficientemente independiente de la plataforma para hacerlo, un objetivo por el que quizás quiera esforzarse de todos modos) encuentra toneladas de variables sin referencia y otras advertencias que Visual Studio pasa por alto por completo. (incluso con el nivel de advertencia establecido en 4).
Haz visto CAT.NET?
De la propaganda -
CAT.NET es una herramienta de análisis de código binario que ayuda a identificar variantes comunes de ciertas vulnerabilidades prevalecientes que pueden dar lugar a vectores de ataque comunes, como secuencias de comandos de sitios cruzados (XSS), inyección SQL e inyección XPath.
Utilicé una versión beta temprana y pareció mostrar algunas cosas que vale la pena mirar.
Aparte de la excelente lista de madgnome, agregaría un detector de código duplicado que se basa en la línea de comando (pero es gratuito):
Klocwork tiene una herramienta de análisis estático para C#: http://www.klocwork.com
encuentro el Métricas de código y Matriz de estructura de dependencia complementos para Reflector muy útiles.
Optimyth Software acaba de lanzar un servicio de análisis estático en la nube www.checkinginthecloud.com.Simplemente cargue su código de forma segura, ejecute el análisis y obtenga los resultados.Sin complicaciones.
Admite varios idiomas, incluido C#. Puede encontrar más información en www.optimyth.com
Suite Axivion Bauhaus es una herramienta de análisis estático que funciona con C# (así como con C, C++ y Java).
Proporciona las siguientes capacidades:
- Visualización de la arquitectura de software (incluidas las dependencias)
- Aplicación de reglas arquitectónicas, p.capas, subsistemas, reglas de llamada
- Detección de clones: resaltando copiar y pegar (y código modificado)
- Detección de código muerto
- Detección de ciclo
- Métricas de software
- Comprobaciones de estilo de código
Estas funciones se pueden ejecutar de forma única o como parte de un proceso de integración continua.Los problemas se pueden resaltar por proyecto o por desarrollador cuando el sistema está integrado con un sistema de control de código fuente.