¿Qué herramientas de análisis estático están disponibles para C #? [cerrado]

174

¿Qué herramientas hay disponibles para el análisis estático contra el código C #? Sé sobre FxCop y StyleCop. ¿Hay otros? Me he encontrado con NStatic antes, pero ha estado en desarrollo durante lo que parece una eternidad: se ve muy 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 esta misma línea (este es principalmente mi interés para 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 miraré. ¿Algo más allá de esto?

Se agradecen las opiniones de la vida real sobre las herramientas que ha utilizado.

Paul Mrozowski
fuente
@IraBaxter Comencé una discusión sobre esta pregunta en Meta , y lo invito a expresar sus argumentos sobre por qué esta pregunta no debe eliminarse, si así lo desea.

Respuestas:

341

Herramientas de detección de violación de código:

  • Fxcop , excelente herramienta de Microsoft. Verifique el cumplimiento de las pautas de .NET Framework.

    Edición de 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

    Edición de febrero de 2018 : esta funcionalidad ahora se ha integrado en Visual Studio 2012 y posterior como análisis de código

  • Clocksharp , basado en el análisis de código fuente (a C # 2.0)

  • Mono.Gendarme , similar a Fxcop pero con una licencia de código abierto (basada en Mono.Cecil )

  • Smokey , similar a Fxcop y Gendarme, basado en Mono.Cecil . Ya no está en desarrollo, el desarrollador principal trabaja con el equipo de Gendarme ahora.

  • Coverity Prevent ™ para C # , producto comercial

  • PRQA QA · C # , producto comercial

  • PVS-Studio , producto comercial

  • CAT.NET , complemento de estudio visual que ayuda a identificar fallas de seguridad Editar noviembre de 2019: Link está muerto.

  • CodeIt.Right

  • Especificaciones#

  • Pex

  • SonarQube , FOSS y opciones comerciales para admitir la escritura de códigos más limpios y seguros.

Herramientas métricas de calidad:

  • NDepend , gran herramienta visual. Útil para métricas de código, reglas, diff, acoplamiento y estudios de dependencia.
  • Nitriq , gratuito, puede escribir fácilmente sus propias métricas / restricciones, visualizaciones agradables. Editar febrero de 2018: los enlaces de descarga ahora están muertos. Editar 17 de junio de 2019: enlaces no muertos.
  • RSM Squared , basado en el análisis de código fuente
  • Métricas de C # , utilizando un análisis completo de C #
  • SourceMonitor , una herramienta antigua que ocasionalmente recibe actualizaciones
  • Code Metrics , un complemento Reflector
  • Vil , herramienta antigua que no es compatible con .NET 2.0. Editar enero de 2018: Enlace ahora muerto

Comprobación de herramientas de estilo:

  • StyleCop , herramienta de Microsoft (ejecutada desde el interior de Visual Studio o integrada en un proyecto MSBuild). También disponible como 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 duplicación:

  • Simian , basado en el código fuente. Funciona con muchos idiomas.
  • CloneDR , detecta clones parametrizados solo en los límites del idioma (también maneja muchos idiomas distintos de C #)
  • Clone Detective, un complemento de Visual Studio. (Utiliza ConQAT internamente)
  • Atomiq , basado en el código fuente, muchos idiomas, buena visualización de "rueda"

Herramientas generales de refactorización

  • ReSharper : funciones de refactorización y análisis de código C # muy interesantes
Julien Hoarau
fuente
44
Consulte la página de MSDN sobre FxCop: msdn.microsoft.com/en-us/library/bb429476%28VS.80%29.aspx "FxCop es una aplicación que analiza los ensamblados de código administrado (código que se dirige al .NET Framework Common Language Runtime) e informa información sobre los ensamblajes, como posibles mejoras de diseño, localización, rendimiento y seguridad ".
Sarah Vessels
El enlace FxCop se ha eliminado del sitio de Microsoft. Aquí está la "descarga" de FxCop 10.0: microsoft.com/downloads/…
ulrichb
¿Es este Simian: harukizaemon.com/simian/index.html ? (Tienes un enlace roto). También parece ser solo .NET 1.1.
Theraot
@Theraot Gracias, cambié la url. Con respecto a la versión .NET, Simian puede ejecutarse en .NET 1.1 en Java 5, pero eso no significa que detecte la duplicación en otras versiones de .NET
Julien Hoarau
Nitriq ya no parece estar disponible. El enlace de descarga (ahora redirige a NimblePros, parte de Telerik) dice "Lo sentimos, ya no ofrecemos Nitriq"
Narayana
7

La herramienta NDepend se cita como herramientas métricas de calidad, pero también es una herramienta de detección de violación de código . Descargo de responsabilidad: soy uno de los desarrolladores de la herramienta

Con NDepend, se puede escribir una regla de código sobre consultas LINQ (lo que llamamos CQLinq) . Se proponen más de 200 reglas de código CQLinq de forma predeterminada. La fortaleza de CQLinq es que es sencillo escribir una regla de código y obtener resultados inmediatos . Se proponen instalaciones para examinar elementos de código coincidentes. Por ejemplo:

Regla de código CQLinq

Además de eso, NDepend viene con muchos otros análisis estáticos como características. Éstos incluyen:

Patrick del equipo NDepend
fuente
Tuve la oportunidad de probar NDepend en las últimas semanas: gran fanático, voy a obtener una licencia de desarrollador cuando pueda. :) ¡Gracias por tu trabajo!
Michael Armes
1
  • Gendarme es un analizador estático basado en reglas de código abierto (similar a FXCop, pero encuentra muchos problemas diferentes).
  • Clone Detective es un buen complemento para Visual Studio que encuentra código duplicado.
  • También hablando de Mono, encuentro el acto de compilar con el compilador Mono (si su código es lo suficientemente independiente de la plataforma para hacer eso, un objetivo por el que quizás quiera luchar de todos modos) encuentra toneladas de variables sin referencia y otras Advertencias que Visual Studio pierde por completo (incluso con el nivel de advertencia establecido en 4).
Kris Erickson
fuente
1

¿Has 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 Cross-Site Scripting (XSS), SQL Injection e XPath Injection.

Usé una versión beta temprana y parecía haber aparecido algunas cosas que valía la pena mirar.

Markdevilliers
fuente
-1

Klocwork tiene una herramienta de análisis estático para C #: http://www.klocwork.com

Alen
fuente
Nuestra compañía compró eso. En el rango de $ 30K para nosotros
Dan dot net
-1

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 problemas

Admite varios idiomas, incluido C #. Puede encontrar más información en wwww.optimyth.com

Javier Salado
fuente
-1

Axivion Bauhaus Suite es una herramienta de análisis estático que funciona con C # (además de C, C ++ y Java).

Proporciona las siguientes capacidades:

  • Visualización de arquitectura de software (incluyendo dependencias)
  • Aplicación de reglas arquitectónicas, por ejemplo, estratificación, subsistemas, reglas de llamada
  • Detección de clones: resaltar copia y pegar (y código modificado)
  • Detección de código muerto
  • Detección de ciclo
  • Métrica de software
  • Verificaciones de estilo de código

Estas características se pueden ejecutar de forma puntual o como parte de un proceso de integración continua. Los problemas se pueden resaltar por proyecto o por desarrollador cuando el sistema se integra con un sistema de control de código fuente.

Mark Dalgarno
fuente