visual studio microsoft code c# code-analysis static-analysis

studio - ¿Qué herramientas de análisis estático están disponibles para C#?



microsoft code analysis 2017 (9)

¿Has visto CAT.NET ?

Desde 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 y XPath Injection.

Usé una versión beta inicial y parece que apareció algunas cosas que vale la pena mirar.

¿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 por lo que parece una eternidad: se ve bastante astuto por lo poco que he visto de él, así que sería bueno si alguna vez viera la luz del día.

En esta misma línea (este es mi principal interés para el análisis estático), las herramientas para probar códigos para problemas de subprocesamiento múltiple (interbloqueos, condiciones de carrera, etc.) también parecen un poco escasas. Typemock Racer acaba de aparecer, así que voy a mirar eso. ¿Algo más allá de esto?

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





La herramienta NDepend se cita como Quality Metric Tools, pero también es una herramienta de detección de violaciones de código . Descargo de responsabilidad: soy uno de los desarrolladores de la herramienta

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

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


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 molestias.

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


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 (incluidas las dependencias)
  • Aplicación de reglas arquitectónicas, por ejemplo, capas, subsistemas, reglas de llamada
  • Detección de clonación: resaltando copia y pegado (y código modificado)
  • Detección de código muerto
  • Detección de ciclo
  • Métricas de software
  • Revisiones de estilo de código

Estas funciones se pueden ejecutar de manera puntual o como parte de un proceso de integración continua. Los problemas pueden destacarse por proyecto o por desarrollador cuando el sistema está integrado con un sistema de control de código fuente.


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

  • Fxcop , excelente herramienta de Microsoft. Verifique el cumplimiento con 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 más tarde 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 ahora con el equipo de Gendarme.
  • Coverity Prevent ™ para C # , producto comercial
  • PRQA QA · C # , producto comercial
  • PVS-Studio , producto comercial
  • CAT.NET , complemento de estudio visual que ayuda a la identificación de fallas de seguridad
  • CodeIt.Right
  • Spec#
  • Pex

Herramientas de métrica de calidad:

  • NDepend , gran herramienta visual. Útil para métricas de código, reglas, diff, acoplamiento y estudios de dependencia.
  • Nitriq , gratis, puede escribir fácilmente sus propias métricas / restricciones, agradables visualizaciones. Editar febrero de 2018: enlaces de descarga ahora muertos.
  • RSM Squared , basado en el análisis de código fuente
  • C # Metrics , usando 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

Comprobando herramientas de estilo:

  • StyleCop , herramienta de Microsoft (se ejecuta desde dentro de Visual Studio o se integra en un proyecto de 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 límites de idioma (también maneja muchos idiomas además de C #)
  • Clone Detective un complemento de Visual Studio. (Utiliza ConQAT internamente)
  • Atomiq , basado en el código fuente, muchos idiomas, visualización genial de "rueda"

Herramientas generales de refabricación

  • ReSharper : funciones principales de análisis y refactorización de código C #

  • Mono.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.
  • Hablando también de Mono, encuentro que el acto de compilar con el compilador Mono (si tu código es lo suficientemente independiente de la plataforma para hacerlo, un objetivo que quizás quieras esforzarte) encuentra toneladas de variables sin referencia y otras Advertencias que Visual Studio pierde por completo (incluso con el nivel de advertencia establecido en 4).