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.

¿Fue útil?

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:

CQLinq code rule

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

  • 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):

http://sourceforge.net/projects/duplo/

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top