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;
}
super, dzięki! –