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


¿Qué herramientas hay disponibles para el análisis estático contra 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 bastante resbaladizo 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 (esto es principalmente mi interés para el análisis estático), herramientas para probar el código para problemas de subprocesos múltiples (deadlocks, race condiciones, etc.) también parecen un poco escasos. Typemock Racer acaba de aparecer así que voy a estar mirando eso. ¿Algo más allá de esto?

Las opiniones de la vida real sobre las herramientas que ha utilizado son apreciadas.

Author: Kris Erickson, 2008-09-02

9 answers

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

  • Fxcop, excelente herramienta de Microsoft. Compruebe el cumplimiento de las directrices de. net framework.

    Editar Octubre de 2010: Ya no está disponible como descarga independiente. Ahora se incluye en el Windows SDK 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 posteriores 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 opensource (basada en Mono.Cecil )
  • Smokey , similar a Fxcop y Gendarme, basado en Mono.Cecil . Ya no está en desarrollo, el desarrollador principal trabaja con Gendarme team ahora.
  • Coverity Prevent™ para C#, comercial producto
  • PRQA QA * C # , producto comercial
  • PVS-Studio , producto comercial
  • CAT.NET , visual studio addin que ayuda a la identificación de fallas de seguridad
  • CodeIt.Derecha
  • Spec#
  • Pex

Herramientas métricas de Calidad:

  • NDepend , gran herramienta visual. Útil para métricas de código, reglas, diferencias, acoplamiento y dependencias estudio.
  • Nitriq , gratis, puede escribir fácilmente sus propias métricas/restricciones, bonitas visualizaciones. Editar febrero de 2018: enlaces de descarga ahora muertos.
  • RSM Squared , basado en el análisis de código fuente
  • Métricas de C# , usando un análisis completo de C #
  • SourceMonitor , una herramienta antigua que ocasionalmente recibe actualizaciones
  • Métricas de código , a Reflector complemento
  • Vil , vieja herramienta 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 dentro 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

Duplicación Detecció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 plugin de Visual Studio. (Utiliza ConQAT internamente)
  • Atomiq , basado en código fuente, muchos idiomas, visualización genial de "rueda"

Refactorización General herramientas

  • ReSharper - Características de refactorización y análisis de código C# Majorly cool
 318
Author: Julien Hoarau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-21 17:39:21

La herramienta NDepend se cita como Quality Metric Tools pero es más o menos una herramienta Code violation detection. 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). Por defecto se proponen más de 200 reglas de código CQLinq. La fuerza de CQLinq es que es sencillo escribir una regla de código, y obtener inmediatamente resultado. Se proponen facilidades para examinar los elementos de código coincidentes. Por ejemplo:

Regla de código CQLinq

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

 8
Author: Patrick from NDepend team,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-12 13:28:09
  • 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 plug-in para Visual Studio que encuentra código duplicado.
  • También hablando de Mono, me parece que 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 podría esforzarse de todos modos) encuentra toneladas de variables no referenciadas y otras Advertencias que Visuales Studio falla completamente (incluso con el nivel de advertencia establecido en 4).
 2
Author: Kris Erickson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-02 17:11:07

Has visto CAT.NET?

Del blurb -

CAT.NET es una herramienta de análisis de código binario que ayuda a identificar variantes comunes de ciertas vulnerabilidades prevalecientes que puede dar lugar a un ataque común vectores como Scripting entre sitios (XSS), Inyección SQL y XPath Inyección.

Usé una beta temprana y parecía que había algunas cosas que valían la pena mirar.

 2
Author: markdevilliers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-24 17:37:29

Aparte de la excelente lista de madgnome, añadiría un detector de código duplicado que se basa fuera de la línea de comandos (pero es gratis):

Http://sourceforge.net/projects/duplo /

 1
Author: torial,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-19 02:07:51

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

 0
Author: Alen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-01 02:13:52

Encuentro muy útiles las métricas de código y La Matriz de Estructura de Dependencias complementos para Reflector.

 0
Author: Hamish Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-13 05:47:13

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.

Es compatible con varios idiomas, incluido C# más información se puede encontrar en wwww.optimyth.com

 0
Author: Javier Salado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-07 13:22:41

Axivion Bauhaus Suite 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 Arquitectura de software (incluyendo dependencias)
  • Aplicación de reglas arquitectónicas, por ejemplo, capas, subsistemas, reglas de llamada
  • Detección de clones-resaltado de copia y pegado (y código modificado)
  • Detección de Código muerto
  • Detección de ciclos
  • Software Métricas
  • Verificación 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 está integrado con un sistema de control de código fuente.

 0
Author: Mark Dalgarno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-06 13:56:10