2009-01-30 8 views
9

Ich bin nur auf der Suche nach etwas Inspiration. Gerade im Bereich Performance und Sicherheit sind Namenskonventionen wichtig, aber nicht so "cool";)Hat jemand irgendwelche coolen Regeln für FxCop/StyleCop erstellt?

Auch wenn Ihre Regel nur für Ihre Domain/Ihr Projekt gilt, aber zeigt, wie mächtig eine Regel sein kann, lassen Sie es mich wissen .

Ich arbeite mit C#, aber ich interessiere mich für Regeln für jede Sprache.

Antwort

7

Meiner Erfahrung nach geben die Entwickler, die mit dem Erstellen von benutzerdefinierten Regelsätzen für FxCop begonnen haben, normalerweise auf, nachdem sie viele Haare gezogen haben. Es scheint eine großartige Idee zu sein, aber der Schmerz ist einfach nicht die Mühe wert.

3

Eine Alternative zum Schreiben von benutzerdefinierten FxCop-Regeln wäre die Verwendung des kommerziellen Tools NDepend. Mit diesem Tool kann man Code-Regel über LINQ Abfragen schreiben(namely CQLinq). Disclaimer: Ich bin einer der Entwickler des Werkzeugs

Mehr als 200 code rules sind standardmäßig vorgeschlagen, dazu gehören Namenskonventionen, Design, Architektur, Codequalität, Code Evolution, totem Code, .NET Fx Nutzung ...

CQLinq widmet sich Coderegeln zu schreiben, die sein kann verified live in Visual Studio, oder das kann verified during build process and reported in an HTML/javascript report sein.

Die Stärke CQLinq über FxCop API oder andere Werkzeuge ist, dass es einfach ist, eine Coderegel, zu schreiben und sofort Ergebnisse. Einrichtungen werden vorgeschlagen, um übereinstimmende Codeelemente zu durchsuchen. Konkret sieht das so aus:

CQLinq code rule

+0

Das sieht wirklich sehr kraftvoll aus. Sie müssen nicht von Ihrem Benutzernamen sagen, dass Sie eine "Vorliebe" für dieses Tool haben, aber es ist sehr relevant und sicherlich gültig, plus die Antwort ist gut geschrieben, also +1. –

1

Ich habe eine schöne funktionierende Basis mit 2 Regeln bekommt bisher bei breusable.codeplex.com unter dem FxCop Verzeichnis

ConfigKeyExistsInConfig (stellen Sie sicher, dass alle Verweise auf Konfigurationsmanager mit einem magischen String-Schlüssel existiert tatsächlich in der Konfigurationsdatei.

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; 
    } 
    } 
} 

Auch http://msdn.microsoft.com/en-us/magazine/cc163930.aspx