Stylecop vs FxCop


¿Stylecop ha reemplazado a FxCop? ¿Qué producto deberíamos usar con Visual Studio 2008?

Author: JL., 2009-12-11

5 answers

Stylecop es una herramienta de análisis de estilos que funciona a nivel de código fuente. Existe principalmente para proporcionar un estilo común único que los proyectos gestionados pueden utilizar para permanecer consistentes dentro del mundo más amplio del software gestionado. Toma decisiones con respecto al estilo principalmente para evitar guerras santas (después de todo, el estilo es casi siempre una cosa inherentemente subjetiva). Creo que nunca he conocido a alguien a quien le gustaran todas las reglas de StyleCop, pero eso es ok . Esto significa que StyleCop es un buen compromiso entre el vasto conjunto de pautas de estilo que existen. (Si las reglas de stylecop fueran altamente personalizables, más allá de simplemente habilitarlas/deshabilitarlas, frustraría todo el propósito de la herramienta.)

FxCop, por otro lado, es una herramienta de análisis estático que funciona a nivel del ensamblaje administrado. Se le pueden dar direcciones a través de atributos porque puede ver atributos en elementos de código, p.ej.. Detecta problemas que se pueden ver en el nivel " binario "(por así decirlo) en contraposición al nivel sintáctico.

Para responder a su pregunta, StyleCop no reemplaza a FxCop, y FxCop no reemplaza a stylecop. Son dos herramientas diferentes con dos propósitos diferentes que pueden proporcionar un beneficio real para su código.

(También conocido como, corro con ambos. :) )


Un par de ejemplos de las cosas que uno podría detectar frente a las cosas que el otro podría detectar:

Las violaciones de StyleCop pueden incluir advertencias relacionadas con: Espacios en blanco, Formato, Método público documentación a través de xml-comentarios, orden de definición del método dentro de una clase.

Las violaciones de FxCop podrían incluir advertencias relacionadas con: Globalización, acoplamiento estrecho, complejidad ciclomática, dereferencias nulas potenciales.

 161
Author: Greg D,
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-12-10 22:40:55

Stylecop funciona con el código fuente de C#. fxcop mira su código compilado desde cualquier .net lenguaje.

 16
Author: No Refunds No Returns,
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-12-10 22:28:31

Una alternativa o un buen complemento a FxCop/StyleCop sería utilizar la herramienta comercial NDepend. Con esta herramienta se puede escribir una Regla de Código sobre Consultas LINQ (a saber, CQLinq) . Descargo de responsabilidad: Soy uno de los desarrolladores de la herramienta

Más de 200 reglas de código se proponen por defecto, estas incluyen diseño, arquitectura, calidad del código, evolución del código, convenciones de nomenclatura , código muerto, . NET Fx usage ...

CQLinq está dedicado a escribir reglas de código que pueden ser verificadas en vivo en Visual Studio, o que pueden ser verificadas durante el proceso de compilación e informadas en un informe HTML/javascript.

La fuerza de CQLinq sobre FxCop o StyleCop, es que es sencillo escribir una regla de código, y obtener inmediatamente resultados. Se proponen facilidades para examinar los elementos de código coincidentes. Concretamente esto se ve así:

Regla de código CQLinq

 11
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
2012-06-22 10:37:14

FxCop hace análisis de código estático de sus ensamblados de código administrados. Piense en ello como encontrar problemas que causarán problemas en tiempo de ejecución o que afectarán la forma en que el desarrollador cree que se ejecutará el código (código inalcanzable).

StyleCop analiza la estructura del código desde el punto de vista del texto. Piense en esto como problemas que afectarán su experiencia de desarrollo y diseño (Formato, convenciones de nomenclatura, documentación)

Ambos son herramientas muy valiosas y debes usar ambos, pero se centran en diferentes problemas.

 6
Author: AllenSanborn,
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-12-10 22:34:20

StyleCop realiza análisis de código fuente no es muy configurable. Realmente no hace lo mismo que FxCop, que analiza el código compilado.

Los artículos de wikipedia sobre estos proporcionan buenos resúmenes de las diferencias:

Http://en.wikipedia.org/wiki/StyleCop

Http://en.wikipedia.org/wiki/FxCop

 5
Author: Andrew Rollings,
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-12-10 22:30:29