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.
Aparte de la excelente lista de madgnome, agregaría un detector de código duplicado que se basa en la línea de comandos (pero es gratis):
Encuentro los complementos de Métricas de código y matriz de estructura de dependencias para Reflector muy útiles.
Klocwork tiene una herramienta de análisis estático para C #: http://www.klocwork.com
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:
- Estimación inteligente de la deuda técnica
- Gráfico de dependencia
- Matriz de dependencia
- Capacidades de Code Diff
- NDepend.API que permite escribir tu propia herramienta de análisis estático. Con NDepend.APi incluso desarrollamos una herramienta para detectar el código duplicado (detalles en esta publicación de blog: Un algoritmo original para encontrar .NET Code Duplicate ).
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).