2011-11-11 11 views

Odpowiedz

4

Właściwie jest to dość proste reguły, gdy wiesz, że „największy” target analiza FxCop jest moduł, a nie zespół. W większości przypadków na moduł jest jeden moduł, więc nie stanowi to problemu. Jeśli jednak otrzymujesz powielone powiadomienia o problemach na zespół, ponieważ masz wiele modułów na zespół, możesz dodać kontrolę, aby zapobiec generowaniu więcej niż jednego problemu na zestaw.

W każdym razie, oto podstawowe wdrożenie zasady:

private TypeNode AssemblyCompanyAttributeType { get; set; } 

public override void BeforeAnalysis() 
{ 
    base.BeforeAnalysis(); 

    this.AssemblyCompanyAttributeType = FrameworkAssemblies.Mscorlib.GetType(
              Identifier.For("System.Reflection"), 
              Identifier.For("AssemblyCompanyAttribute")); 
} 

public override ProblemCollection Check(ModuleNode module) 
{ 
    AttributeNode assemblyCompanyAttribute = module.ContainingAssembly.GetAttribute(this.AssemblyCompanyAttributeType); 
    if (assemblyCompanyAttribute == null) 
    { 
     this.Problems.Add(new Problem(this.GetNamedResolution("NoCompanyAttribute"), module)); 
    } 
    else 
    { 
     string companyName = (string)((Literal)assemblyCompanyAttribute.GetPositionalArgument(0)).Value; 
     if (!string.Equals(companyName, "FooBar Inc.", StringComparison.Ordinal)) 
     { 
      this.Problems.Add(new Problem(this.GetNamedResolution("WrongCompanyName", companyName), module)); 
     } 
    } 

    return this.Problems; 
} 
+0

super, dzięki! –

Powiązane problemy