2009-01-30 15 views
9

Estoy buscando inspiración. Especialmente en el área de rendimiento y seguridad, las convenciones de nomenclatura son importantes, pero no tan 'cool';)¿Alguien ha creado reglas geniales para FxCop/StyleCop?

Incluso si la regla solo se aplica a su dominio/proyecto, pero demuestra cuán poderosa puede ser una regla, háganos saber .

Trabajo con C#, pero estoy interesado en reglas para cualquier idioma.

Respuesta

7

En mi experiencia, los desarrolladores que han comenzado a crear conjuntos de reglas personalizadas para FxCop, generalmente se dan por vencidos después de sacar mucho pelo. Parece una gran idea, pero el dolor no vale la pena el esfuerzo.

3

Una alternativa al enredo de escribir las reglas personalizadas de FxCop sería usar la herramienta comercial NDepender. Con esta herramienta uno puede escribir Regla de código sobre consultas LINQ(namely CQLinq). responsabilidad: yo soy uno de los desarrolladores de la herramienta

Más de 200 code rules son propuestos por defecto, estos incluyen convenciones de nomenclatura, diseño, arquitectura, la calidad del código, código de evolución, código muerto, el uso .NET Fx ...

CQLinq se dedicó a escribir las reglas de código que pueden ser verified live in Visual Studio, o que puede ser verified during build process and reported in an HTML/javascript report.

La fuerza de CQLinq sobre FxCop API u otras herramientas, es que es sencillo escribir una regla de código de, y obtener de inmediato resultados. Se proponen instalaciones para buscar elementos de código coincidentes. Concretamente, esto se parece a lo siguiente:

CQLinq code rule

+0

Esto se ve realmente poderoso. No es necesario decir desde su nombre de usuario que tiene una "preferencia" para esta herramienta, pero es muy relevante y ciertamente válido, además la respuesta está bien escrita, por lo que +1. –

1

Tengo una buena base de funcionamiento con 2 reglas en lo que va a breusable.codeplex.com bajo el directorio FxCop

ConfigKeyExistsInConfig (asegúrese de que todas las referencias a ConfigurationManager con una magia clave de cadena realmente existe en el archivo de configuración.

NoUnderscoresInProperties

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.FxCop.Sdk; 

namespace RulesByImaginaryDevelopment 
{ 
    public class NoUnderscoresInProperties : BaseRule 
    { 
    public NoUnderscoresInProperties() : base("NoUnderscoresInProperties") { } 

    public override ProblemCollection Check(Member member) 
    { 
     var prop = member as PropertyNode; 
     if(prop==null) 
      return Problems; 
     if(prop.Name.Name.Contains("_")) 
     { 
      Problems.Add(new Problem(new Resolution("Remove any '_' from name "+prop.Name.Name))); 
     } 
     return Problems; 
    } 
    } 
} 

También http://msdn.microsoft.com/en-us/magazine/cc163930.aspx

Cuestiones relacionadas